Skip to content

Commit f044207

Browse files
committed
Add cucumber test for engine routes
1 parent e8161a7 commit f044207

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
Feature: engine named routes
2+
3+
Generated requeset specs inside a Rails Engine is able to use route and url helpers.
4+
5+
Scenario: include engine route helpers
6+
Given a file named "spec/requests/widgets_spec.rb" with:
7+
"""ruby
8+
require "rails_helper"
9+
10+
# A very simple Rails engine
11+
module MyEngine
12+
class Engine < ::Rails::Engine
13+
isolate_namespace MyEngine
14+
end
15+
16+
class LinksController < ::ActionController::Base
17+
def index
18+
render plain: 'hit_engine_route'
19+
end
20+
end
21+
end
22+
23+
MyEngine::Engine.routes.draw do
24+
resources :links, :only => [:index]
25+
end
26+
27+
Rails.application.routes.draw do
28+
mount MyEngine::Engine => "/my_engine"
29+
end
30+
31+
module MyEngine
32+
RSpec.describe "Links", :type => :request do
33+
34+
include Engine.routes.url_helpers
35+
36+
it "redirects to a random widget" do
37+
get links_url
38+
expect(response.body).to eq('hit_engine_route')
39+
end
40+
end
41+
end
42+
"""
43+
When I run `rspec spec`
44+
Then the example should pass
45+
46+
Scenario: do not include engine route helpers
47+
Given a file named "spec/requests/widgets_spec.rb" with:
48+
"""ruby
49+
require "rails_helper"
50+
51+
# A very simple Rails engine
52+
module MyEngine
53+
class Engine < ::Rails::Engine
54+
isolate_namespace MyEngine
55+
end
56+
57+
class LinksController < ::ActionController::Base
58+
def index
59+
render plain: 'hit_engine_route'
60+
end
61+
end
62+
end
63+
64+
MyEngine::Engine.routes.draw do
65+
resources :links, :only => [:index]
66+
end
67+
68+
Rails.application.routes.draw do
69+
mount MyEngine::Engine => "/my_engine"
70+
end
71+
72+
module MyEngine
73+
RSpec.describe "Links", :type => :request do
74+
75+
it "redirects to a random widget" do
76+
get links_url
77+
expect(response.body).to eq('hit_engine_route')
78+
end
79+
end
80+
end
81+
"""
82+
When I run `rspec spec`
83+
Then the example should fail

0 commit comments

Comments
 (0)