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 2010-08-26 00:15
on 2010-08-26 02:14
On Aug 25, 2010, at 5:15 PM, Cameron Caine 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
on 2010-08-26 15:22
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 2010-08-26 15:27
On Aug 26, 2010, at 8:22 AM, Cameron Caine 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.
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.