rspec-rails 2.11.4 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Capybara.md +2 -2
- data/Changelog.md +25 -1
- data/README.md +61 -25
- data/features/controller_specs/anonymous_controller.feature +25 -25
- data/features/controller_specs/bypass_rescue.feature +4 -4
- data/features/controller_specs/controller_spec.feature +4 -4
- data/features/controller_specs/isolation_from_views.feature +13 -13
- data/features/controller_specs/render_views.feature +11 -11
- data/features/feature_specs/feature_spec.feature +34 -0
- data/features/helper_specs/helper_spec.feature +10 -10
- data/features/mailer_specs/url_helpers.feature +7 -7
- data/features/matchers/new_record_matcher.feature +20 -7
- data/features/matchers/redirect_to_matcher.feature +6 -6
- data/features/matchers/relation_match_array.feature +8 -6
- data/features/matchers/render_template_matcher.feature +25 -4
- data/features/mocks/mock_model.feature +21 -21
- data/features/mocks/stub_model.feature +8 -8
- data/features/model_specs/errors_on.feature +25 -7
- data/features/model_specs/transactional_examples.feature +13 -13
- data/features/request_specs/request_spec.feature +8 -8
- data/features/routing_specs/be_routable_matcher.feature +10 -10
- data/features/routing_specs/named_routes.feature +3 -3
- data/features/routing_specs/route_to_matcher.feature +17 -17
- data/features/view_specs/inferred_controller_path.feature +7 -6
- data/features/view_specs/stub_template.feature +5 -5
- data/features/view_specs/view_spec.feature +50 -18
- data/lib/autotest/rails_rspec2.rb +1 -1
- data/lib/generators/rspec.rb +6 -0
- data/lib/generators/rspec/controller/templates/controller_spec.rb +2 -0
- data/lib/generators/rspec/helper/templates/helper_spec.rb +2 -0
- data/lib/generators/rspec/mailer/templates/mailer_spec.rb +2 -0
- data/lib/generators/rspec/model/templates/model_spec.rb +2 -0
- data/lib/generators/rspec/observer/templates/observer_spec.rb +2 -0
- data/lib/generators/rspec/scaffold/scaffold_generator.rb +37 -3
- data/lib/generators/rspec/scaffold/templates/controller_spec.rb +9 -7
- data/lib/generators/rspec/scaffold/templates/routing_spec.rb +2 -0
- data/lib/rspec/rails/example.rb +5 -1
- data/lib/rspec/rails/example/feature_example_group.rb +30 -0
- data/lib/rspec/rails/example/view_example_group.rb +23 -12
- data/lib/rspec/rails/extensions.rb +1 -0
- data/lib/rspec/rails/extensions/active_record/base.rb +5 -3
- data/lib/rspec/rails/extensions/active_record/proxy.rb +17 -0
- data/lib/rspec/rails/matchers/be_new_record.rb +8 -0
- data/lib/rspec/rails/tasks/rspec.rake +1 -2
- data/lib/rspec/rails/vendor/capybara.rb +2 -8
- data/lib/rspec/rails/version.rb +1 -1
- data/spec/autotest/rails_rspec2_spec.rb +4 -4
- data/spec/generators/rspec/model/model_generator_spec.rb +1 -1
- data/spec/generators/rspec/scaffold/scaffold_generator_spec.rb +8 -0
- data/spec/rspec/rails/example/feature_example_group_spec.rb +56 -0
- data/spec/rspec/rails/example/view_example_group_spec.rb +7 -1
- data/spec/rspec/rails/matchers/be_new_record_spec.rb +16 -2
- data/spec/rspec/rails/matchers/has_spec.rb +29 -0
- data/spec/rspec/rails/matchers/relation_match_array_spec.rb +18 -7
- metadata +66 -10
@@ -1,19 +1,21 @@
|
|
1
1
|
Feature: ActiveRecord::Relation match array
|
2
2
|
|
3
|
-
The
|
4
|
-
assertion will pass if the scope would return all of the
|
5
|
-
in the array on the right hand side.
|
3
|
+
The `match_array` matcher can be used with an `ActiveRecord::Relation`
|
4
|
+
(scope). The assertion will pass if the scope would return all of the
|
5
|
+
elements specified in the array on the right hand side.
|
6
6
|
|
7
|
-
Scenario: example spec with relation
|
7
|
+
Scenario: example spec with relation match_array matcher
|
8
8
|
Given a file named "spec/models/widget_spec.rb" with:
|
9
|
-
"""
|
9
|
+
"""ruby
|
10
10
|
require "spec_helper"
|
11
11
|
|
12
12
|
describe Widget do
|
13
13
|
let!(:widgets) { Array.new(3) { Widget.create } }
|
14
14
|
subject { Widget.scoped }
|
15
15
|
|
16
|
-
it
|
16
|
+
it "returns all widgets in any order" do
|
17
|
+
expect(subject).to match_array(widgets)
|
18
|
+
end
|
17
19
|
end
|
18
20
|
"""
|
19
21
|
When I run `rspec spec/models/widget_spec.rb`
|
@@ -11,18 +11,39 @@ Feature: render_template matcher
|
|
11
11
|
|
12
12
|
Scenario: render_template with three possible options
|
13
13
|
Given a file named "spec/controllers/gadgets_spec.rb" with:
|
14
|
-
"""
|
14
|
+
"""ruby
|
15
15
|
require "spec_helper"
|
16
16
|
|
17
17
|
describe GadgetsController do
|
18
18
|
describe "GET #index" do
|
19
19
|
subject { get :index }
|
20
20
|
|
21
|
-
it
|
22
|
-
|
23
|
-
|
21
|
+
it "renders the index template" do
|
22
|
+
expect(subject).to render_template(:index)
|
23
|
+
expect(subject).to render_template("index")
|
24
|
+
expect(subject).to render_template("gadgets/index")
|
25
|
+
end
|
24
26
|
end
|
25
27
|
end
|
26
28
|
"""
|
27
29
|
When I run `rspec spec/controllers/gadgets_spec.rb`
|
28
30
|
Then the examples should all pass
|
31
|
+
|
32
|
+
Scenario: render_template in a view spec
|
33
|
+
Given a file named "spec/views/gadgets/index.html.erb_spec.rb" with:
|
34
|
+
"""ruby
|
35
|
+
require "spec_helper"
|
36
|
+
|
37
|
+
describe "gadgets/index" do
|
38
|
+
it "renders the index template" do
|
39
|
+
assign(:gadgets, [stub_model(Gadget)])
|
40
|
+
render
|
41
|
+
|
42
|
+
expect(view).to render_template(:index)
|
43
|
+
expect(view).to render_template("index")
|
44
|
+
expect(view).to render_template("gadgets/index")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
"""
|
48
|
+
When I run `rspec spec/views`
|
49
|
+
Then the examples should all pass
|
@@ -13,25 +13,25 @@ Feature: mock_model
|
|
13
13
|
|
14
14
|
Scenario: passing a string that represents a non-existent constant
|
15
15
|
Given a file named "spec/models/car_spec.rb" with:
|
16
|
-
"""
|
16
|
+
"""ruby
|
17
17
|
require "spec_helper"
|
18
18
|
|
19
19
|
describe "mock_model('Car') with no Car constant in existence" do
|
20
20
|
it "generates a constant" do
|
21
|
-
Object.const_defined?(:Car).
|
21
|
+
expect(Object.const_defined?(:Car)).to be_false
|
22
22
|
mock_model("Car")
|
23
|
-
Object.const_defined?(:Car).
|
23
|
+
expect(Object.const_defined?(:Car)).to be_true
|
24
24
|
end
|
25
25
|
|
26
26
|
describe "generates an object that ..." do
|
27
27
|
it "returns the correct name" do
|
28
28
|
car = mock_model("Car")
|
29
|
-
car.class.name.
|
29
|
+
expect(car.class.name).to eq("Car")
|
30
30
|
end
|
31
31
|
|
32
32
|
it "says it is a Car" do
|
33
33
|
car = mock_model("Car")
|
34
|
-
car.
|
34
|
+
expect(car).to be_a(Car)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
@@ -41,13 +41,13 @@ Feature: mock_model
|
|
41
41
|
|
42
42
|
Scenario: passing a string that represents an existing constant
|
43
43
|
Given a file named "spec/models/widget_spec.rb" with:
|
44
|
-
"""
|
44
|
+
"""ruby
|
45
45
|
require "spec_helper"
|
46
46
|
|
47
47
|
describe Widget do
|
48
48
|
it "uses the existing constant" do
|
49
49
|
widget = mock_model("Widget")
|
50
|
-
widget.
|
50
|
+
expect(widget).to be_a(Widget)
|
51
51
|
end
|
52
52
|
end
|
53
53
|
"""
|
@@ -56,7 +56,7 @@ Feature: mock_model
|
|
56
56
|
|
57
57
|
Scenario: passing a class that does not extend ActiveModel::Naming
|
58
58
|
Given a file named "spec/models/string_spec.rb" with:
|
59
|
-
"""
|
59
|
+
"""ruby
|
60
60
|
require "spec_helper"
|
61
61
|
|
62
62
|
describe String do
|
@@ -70,27 +70,27 @@ Feature: mock_model
|
|
70
70
|
|
71
71
|
Scenario: passing an Active Record constant
|
72
72
|
Given a file named "spec/models/widget_spec.rb" with:
|
73
|
-
"""
|
73
|
+
"""ruby
|
74
74
|
require "spec_helper"
|
75
75
|
|
76
76
|
describe Widget do
|
77
77
|
let(:widget) { mock_model(Widget) }
|
78
78
|
|
79
79
|
it "is valid by default" do
|
80
|
-
widget.
|
80
|
+
expect(widget).to be_valid
|
81
81
|
end
|
82
82
|
|
83
83
|
it "is not a new record by default" do
|
84
|
-
widget.
|
84
|
+
expect(widget).not_to be_new_record
|
85
85
|
end
|
86
86
|
|
87
87
|
it "can be converted to a new record" do
|
88
|
-
widget.as_new_record.
|
88
|
+
expect(widget.as_new_record).to be_new_record
|
89
89
|
end
|
90
90
|
|
91
91
|
it "sets :id to nil upon destroy" do
|
92
92
|
widget.destroy
|
93
|
-
widget.id.
|
93
|
+
expect(widget.id).to be_nil
|
94
94
|
end
|
95
95
|
end
|
96
96
|
"""
|
@@ -99,7 +99,7 @@ Feature: mock_model
|
|
99
99
|
|
100
100
|
Scenario: passing an Active Record constant with method stubs
|
101
101
|
Given a file named "spec/models/widget_spec.rb" with:
|
102
|
-
"""
|
102
|
+
"""ruby
|
103
103
|
require "spec_helper"
|
104
104
|
|
105
105
|
describe "mock_model(Widget) with stubs" do
|
@@ -110,18 +110,18 @@ Feature: mock_model
|
|
110
110
|
end
|
111
111
|
|
112
112
|
it "supports stubs for methods that don't exist in ActiveModel or ActiveRecord" do
|
113
|
-
widget.foo.
|
113
|
+
expect(widget.foo).to eq("bar")
|
114
114
|
end
|
115
115
|
|
116
116
|
it "supports stubs for methods that do exist" do
|
117
|
-
widget.save.
|
118
|
-
widget.update_attributes.
|
117
|
+
expect(widget.save).to eq(true)
|
118
|
+
expect(widget.update_attributes).to be_false
|
119
119
|
end
|
120
120
|
|
121
121
|
describe "#errors" do
|
122
122
|
context "with update_attributes => false" do
|
123
123
|
it "is not empty" do
|
124
|
-
widget.errors.
|
124
|
+
expect(widget.errors).not_to be_empty
|
125
125
|
end
|
126
126
|
end
|
127
127
|
end
|
@@ -132,14 +132,14 @@ Feature: mock_model
|
|
132
132
|
|
133
133
|
Scenario: mock_model outside rails
|
134
134
|
Given a file named "mock_model_outside_rails_spec.rb" with:
|
135
|
-
"""
|
135
|
+
"""ruby
|
136
136
|
require 'rspec/rails/mocks'
|
137
137
|
|
138
138
|
describe "Foo" do
|
139
139
|
it "is mockable" do
|
140
140
|
foo = mock_model("Foo")
|
141
|
-
foo.id.
|
142
|
-
foo.to_param.
|
141
|
+
expect(foo.id).to eq(1001)
|
142
|
+
expect(foo.to_param).to eq("1001")
|
143
143
|
end
|
144
144
|
end
|
145
145
|
"""
|
@@ -8,7 +8,7 @@ Feature: stub_model
|
|
8
8
|
|
9
9
|
Scenario: passing an Active Record constant with a hash of stubs
|
10
10
|
Given a file named "spec/models/widget_spec.rb" with:
|
11
|
-
"""
|
11
|
+
"""ruby
|
12
12
|
require "spec_helper"
|
13
13
|
|
14
14
|
describe "stub_model(Widget) with a hash of stubs" do
|
@@ -17,20 +17,20 @@ Feature: stub_model
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it "stubs :id" do
|
20
|
-
widget.id.
|
20
|
+
expect(widget.id).to eql(5)
|
21
21
|
end
|
22
22
|
|
23
23
|
it "stubs :random_attribute" do
|
24
|
-
widget.random_attribute.
|
24
|
+
expect(widget.random_attribute).to be_true
|
25
25
|
end
|
26
26
|
|
27
27
|
it "returns false for new_record? if :id is set" do
|
28
|
-
widget.
|
28
|
+
expect(widget).not_to be_new_record
|
29
29
|
end
|
30
30
|
|
31
31
|
it "can be converted to a new record" do
|
32
32
|
widget.as_new_record
|
33
|
-
widget.
|
33
|
+
expect(widget).to be_new_record
|
34
34
|
end
|
35
35
|
end
|
36
36
|
"""
|
@@ -39,7 +39,7 @@ Feature: stub_model
|
|
39
39
|
|
40
40
|
Scenario: passing an Active Record constant with a block of stubs
|
41
41
|
Given a file named "spec/models/widget_spec.rb" with:
|
42
|
-
"""
|
42
|
+
"""ruby
|
43
43
|
require "spec_helper"
|
44
44
|
|
45
45
|
describe "stub_model(Widget) with a block of stubs" do
|
@@ -50,9 +50,9 @@ Feature: stub_model
|
|
50
50
|
end
|
51
51
|
|
52
52
|
it "stubs :id" do
|
53
|
-
widget.id.
|
53
|
+
expect(widget.id).to eql(5)
|
54
54
|
end
|
55
55
|
end
|
56
56
|
"""
|
57
57
|
When I run `rspec spec/models/widget_spec.rb`
|
58
|
-
Then the examples should all pass
|
58
|
+
Then the examples should all pass
|
@@ -2,30 +2,48 @@ Feature: errors_on
|
|
2
2
|
|
3
3
|
Scenario: with one validation error
|
4
4
|
Given a file named "spec/models/widget_spec.rb" with:
|
5
|
-
"""
|
5
|
+
"""ruby
|
6
6
|
require "spec_helper"
|
7
7
|
|
8
8
|
class ValidatingWidget < ActiveRecord::Base
|
9
|
-
|
9
|
+
self.table_name = :widgets
|
10
10
|
validates_presence_of :name
|
11
|
-
|
11
|
+
|
12
|
+
# In Rails 4, mass assignment protection is implemented on controllers
|
13
|
+
attr_accessible :name if Rails.version < '4'
|
14
|
+
|
15
|
+
validates_length_of :name, :minimum => 10, :on => :publication
|
12
16
|
end
|
13
17
|
|
14
18
|
describe ValidatingWidget do
|
15
19
|
it "fails validation with no name (using error_on)" do
|
16
|
-
ValidatingWidget.new.
|
20
|
+
expect(ValidatingWidget.new).to have(1).error_on(:name)
|
17
21
|
end
|
18
22
|
|
19
23
|
it "fails validation with no name (using errors_on)" do
|
20
|
-
ValidatingWidget.new.
|
24
|
+
expect(ValidatingWidget.new).to have(1).errors_on(:name)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "fails validation with no name expecting a specific message" do
|
28
|
+
expect(ValidatingWidget.new.errors_on(:name)).to include("can't be blank")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "fails validation with a short name (using a validation context)" do
|
32
|
+
expect(ValidatingWidget.new(:name => "too short")).
|
33
|
+
to have(1).errors_on(:name, :context => :publication)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "passes validation with a longer name (using a validation context)" do
|
37
|
+
expect(ValidatingWidget.new(:name => "a longer name")).
|
38
|
+
to have(0).errors_on(:name, :context => :publication)
|
21
39
|
end
|
22
40
|
|
23
41
|
it "passes validation with a name (using 0)" do
|
24
|
-
ValidatingWidget.new(:name => "liquid nitrogen").
|
42
|
+
expect(ValidatingWidget.new(:name => "liquid nitrogen")).to have(0).errors_on(:name)
|
25
43
|
end
|
26
44
|
|
27
45
|
it "passes validation with a name (using :no)" do
|
28
|
-
ValidatingWidget.new(:name => "liquid nitrogen").
|
46
|
+
expect(ValidatingWidget.new(:name => "liquid nitrogen")).to have(:no).errors_on(:name)
|
29
47
|
end
|
30
48
|
end
|
31
49
|
"""
|
@@ -7,21 +7,21 @@ Feature: transactional examples
|
|
7
7
|
|
8
8
|
Scenario: run in transactions (default)
|
9
9
|
Given a file named "spec/models/widget_spec.rb" with:
|
10
|
-
"""
|
10
|
+
"""ruby
|
11
11
|
require "spec_helper"
|
12
12
|
|
13
13
|
describe Widget do
|
14
14
|
it "has none to begin with" do
|
15
|
-
Widget.count.
|
15
|
+
expect(Widget.count).to eq 0
|
16
16
|
end
|
17
17
|
|
18
18
|
it "has one after adding one" do
|
19
19
|
Widget.create
|
20
|
-
Widget.count.
|
20
|
+
expect(Widget.count).to eq 1
|
21
21
|
end
|
22
22
|
|
23
23
|
it "has none after one was created in a previous example" do
|
24
|
-
Widget.count.
|
24
|
+
expect(Widget.count).to eq 0
|
25
25
|
end
|
26
26
|
end
|
27
27
|
"""
|
@@ -30,7 +30,7 @@ Feature: transactional examples
|
|
30
30
|
|
31
31
|
Scenario: run in transactions (explicit)
|
32
32
|
Given a file named "spec/models/widget_spec.rb" with:
|
33
|
-
"""
|
33
|
+
"""ruby
|
34
34
|
require "spec_helper"
|
35
35
|
|
36
36
|
RSpec.configure do |c|
|
@@ -39,16 +39,16 @@ Feature: transactional examples
|
|
39
39
|
|
40
40
|
describe Widget do
|
41
41
|
it "has none to begin with" do
|
42
|
-
Widget.count.
|
42
|
+
expect(Widget.count).to eq 0
|
43
43
|
end
|
44
44
|
|
45
45
|
it "has one after adding one" do
|
46
46
|
Widget.create
|
47
|
-
Widget.count.
|
47
|
+
expect(Widget.count).to eq 1
|
48
48
|
end
|
49
49
|
|
50
50
|
it "has none after one was created in a previous example" do
|
51
|
-
Widget.count.
|
51
|
+
expect(Widget.count).to eq 0
|
52
52
|
end
|
53
53
|
end
|
54
54
|
"""
|
@@ -57,7 +57,7 @@ Feature: transactional examples
|
|
57
57
|
|
58
58
|
Scenario: disable transactions (explicit)
|
59
59
|
Given a file named "spec/models/widget_spec.rb" with:
|
60
|
-
"""
|
60
|
+
"""ruby
|
61
61
|
require "spec_helper"
|
62
62
|
|
63
63
|
RSpec.configure do |c|
|
@@ -67,16 +67,16 @@ Feature: transactional examples
|
|
67
67
|
|
68
68
|
describe Widget do
|
69
69
|
it "has none to begin with" do
|
70
|
-
Widget.count.
|
70
|
+
expect(Widget.count).to eq 0
|
71
71
|
end
|
72
72
|
|
73
73
|
it "has one after adding one" do
|
74
74
|
Widget.create
|
75
|
-
Widget.count.
|
75
|
+
expect(Widget.count).to eq 1
|
76
76
|
end
|
77
77
|
|
78
78
|
it "has one after one was created in a previous example" do
|
79
|
-
Widget.count.
|
79
|
+
expect(Widget.count).to eq 1
|
80
80
|
end
|
81
81
|
|
82
82
|
after(:all) { Widget.destroy_all }
|
@@ -87,7 +87,7 @@ Feature: transactional examples
|
|
87
87
|
|
88
88
|
Scenario: run in transactions with fixture
|
89
89
|
Given a file named "spec/models/thing_spec.rb" with:
|
90
|
-
"""
|
90
|
+
"""ruby
|
91
91
|
require "spec_helper"
|
92
92
|
|
93
93
|
describe Thing do
|
@@ -19,28 +19,28 @@ Feature: request spec
|
|
19
19
|
|
20
20
|
Check the Rails docs for details on these methods as well.
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
[Capybara](http://github.com/jnicklas/capybara) is no longer supported in
|
23
|
+
request specs as of Capybara 2.0.0. The recommended way to use Capybara is
|
24
|
+
with [feature specs](../feature_specs/feature_spec.feature).
|
25
25
|
|
26
26
|
Scenario: specify managing a Widget with Rails integration methods
|
27
27
|
Given a file named "spec/requests/widget_management_spec.rb" with:
|
28
|
-
"""
|
28
|
+
"""ruby
|
29
29
|
require "spec_helper"
|
30
30
|
|
31
31
|
describe "Widget management" do
|
32
32
|
|
33
33
|
it "creates a Widget and redirects to the Widget's page" do
|
34
34
|
get "/widgets/new"
|
35
|
-
response.
|
35
|
+
expect(response).to render_template(:new)
|
36
36
|
|
37
37
|
post "/widgets", :widget => {:name => "My Widget"}
|
38
38
|
|
39
|
-
response.
|
39
|
+
expect(response).to redirect_to(assigns(:widget))
|
40
40
|
follow_redirect!
|
41
41
|
|
42
|
-
response.
|
43
|
-
response.body.
|
42
|
+
expect(response).to render_template(:show)
|
43
|
+
expect(response.body).to include("Widget was successfully created.")
|
44
44
|
end
|
45
45
|
|
46
46
|
end
|
@@ -6,12 +6,12 @@ Feature: be_routable matcher
|
|
6
6
|
|
7
7
|
Scenario: specify routeable route should not be routable (fails)
|
8
8
|
Given a file named "spec/routing/widgets_routing_spec.rb" with:
|
9
|
-
"""
|
9
|
+
"""ruby
|
10
10
|
require "spec_helper"
|
11
11
|
|
12
12
|
describe "routes for Widgets" do
|
13
13
|
it "does not route to widgets" do
|
14
|
-
|
14
|
+
expect(:get => "/widgets").not_to be_routable
|
15
15
|
end
|
16
16
|
end
|
17
17
|
"""
|
@@ -21,12 +21,12 @@ Feature: be_routable matcher
|
|
21
21
|
|
22
22
|
Scenario: specify non-routeable route should not be routable (passes)
|
23
23
|
Given a file named "spec/routing/widgets_routing_spec.rb" with:
|
24
|
-
"""
|
24
|
+
"""ruby
|
25
25
|
require "spec_helper"
|
26
26
|
|
27
27
|
describe "routes for Widgets" do
|
28
28
|
it "does not route to widgets/foo/bar" do
|
29
|
-
|
29
|
+
expect(:get => "/widgets/foo/bar").not_to be_routable
|
30
30
|
end
|
31
31
|
end
|
32
32
|
"""
|
@@ -36,12 +36,12 @@ Feature: be_routable matcher
|
|
36
36
|
|
37
37
|
Scenario: specify routeable route should be routable (passes)
|
38
38
|
Given a file named "spec/routing/widgets_routing_spec.rb" with:
|
39
|
-
"""
|
39
|
+
"""ruby
|
40
40
|
require "spec_helper"
|
41
41
|
|
42
42
|
describe "routes for Widgets" do
|
43
43
|
it "routes to /widgets" do
|
44
|
-
|
44
|
+
expect(:get => "/widgets").to be_routable
|
45
45
|
end
|
46
46
|
end
|
47
47
|
"""
|
@@ -51,12 +51,12 @@ Feature: be_routable matcher
|
|
51
51
|
|
52
52
|
Scenario: specify non-routeable route should be routable (fails)
|
53
53
|
Given a file named "spec/routing/widgets_routing_spec.rb" with:
|
54
|
-
"""
|
54
|
+
"""ruby
|
55
55
|
require "spec_helper"
|
56
56
|
|
57
57
|
describe "routes for Widgets" do
|
58
58
|
it "routes to widgets/foo/bar" do
|
59
|
-
|
59
|
+
expect(:get => "/widgets/foo/bar").to be_routable
|
60
60
|
end
|
61
61
|
end
|
62
62
|
"""
|
@@ -66,12 +66,12 @@ Feature: be_routable matcher
|
|
66
66
|
|
67
67
|
Scenario: be_routable in a controller spec
|
68
68
|
Given a file named "spec/controllers/widgets_controller_spec.rb" with:
|
69
|
-
"""
|
69
|
+
"""ruby
|
70
70
|
require "spec_helper"
|
71
71
|
|
72
72
|
describe WidgetsController do
|
73
73
|
it "routes to /widgets" do
|
74
|
-
|
74
|
+
expect(:get => "/widgets").to be_routable
|
75
75
|
end
|
76
76
|
end
|
77
77
|
"""
|