Dave
Thanks for looking at this. I really appreciate it.
Here is the method being called:
144 # Sign up a new user with a default role of USER and with a state
of pending.
145 # The user must activate their account via e-mail before they can
login
146 def self.create_from_signup(params = {} )
147 user = new(params)
148 if user.valid?
149 user.register!
150 UserNotifier.deliver_signup_notification(user)
151 end
152 return user
153 end
Line 150 is calling UserNotifier
class UserNotifier < ActionMailer::Base
def signup_notification(user)
setup_email(user)
@subject += "#{user.login}, Please activate your new account"
@body[:url] = "http://#{SITE_HOST}/activate/#
{user.activation_code}"
end
def password_reset_notification(user, newpassword)
setup_email(user)
@subject += "#{user.login}, Account changes"
@body[:password] = newpassword
end
protected
def setup_email(user)
@recipients = "#{user.email}"
@from = SITE
@subject = "[CONFIRMATION] "
@sent_on = Time.now
@body[:user] = user
end
end
Everything works well in the standalone model spec. It's when I
combine it with controller spec's that the problem occurs.
Brad
On Dec 10, 4:55 am, David Chelimsky <[email protected]> wrote:
> On Wed, Dec 9, 2009 at 7:48 PM, Brad <[email protected]> wrote:
> > No one was able to help me with the last post so I thought I would try
> > again with more details. I am having problems with specs that invoke
> > the mailer. My User model has a method that invokes a mailer as part
> > of the create_from_signup method.
>
> > First an example of the test that passes in my spec/models/user_spec
> > when run in isolation (i.e. spec spec/models/user_spec.rb).
>
> > before do
> > UserNotifier.deliveries = []
> > end
>
> > it "should signup a valid user and send an activation e-mail" do
> > u = User.create_from_signup(params)
> > u.state.should == 'pending'
> > UserNotifier.should have(1).deliveries
> > mail = UserNotifier.deliveries.first
> > mail.to.should eql( [u.email] )
> > mail.subject.should eql( "#{u.login}, Please activate your new
> > account" )
> > end
>
> > The spec passes with no problems [ all green :) ]
>
> > When I run this same spec within my entire suite (spec spec), it fails
> > with the following backtrace
>
> > ArgumentError in 'User Signup - should signup a valid user and send an
> > activation e-mail"
> > wrong number of arguments (0 for 1)
> > ruby/lib/ruby/gems/1.8/gems/actionmailer-2.3.5/lib/action_mailer/
> > base.rb:551:in 'content_type'
> > ruby/lib/ruby/gems/1.8/gems/actionmailer-2.3.5/lib/action_mailer/
> > base.rb:551:in 'render_message'
> > ruby/lib/ruby/gems/1.8/gems/actionmailer-2.3.5/lib/action_mailer/
> > base.rb:493:in 'create!'
> > ruby/lib/ruby/gems/1.8/gems/actionmailer-2.3.5/lib/action_mailer/
> > base.rb:452:in 'initialize'
> > ruby/lib/ruby/gems/1.8/gems/actionmailer-2.3.5/lib/action_mailer/
> > base.rb:395:in 'new'
> > ruby/lib/ruby/gems/1.8/gems/actionmailer-2.3.5/lib/action_mailer/
> > base.rb:395:in 'method_missing'
> > rails/app/models/user.rb:150:in 'create_from_signup'
>
> What's on line 150 in user.rb? Please post the entire method
> surrounding that line.
>
> > I get this same error in my user controller tests, whether I run it
> > standalone or within the suite.
>
> > Does anyone have any idea what could be causing this?
>
> > Thanks in advance
>
> > Brad
>
> _______________________________________________
> rspec-users mailing list
> [email protected]http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users