Pb avec ActionMailer

Bonsoir à tous,
pour le fun et pour voir ce que donne le TDD/BDD, j’écris un petit site
web pour gérer ses bouquins.
J’ai un notifier Action Mailer pour pouvoir activer un utilisateur et
aussi remettre le password à zéro.

Cela me donne cela :
class Notifier < ActionMailer::Base
default_url_options[:host] = “127.0.0.1”

def password_reset_instructions(user)
subject “Password Reset Instructions”
from “MyLibrary Notifier [email protected]
recipients user.email
sent_on Time.now
body :edit_password_reset_url =>
edit_password_reset_url(user.perishable_token)
end

def activation_instructions(user)
subject “Activation Instructions”
from “MyLibrary Notifier [email protected]
recipients user.email
sent_on Time.now
body :account_activation_url =>
register_url(user.perishable_token)
end

def activation_confirmation(user)
subject “Activation Complete”
from “MyLibrary Notifier [email protected]
recipients user.email
sent_on Time.now
body :root_url => root_url
end

end

j’ai bien dans app/view/notifier les trois fichiers erb

Sous Rspec, je fais entre autres les tests suivants (pas sur qu’ils
soient intelligents mais bon c’est une autre histoire) :
it “should send a mail when asking for password reset instructions” do
user = Factory :user
init_mail_size = ActionMailer::Base.deliveries.size
Notifier.password_reset_instructions(user)
ActionMailer::Base.deliveries.size.should == init_mail_size + 1
end

it “should send a mail for activation instructions” do
user = Factory :user
init_mail_size = ActionMailer::Base.deliveries.size
Notifier.deliver_activation_instructions(user)
ActionMailer::Base.deliveries.size.should == init_mail_size + 1
end

Problème : le premier plante au test et pas le second !
Vous auriez une super idée ?

Merci d’avance,

Sylvain

it “should send a mail when asking for password reset instructions” do
user = Factory :user
init_mail_size = ActionMailer::Base.deliveries.size
Notifier.password_reset_instructions(user)
ActionMailer::Base.deliveries.size.should == init_mail_size + 1
end

it “should send a mail for activation instructions” do
user = Factory :user
init_mail_size = ActionMailer::Base.deliveries.size
Notifier.deliver_activation_instructions(user)
ActionMailer::Base.deliveries.size.should == init_mail_size + 1
end

Pour ceux qui sont aussi boulet que moi voici la solution : On demande
pas la méthod “foo” à un ActionMailer mais la méthode “deliver_foo”
lorsqu’on a créé la classe “foo”

tout bête mais ça m’a pris du temps pour comprendre :wink: