Rails3 subdomain constraints with Cucumber and RSpec2

How do I spec rails3 routing constraints?
My Cucumber features pass whatever subdomain I pass in. Not sure where
or how to spec the subdomain. Any help would be appreciated.

I have something like the following:

#features/create_account.feature
Scenario:
Given I visit subdomain “www”
And I go to the new account page

#accounts_controller_spec.rb
describe AccountsController do
describe “GET new” do
before(:each) do
get :new
end

it "should render new.html.haml" do
  response.should render_template(:new)
end

end
end

#routes.rb
constraints Promotional do
resource :account, :only => :new
end

#lib/promotional.rb
class Promotional
def self.matches?(request)
request.subdomain.empty? || request.subdomain == “www”
end
end

On Aug 25, 2010, at 5:15 PM, Cameron C. wrote:

end
request.subdomain.empty? || request.subdomain == “www”
end
end

There was a commit to rails [1] that got in a day or two before the rc2
release that lets you pass a full URL to routing assertions. This means
you can do this in RSpec:

{ :get => “http://www.example.com/accounts/new” }.should
route_to(:controller => “accounts”, :action => “new”)

{ :get => “http://foo.example.com/accounts/new” }.should_not be_routable

You need rails-3.0.0.rc2. Not sure what version of rspec-rails you need,
but you may as well grab rspec-rails-2.0.0.beta.20 (the latest).

HTH,
David

[1] https://rails.lighthouseapp.com/projects/8994/tickets/5005

I updated to rc2 and RSpec beta.20 but still get an error:

Failure/Error: { :get => “http://foo.example.com/account/new
}.should_not be_routable
expected {:get=>“http://foo.example.com/account/new”} not to be
routable, but it routes to {:controller=>“accounts”, :action=>“new”}

Is this a bug? Any advice?

Many thanks

Cameron

On Aug 26, 2010, at 8:22 AM, Cameron C. wrote:

I updated to rc2 and RSpec beta.20 but still get an error:

Failure/Error: { :get => “http://foo.example.com/account/new
}.should_not be_routable
expected {:get=>“http://foo.example.com/account/new”} not to be
routable, but it routes to {:controller=>“accounts”, :action=>“new”}

Please quote all the relevant parts of the thread in each email so we
don’t have to go searching through the thread for context.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs