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.