Forum: RSpec Rails3 subdomain constraints with Cucumber and RSpec2

Posted by Cameron Caine (camcaine)
on 2010-08-26 00:15
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
Posted by David Chelimsky (Guest)
on 2010-08-26 02:14
(Received via mailing list)
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
Posted by Cameron Caine (camcaine)
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
Posted by David Chelimsky (Guest)
on 2010-08-26 15:27
(Received via mailing list)
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
No account? Register here.