Rails 3 Mailer spec with arguments?

This came out of the mailer generator w/ Rspec-rails installed :

describe Notifier do
it “should deliver activation instructions message” do
@expected.subject = “Activation instructions”
@expected.to = “[email protected]
@expected.from = “[email protected]
@expected.body = read_fixture(“activation_instructions”)
end

Could someone tell me how to modify this spec so that an argument can be
sent into Notifier#activation_instructions ?

class Notfier < ActionMailer::Base
def activation_instructions(user)
# … mail :to => …
end
end

Thanks,

On Fri, Jun 11, 2010 at 2:22 PM, Peter F.
[email protected] wrote:

Could someone tell me how to modify this spec so that an argument can be
sent into Notifier#activation_instructions ?

class Notfier < ActionMailer::Base
def activation_instructions(user)
# … mail :to => …
end
end

user = stub_model(User)
@expected.activation_instructions(user)

I’m adding a mailer() method to wrap @expected for the next release,
but it’s the same object.

On Sat, Jun 12, 2010 at 7:01 AM, David C. [email protected]
wrote:

end

user = stub_model(User)
@expected.activation_instructions(user)

I’m adding a mailer() method to wrap @expected for the next release,
but it’s the same object.

Disregard :slight_smile:

I’ll add a mailer method that access the mailer, and a message method
that wraps @expected.

On Sat, Jun 12, 2010 at 7:04 AM, David C. [email protected]
wrote:

@expected.body    = read_fixture("activation_instructions")

end
that wraps @expected.

For now you can say:

Notifier.send(:new).activation_instructions(user)

On Sat, Jun 12, 2010 at 7:18 AM, David C. [email protected]
wrote:

@expected.from    = "[email protected]"
end

I’ll add a mailer method that access the mailer, and a message method
that wraps @expected.

For now you can say:

Notifier.send(:new).activation_instructions(user)

OK - I got a patch into rails so rspec mailer specs can mix in
behavior from an ActionMailer::TestCase::Behavior module. I updated
mailer specs to use this and updated the generator to generate
something more useful.

Peter - is activation_instructions an action? If so you just need to
say “Notifier.activation_instructions(user)” directly in the example.

If it’s a helper method, I’d recommend moving it to a helper module
and spec’ing it there.

WDYT?