vendredi 8 janvier 2016

Wrong test email activation, gem sorcery

I have such problem: There is a method in user_mailer.rb

def activation_needed_email(user)
  @user = user
  @url  = activate_user_url(user.activation_token)
  mail(:to => user.email,
     :subject => "Welcome to my site")
end

And I have a user_mailer_test.rb which looks like this:

def test_activation_needed_email
  user = users(:test_user)
  mail = UserMailer.activation_needed_email(user)
  assert_match "Welcome", mail.body.encoded
end

The test user is described in fixtures users.yml file as:

test_user:
  email: 'testuser@example.com'
  activation_state: 'inactive'
  ...

In Development environment everything works perfect, but when I run rake test I see such error:

ActionController::UrlGenerationError: ActionController::UrlGenerationError: No route matches {:action=>"activate", :controller=>"users", :id=>nil} missing required keys: [:id]
        app/mailers/user_mailer.rb:11:in `activation_needed_email'
        test/mailers/user_mailer_test.rb:7:in `test_activation_needed_email'

why :id is missing? the test user from fixtures has it. there is no such error in development environment.

Aucun commentaire:

Enregistrer un commentaire