routing specs with advanced constraints #5

skiz opened this Issue Jun 8, 2011 · 2 comments


None yet

2 participants

skiz commented Jun 8, 2011

When trying to generate some routing specs that incorporate a custom model based matcher, I was unable to get the specs to pass without also having the constraint return a hash which matches one of the request parameters. describes a way to handle custom constraints, which I have also tried. Even though all of these work properly in rails, I was only able to get the specs to pass by doing something like the following (notice the hash with a key that exists in the request);


 def organization_exists?(req)
    {:organization_id => Organization.where(:slug => req[:organization_id]).exists?}

 scope '/:organization_id', :constraints => lambda{|req| organization_exists?(req) } do
     match '/',             :to => 'organizations#show',             :as => 'organization',             :via => :get


describe "Routing" do
  before do
    @org = Factory.create(:organization)

  it "routes GET /:organization_id to organizations#show" do
    {:get => "/#{@org.slug}"}.should route_to(:controller => 'organizations', :action => 'show', :organization_id => @org.slug)

This tracker is for rspec-rails-1.x. For rspec-rails-2 (rails-3), please use

This particular issue has been reported a few times already in that tracker, but it is really a rails issue, and has also been raised in the rails tracker (more than once): - please either comment on the appropriate issue there or raise a new one. Thx.

@dchelimsky dchelimsky closed this Jun 8, 2011
skiz commented Jun 8, 2011

Oh awesome then. I'll proceed to investigate both ends then.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment