Hello Rails Talk,
How do I get named routes in my functional tests?  I am testing a
mailer and want to check for a URL in the email:
:: user_mailer_test.rb ::
require File.dirname(__FILE__) + ''/../test_helper''
require ''user_mailer''
class UserMailerTest < Test::Unit::TestCase
#  FIXTURES_PATH = File.dirname(__FILE__) + ''/../fixtures''
  CHARSET = "utf-8"
  include ActionMailer::Quoting
  def setup
    ActionMailer::Base.delivery_method = :test
    ActionMailer::Base.perform_deliveries = true
    ActionMailer::Base.deliveries = []
    @expected = TMail::Mail.new
    @expected.set_content_type "text", "plain", {
"charset" =>
CHARSET }
  end
  def test_confirmation_sent
    user = create_user
    email = UserMailer.create_signup_notification(user)
    assert_match(''http://#{HOST}/'' +
@controller.activate_path(user.activation_code), email.body)
  end
end
Regards,
--Dean
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Forgot to say that this test fails like this:
  1) Error:
test_confirmation_sent(BrewerMailerTest):
NoMethodError: You have a nil object when you didn''t expect it!
The error occurred while evaluating nil.activate_path
    ./test/functional/brewer_mailer_test.rb:21:in
`test_confirmation_sent''
Regards,
--Dean
On Feb 3, 9:57 pm, Dean
<dean.brund...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> Hello Rails Talk,
>
> How do I get named routes in my functional tests?  I am testing a
> mailer and want to check for a URL in the email:
>
> :: user_mailer_test.rb ::
> require File.dirname(__FILE__) + ''/../test_helper''
> require ''user_mailer''
>
> class UserMailerTest < Test::Unit::TestCase
> #  FIXTURES_PATH = File.dirname(__FILE__) +
''/../fixtures''
>   CHARSET = "utf-8"
>
>   include ActionMailer::Quoting
>
>   def setup
>     ActionMailer::Base.delivery_method = :test
>     ActionMailer::Base.perform_deliveries = true
>     ActionMailer::Base.deliveries = []
>     @expected = TMail::Mail.new
>     @expected.set_content_type "text", "plain", {
"charset" =>
> CHARSET }
>   end
>
>   def test_confirmation_sent
>     user = create_user
>     email = UserMailer.create_signup_notification(user)
>     assert_match(''http://#{HOST}/'' +
> @controller.activate_path(user.activation_code), email.body)
>   end
> end
>
> Regards,
> --Dean
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
I have the following:
:: generic_controller.rb ::
class GenericController < ApplicationController
  def activate
  end
  def index
  end
end
:: routes.rb ::
ActionController::Routing::Routes.draw do |map|
  map.activate ''/activate/:activation_code'', :controller =>
''generic'', :action => ''activate''
end
:: generic_controller_test.rb ::
require File.dirname(__FILE__) + ''/../test_helper''
class GenericControllerTest < ActionController::TestCase
  def test_activate_path
    get :index
    assert_not_nil activate_path("something")
  end
end
0 remus test/functional % ruby generic_controller_test.rb
Loaded suite generic_controller_test
Started
.
Finished in 0.280308 seconds.
1 tests, 1 assertions, 0 failures, 0 errors
If I comment out the get :index call in my test file, I get this:
0 remus test/functional % ruby generic_controller_test.rb
Loaded suite generic_controller_test
Started
E
Finished in 0.282201 seconds.
  1) Error:
test_activate_path(GenericControllerTest):
NoMethodError: You have a nil object when you didn''t expect it!
The error occurred while evaluating nil.rewrite
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_controller/base.rb:616:in `url_for''
    (eval):17:in `activate_path''
/usr/lib64/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
test_process.rb:463:in `send!''
/usr/lib64/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
test_process.rb:463:in `method_missing''
    generic_controller_test.rb:7:in `test_activate_path''
/usr/lib64/ruby/gems/1.8/gems/activesupport-2.0.2-/lib/active_support/
testing/default.rb:7:in `run''
What is it about the get call that "turns on" the named route?
Regards,
--Dean
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
I have the following:
:: generic_controller.rb ::
class GenericController < ApplicationController
  def activate
  end
  def index
  end
end
:: routes.rb ::
ActionController::Routing::Routes.draw do |map|
  map.activate ''/activate/:activation_code'', :controller =>
''generic'', :action => ''activate''
end
:: generic_controller_test.rb ::
require File.dirname(__FILE__) + ''/../test_helper''
class GenericControllerTest < ActionController::TestCase
  def test_activate_path
    get :index
    assert_not_nil activate_path("something")
  end
end
0 remus test/functional % ruby generic_controller_test.rb
Loaded suite generic_controller_test
Started
.
Finished in 0.280308 seconds.
1 tests, 1 assertions, 0 failures, 0 errors
If I comment out the get :index call in my test file, I get this:
0 remus test/functional % ruby generic_controller_test.rb
Loaded suite generic_controller_test
Started
E
Finished in 0.282201 seconds.
  1) Error:
test_activate_path(GenericControllerTest):
NoMethodError: You have a nil object when you didn''t expect it!
The error occurred while evaluating nil.rewrite
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.0.2/lib/
action_controller/base.rb:616:in `url_for''
    (eval):17:in `activate_path''
/usr/lib64/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
test_process.rb:463:in `send!''
/usr/lib64/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/
test_process.rb:463:in `method_missing''
    generic_controller_test.rb:7:in `test_activate_path''
/usr/lib64/ruby/gems/1.8/gems/activesupport-2.0.2-/lib/active_support/
testing/default.rb:7:in `run''
What is it about the get call that "turns on" the named route?
Regards,
--Dean
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---