[rspec-users] route_for testing multiple request methods

David Chelimsky dchelimsky at gmail.com
Fri Apr 10 02:49:41 EDT 2009


On Fri, Apr 10, 2009 at 2:08 AM, Brandon Olivares
<programmer2188 at gmail.com> wrote:
> Hi,
>
> I'm trying to use route_for to test my routes. I have two routes that have
> the same path, but different request methods.
>
> map.with_options :controller => 'contact' do |c|
>  c.contact 'contact.html', :action => 'index',
>  :conditions => {:method => :get}
>  c.process_contact_form 'contact.html', :action => 'process_form',
>  :conditions => {:method => :post}
> End
>
> My test is:
>
>    it "should map  {:controller => 'contact', :action => 'process_form'} to
> /contact.html" do
>      route_for(:controller => 'contact', :action => 'process_form').should
> ==
>      '/contact.html'
>    end # it should map  {:controller => 'contact', :action =>
> 'process_form'} to /contact.html
>
> The error:
>
> Test::Unit::AssertionFailedError in 'ContactController route generation
> should map  {:controller => 'contact', :action => 'process_form'} to
> /contact.html'
> The recognized options <{"action"=>"index", "controller"=>"contact"}> did
> not match <{"action"=>"process_form", "controller"=>"contact"}>, difference:
> <{"action"=>"process_form"}>
>
> Is this a bug, or am I doing something wrong? It works when I use
> assert_generates, so I think the routes are correct.

assert_recognizes, however, will fail in the same way :)

Try:

route_for(:controller => 'contact', :action => 'index')
  .should == {:path => '/contact.html', :method => :get}

route_for(:controller => 'contact', :action => 'process_form')
  .should == {:path => '/contact.html', :method => :post}

The default is :method => :get, so the first doesn't require the
:method in the hash:

route_for(:controller => 'contact', :action => 'index')
  .should == :method => :get


>
> Brandon
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list