rspec-rails 2.3.1 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/History.md +21 -1
  2. data/README.md +3 -3
  3. data/Rakefile +2 -2
  4. data/{Upgrade.markdown → Upgrade.md} +0 -0
  5. data/features/.nav +12 -7
  6. data/features/Autotest.md +10 -0
  7. data/features/Generators.md +8 -0
  8. data/features/GettingStarted.md +40 -0
  9. data/features/{README.markdown → README.md} +1 -26
  10. data/features/Upgrade.md +56 -0
  11. data/features/controller_specs/README.md +27 -16
  12. data/features/controller_specs/isolation_from_views.feature +6 -5
  13. data/features/controller_specs/render_views.feature +30 -1
  14. data/features/helper_specs/helper_spec.feature +36 -3
  15. data/features/mocks/mock_model.feature +3 -3
  16. data/features/model_specs/README.md +19 -0
  17. data/features/routing_specs/README.md +16 -0
  18. data/features/{matchers → routing_specs}/be_routable_matcher.feature +18 -18
  19. data/features/routing_specs/{access_to_named_routes.feature → named_routes.feature} +6 -3
  20. data/features/routing_specs/route_to_matcher.feature +38 -0
  21. data/lib/generators/rspec/scaffold/scaffold_generator.rb +6 -6
  22. data/lib/generators/rspec/scaffold/templates/controller_spec.rb +22 -24
  23. data/lib/rspec/rails.rb +0 -1
  24. data/lib/rspec/rails/example.rb +29 -1
  25. data/lib/rspec/rails/example/controller_example_group.rb +1 -5
  26. data/lib/rspec/rails/example/helper_example_group.rb +5 -6
  27. data/lib/rspec/rails/example/mailer_example_group.rb +1 -5
  28. data/lib/rspec/rails/example/model_example_group.rb +0 -3
  29. data/lib/rspec/rails/example/request_example_group.rb +1 -5
  30. data/lib/rspec/rails/example/routing_example_group.rb +1 -5
  31. data/lib/rspec/rails/example/view_example_group.rb +1 -4
  32. data/lib/rspec/rails/matchers/redirect_to.rb +6 -2
  33. data/lib/rspec/rails/matchers/render_template.rb +5 -1
  34. data/lib/rspec/rails/matchers/routing_matchers.rb +1 -1
  35. data/lib/rspec/rails/module_inclusion.rb +17 -0
  36. data/lib/rspec/rails/version.rb +1 -1
  37. data/lib/rspec/rails/view_rendering.rb +23 -7
  38. data/spec/rspec/rails/configuration_spec.rb +26 -0
  39. data/spec/rspec/rails/example/helper_example_group_spec.rb +18 -0
  40. data/spec/rspec/rails/example/request_example_group_spec.rb +2 -0
  41. data/spec/rspec/rails/matchers/be_routable_spec.rb +41 -0
  42. data/spec/rspec/rails/matchers/redirect_to_spec.rb +67 -8
  43. data/spec/rspec/rails/matchers/render_template_spec.rb +67 -10
  44. data/spec/rspec/rails/matchers/route_to_spec.rb +64 -33
  45. data/spec/rspec/rails/view_rendering_spec.rb +105 -0
  46. metadata +38 -20
  47. data/spec/rspec/rails/example/view_rendering_spec.rb +0 -110
@@ -3,51 +3,82 @@ require "spec_helper"
3
3
  describe "route_to" do
4
4
  include RSpec::Rails::Matchers::RoutingMatchers
5
5
 
6
- it "uses failure message from assert_recognizes" do
7
- self.stub!(:assert_recognizes).and_raise(
8
- Test::Unit::AssertionFailedError.new("this message"))
9
- expect do
10
- {"this" => "path"}.should route_to("these" => "options")
11
- end.to raise_error("this message")
6
+ it "delegates to assert_recognizes" do
7
+ self.should_receive(:assert_recognizes).with({ "these" => "options" }, { :method=> :get, :path=>"path" })
8
+ {:get => "path"}.should route_to("these" => "options")
12
9
  end
13
- end
14
-
15
- describe "be_routable" do
16
- include RSpec::Rails::Matchers::RoutingMatchers
17
- attr_reader :routes
18
-
19
- before { @routes = double("routes") }
20
10
 
21
11
  context "with should" do
22
- it "passes if routes recognize the path" do
23
- routes.stub(:recognize_path) { {} }
24
- expect do
25
- {:get => "/a/path"}.should be_routable
26
- end.to_not raise_error
12
+ context "when assert_recognizes passes" do
13
+ it "passes" do
14
+ self.stub!(:assert_recognizes)
15
+ expect do
16
+ {:get => "path"}.should route_to("these" => "options")
17
+ end.to_not raise_exception
18
+ end
27
19
  end
28
20
 
29
- it "fails if routes do not recognize the path" do
30
- routes.stub(:recognize_path) { raise ActionController::RoutingError.new('ignore') }
31
- expect do
32
- {:get => "/a/path"}.should be_routable
33
- end.to raise_error(/expected \{:get=>"\/a\/path"\} to be routable/)
21
+ context "when assert_recognizes fails" do
22
+ it "fails with message from assert_recognizes" do
23
+ self.stub!(:assert_recognizes) do
24
+ raise ActiveSupport::TestCase::Assertion.new("this message")
25
+ end
26
+ expect do
27
+ {:get => "path"}.should route_to("these" => "options")
28
+ end.to raise_error("this message")
29
+ end
30
+ end
31
+
32
+ context "when an exception is raised" do
33
+ it "raises that exception" do
34
+ self.stub!(:assert_recognizes) do
35
+ raise "oops"
36
+ end
37
+ expect do
38
+ {:get => "path"}.should route_to("these" => "options")
39
+ end.to raise_exception("oops")
40
+ end
34
41
  end
35
42
  end
36
43
 
37
44
  context "with should_not" do
45
+ context "when assert_recognizes passes" do
46
+ it "fails with custom message" do
47
+ self.stub!(:assert_recognizes)
48
+ expect do
49
+ {:get => "path"}.should_not route_to("these" => "options")
50
+ end.to raise_error(/expected .* not to route to .*/)
51
+ end
52
+ end
38
53
 
39
- it "passes if routes do not recognize the path" do
40
- routes.stub(:recognize_path) { raise ActionController::RoutingError.new('ignore') }
41
- expect do
42
- {:get => "/a/path"}.should_not be_routable
43
- end.to_not raise_error
54
+ context "when assert_recognizes fails" do
55
+ it "passes" do
56
+ self.stub!(:assert_recognizes) do
57
+ raise ActiveSupport::TestCase::Assertion.new("this message")
58
+ end
59
+ expect do
60
+ {:get => "path"}.should_not route_to("these" => "options")
61
+ end.to_not raise_error
62
+ end
44
63
  end
45
64
 
46
- it "fails if routes recognize the path" do
47
- routes.stub(:recognize_path) { {:controller => "foo"} }
48
- expect do
49
- {:get => "/a/path"}.should_not be_routable
50
- end.to raise_error(/expected \{:get=>"\/a\/path"\} not to be routable, but it routes to \{:controller=>"foo"\}/)
65
+ context "when an exception is raised" do
66
+ it "raises that exception" do
67
+ self.stub!(:assert_recognizes) do
68
+ raise "oops"
69
+ end
70
+ expect do
71
+ {:get => "path"}.should_not route_to("these" => "options")
72
+ end.to raise_exception("oops")
73
+ end
51
74
  end
52
75
  end
76
+ it "uses failure message from assert_recognizes" do
77
+ self.stub!(:assert_recognizes).and_raise(
78
+ ActiveSupport::TestCase::Assertion.new("this message"))
79
+ expect do
80
+ {"this" => "path"}.should route_to("these" => "options")
81
+ end.to raise_error("this message")
82
+ end
53
83
  end
84
+
@@ -0,0 +1,105 @@
1
+ require "spec_helper"
2
+
3
+ module RSpec::Rails
4
+ describe ViewRendering do
5
+ let(:controller) do
6
+ double("controller").tap do |controller|
7
+ controller.stub_chain("class.respond_to?").and_return(true)
8
+ end
9
+ end
10
+
11
+ let(:group) do
12
+ RSpec::Core::ExampleGroup.describe do
13
+ def controller
14
+ ActionController::Base.new
15
+ end
16
+ include ViewRendering
17
+ end
18
+ end
19
+
20
+ context "default" do
21
+ context "ActionController::Base" do
22
+ it "does not render views" do
23
+ group.new.render_views?.should be_false
24
+ end
25
+
26
+ it "does not render views in a nested group" do
27
+ group.describe{}.new.render_views?.should be_false
28
+ end
29
+ end
30
+
31
+ context "ActionController::Metal" do
32
+ it "renders views" do
33
+ group.new.tap do |example|
34
+ def example.controller
35
+ ActionController::Metal.new
36
+ end
37
+ example.render_views?.should be_true
38
+ end
39
+ end
40
+ end
41
+ end
42
+
43
+ describe "#render_views" do
44
+ context "with no args" do
45
+ it "tells examples to render views" do
46
+ group.render_views
47
+ group.new.render_views?.should be_true
48
+ end
49
+ end
50
+
51
+ context "with true" do
52
+ it "tells examples to render views" do
53
+ group.render_views true
54
+ group.new.render_views?.should be_true
55
+ end
56
+ end
57
+
58
+ context "with false" do
59
+ it "tells examples not to render views" do
60
+ group.render_views false
61
+ group.new.render_views?.should be_false
62
+ end
63
+ end
64
+
65
+ context "in a nested group" do
66
+ let(:nested_group) do
67
+ group.describe{}
68
+ end
69
+
70
+ context "with no args" do
71
+ it "tells examples to render views" do
72
+ nested_group.render_views
73
+ nested_group.new.render_views?.should be_true
74
+ end
75
+ end
76
+
77
+ context "with true" do
78
+ it "tells examples to render views" do
79
+ nested_group.render_views true
80
+ nested_group.new.render_views?.should be_true
81
+ end
82
+ end
83
+
84
+ context "with false" do
85
+ it "tells examples not to render views" do
86
+ nested_group.render_views false
87
+ nested_group.new.render_views?.should be_false
88
+ end
89
+ end
90
+
91
+ it "overrides the parent group" do
92
+ group.render_views
93
+ nested_group.render_views false
94
+ nested_group.new.render_views?.should be_false
95
+ end
96
+
97
+ it "passes override to children" do
98
+ group.render_views
99
+ nested_group.render_views false
100
+ nested_group.describe{}.new.render_views?.should be_false
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 2
7
- - 3
8
- - 1
9
- version: 2.3.1
7
+ - 4
8
+ - 0
9
+ version: 2.4.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - David Chelimsky
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-12-16 00:00:00 -06:00
17
+ date: 2011-01-02 00:00:00 -06:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -68,9 +68,9 @@ dependencies:
68
68
  - !ruby/object:Gem::Version
69
69
  segments:
70
70
  - 2
71
- - 3
71
+ - 4
72
72
  - 0
73
- version: 2.3.0
73
+ version: 2.4.0
74
74
  type: :runtime
75
75
  prerelease: false
76
76
  version_requirements: *id004
@@ -92,10 +92,14 @@ files:
92
92
  - README.md
93
93
  - Rakefile
94
94
  - Thorfile
95
- - Upgrade.markdown
95
+ - Upgrade.md
96
96
  - cucumber.yml
97
97
  - features/.nav
98
- - features/README.markdown
98
+ - features/Autotest.md
99
+ - features/Generators.md
100
+ - features/GettingStarted.md
101
+ - features/README.md
102
+ - features/Upgrade.md
99
103
  - features/controller_specs/README.md
100
104
  - features/controller_specs/anonymous_controller.feature
101
105
  - features/controller_specs/controller_spec.feature
@@ -104,15 +108,18 @@ files:
104
108
  - features/helper_specs/helper_spec.feature
105
109
  - features/mailer_specs/url_helpers.feature
106
110
  - features/matchers/README.md
107
- - features/matchers/be_routable_matcher.feature
108
111
  - features/matchers/new_record_matcher.feature
109
112
  - features/matchers/redirect_to_matcher.feature
110
113
  - features/matchers/render_template_matcher.feature
111
114
  - features/mocks/mock_model.feature
112
115
  - features/mocks/stub_model.feature
116
+ - features/model_specs/README.md
113
117
  - features/model_specs/errors_on.feature
114
118
  - features/model_specs/transactional_examples.feature
115
- - features/routing_specs/access_to_named_routes.feature
119
+ - features/routing_specs/README.md
120
+ - features/routing_specs/be_routable_matcher.feature
121
+ - features/routing_specs/named_routes.feature
122
+ - features/routing_specs/route_to_matcher.feature
116
123
  - features/step_definitions/model_steps.rb
117
124
  - features/step_definitions/rspec_steps.rb
118
125
  - features/support/env.rb
@@ -180,6 +187,7 @@ files:
180
187
  - rspec-rails.gemspec
181
188
  - spec/autotest/rails_rspec2_spec.rb
182
189
  - spec/rspec/rails/assertion_adapter_spec.rb
190
+ - spec/rspec/rails/configuration_spec.rb
183
191
  - spec/rspec/rails/deprecations_spec.rb
184
192
  - spec/rspec/rails/example/controller_example_group_spec.rb
185
193
  - spec/rspec/rails/example/helper_example_group_spec.rb
@@ -188,12 +196,12 @@ files:
188
196
  - spec/rspec/rails/example/request_example_group_spec.rb
189
197
  - spec/rspec/rails/example/routing_example_group_spec.rb
190
198
  - spec/rspec/rails/example/view_example_group_spec.rb
191
- - spec/rspec/rails/example/view_rendering_spec.rb
192
199
  - spec/rspec/rails/extensions/active_model/errors_on_spec.rb
193
200
  - spec/rspec/rails/extensions/active_record/records_spec.rb
194
201
  - spec/rspec/rails/fixture_support_spec.rb
195
202
  - spec/rspec/rails/matchers/be_a_new_spec.rb
196
203
  - spec/rspec/rails/matchers/be_new_record_spec.rb
204
+ - spec/rspec/rails/matchers/be_routable_spec.rb
197
205
  - spec/rspec/rails/matchers/errors_on_spec.rb
198
206
  - spec/rspec/rails/matchers/redirect_to_spec.rb
199
207
  - spec/rspec/rails/matchers/render_template_spec.rb
@@ -201,6 +209,7 @@ files:
201
209
  - spec/rspec/rails/mocks/ar_classes.rb
202
210
  - spec/rspec/rails/mocks/mock_model_spec.rb
203
211
  - spec/rspec/rails/mocks/stub_model_spec.rb
212
+ - spec/rspec/rails/view_rendering_spec.rb
204
213
  - spec/spec_helper.rb
205
214
  - spec/support/helpers.rb
206
215
  - specs.watchr
@@ -214,7 +223,7 @@ licenses: []
214
223
  post_install_message: |
215
224
  **************************************************
216
225
 
217
- Thank you for installing rspec-rails-2.3.1!
226
+ Thank you for installing rspec-rails-2.4.0!
218
227
 
219
228
  This version of rspec-rails only works with versions of rails >= 3.0.0
220
229
 
@@ -224,7 +233,7 @@ post_install_message: |
224
233
  can access its generators and rake tasks.
225
234
 
226
235
  group :development, :test do
227
- gem "rspec-rails", ">= 2.3.1"
236
+ gem "rspec-rails", ">= 2.4.0"
228
237
  end
229
238
 
230
239
  Be sure to run the following command in each of your Rails apps if you're
@@ -255,7 +264,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
255
264
  requirements:
256
265
  - - ">="
257
266
  - !ruby/object:Gem::Version
258
- hash: 2199888535887961048
267
+ hash: -2825298580951126615
259
268
  segments:
260
269
  - 0
261
270
  version: "0"
@@ -264,7 +273,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
264
273
  requirements:
265
274
  - - ">="
266
275
  - !ruby/object:Gem::Version
267
- hash: 2199888535887961048
276
+ hash: -2825298580951126615
268
277
  segments:
269
278
  - 0
270
279
  version: "0"
@@ -274,9 +283,13 @@ rubyforge_project: rspec
274
283
  rubygems_version: 1.3.7
275
284
  signing_key:
276
285
  specification_version: 3
277
- summary: rspec-rails-2.3.1
286
+ summary: rspec-rails-2.4.0
278
287
  test_files:
279
- - features/README.markdown
288
+ - features/Autotest.md
289
+ - features/Generators.md
290
+ - features/GettingStarted.md
291
+ - features/README.md
292
+ - features/Upgrade.md
280
293
  - features/controller_specs/README.md
281
294
  - features/controller_specs/anonymous_controller.feature
282
295
  - features/controller_specs/controller_spec.feature
@@ -285,15 +298,18 @@ test_files:
285
298
  - features/helper_specs/helper_spec.feature
286
299
  - features/mailer_specs/url_helpers.feature
287
300
  - features/matchers/README.md
288
- - features/matchers/be_routable_matcher.feature
289
301
  - features/matchers/new_record_matcher.feature
290
302
  - features/matchers/redirect_to_matcher.feature
291
303
  - features/matchers/render_template_matcher.feature
292
304
  - features/mocks/mock_model.feature
293
305
  - features/mocks/stub_model.feature
306
+ - features/model_specs/README.md
294
307
  - features/model_specs/errors_on.feature
295
308
  - features/model_specs/transactional_examples.feature
296
- - features/routing_specs/access_to_named_routes.feature
309
+ - features/routing_specs/README.md
310
+ - features/routing_specs/be_routable_matcher.feature
311
+ - features/routing_specs/named_routes.feature
312
+ - features/routing_specs/route_to_matcher.feature
297
313
  - features/step_definitions/model_steps.rb
298
314
  - features/step_definitions/rspec_steps.rb
299
315
  - features/support/env.rb
@@ -302,6 +318,7 @@ test_files:
302
318
  - features/view_specs/view_spec.feature
303
319
  - spec/autotest/rails_rspec2_spec.rb
304
320
  - spec/rspec/rails/assertion_adapter_spec.rb
321
+ - spec/rspec/rails/configuration_spec.rb
305
322
  - spec/rspec/rails/deprecations_spec.rb
306
323
  - spec/rspec/rails/example/controller_example_group_spec.rb
307
324
  - spec/rspec/rails/example/helper_example_group_spec.rb
@@ -310,12 +327,12 @@ test_files:
310
327
  - spec/rspec/rails/example/request_example_group_spec.rb
311
328
  - spec/rspec/rails/example/routing_example_group_spec.rb
312
329
  - spec/rspec/rails/example/view_example_group_spec.rb
313
- - spec/rspec/rails/example/view_rendering_spec.rb
314
330
  - spec/rspec/rails/extensions/active_model/errors_on_spec.rb
315
331
  - spec/rspec/rails/extensions/active_record/records_spec.rb
316
332
  - spec/rspec/rails/fixture_support_spec.rb
317
333
  - spec/rspec/rails/matchers/be_a_new_spec.rb
318
334
  - spec/rspec/rails/matchers/be_new_record_spec.rb
335
+ - spec/rspec/rails/matchers/be_routable_spec.rb
319
336
  - spec/rspec/rails/matchers/errors_on_spec.rb
320
337
  - spec/rspec/rails/matchers/redirect_to_spec.rb
321
338
  - spec/rspec/rails/matchers/render_template_spec.rb
@@ -323,5 +340,6 @@ test_files:
323
340
  - spec/rspec/rails/mocks/ar_classes.rb
324
341
  - spec/rspec/rails/mocks/mock_model_spec.rb
325
342
  - spec/rspec/rails/mocks/stub_model_spec.rb
343
+ - spec/rspec/rails/view_rendering_spec.rb
326
344
  - spec/spec_helper.rb
327
345
  - spec/support/helpers.rb
@@ -1,110 +0,0 @@
1
- require "spec_helper"
2
-
3
- module RSpec::Rails
4
- describe ViewRendering do
5
- it "doesn't render views by default" do
6
- rendering_views = nil
7
- group = RSpec::Core::ExampleGroup.describe do
8
- before(:each) do
9
- @controller = double("controller")
10
- @controller.stub_chain("class.respond_to?").and_return(true)
11
- end
12
- include ViewRendering
13
- it("does something") do
14
- rendering_views = render_views?
15
- end
16
- end
17
- group.run(double.as_null_object)
18
- rendering_views.should be_false
19
- end
20
-
21
- it "doesn't render views by default in a nested group" do
22
- rendering_views = nil
23
- group = RSpec::Core::ExampleGroup.describe do
24
- before(:each) do
25
- @controller = double("controller")
26
- @controller.stub_chain("class.respond_to?").and_return(true)
27
- end
28
- include ViewRendering
29
- describe "nested" do
30
- it("does something") do
31
- rendering_views = render_views?
32
- end
33
- end
34
- end
35
- group.run(double.as_null_object)
36
- rendering_views.should be_false
37
- end
38
-
39
- it "renders views if controller does not respond to view_paths (ActionController::Metal)" do
40
- rendering_views = false
41
- group = RSpec::Core::ExampleGroup.describe do
42
- before(:each) do
43
- @controller = double("controller")
44
- @controller.stub_chain("class.respond_to?").and_return(false)
45
- end
46
- include ViewRendering
47
- it("does something") do
48
- rendering_views = render_views?
49
- end
50
- end
51
- group.run(double.as_null_object)
52
- rendering_views.should be_true
53
- end
54
-
55
- it "renders views if told to" do
56
- rendering_views = false
57
- group = RSpec::Core::ExampleGroup.describe do
58
- before(:each) do
59
- @controller = double("controller")
60
- @controller.stub_chain("class.respond_to?").and_return(true)
61
- end
62
- include ViewRendering
63
- render_views
64
- it("does something") do
65
- rendering_views = render_views?
66
- end
67
- end
68
- group.run(double.as_null_object)
69
- rendering_views.should be_true
70
- end
71
-
72
- it "renders views if told to in a nested group" do
73
- rendering_views = nil
74
- group = RSpec::Core::ExampleGroup.describe do
75
- before(:each) do
76
- @controller = double("controller")
77
- @controller.stub_chain("class.respond_to?").and_return(true)
78
- end
79
- include ViewRendering
80
- describe "nested" do
81
- render_views
82
- it("does something") do
83
- rendering_views = render_views?
84
- end
85
- end
86
- end
87
- group.run(double.as_null_object)
88
- rendering_views.should be_true
89
- end
90
-
91
- it "renders views in a nested group if told to in an outer group" do
92
- rendering_views = nil
93
- group = RSpec::Core::ExampleGroup.describe do
94
- before(:each) do
95
- @controller = double("controller")
96
- @controller.stub_chain("class.respond_to?").and_return(true)
97
- end
98
- include ViewRendering
99
- render_views
100
- describe "nested" do
101
- it("does something") do
102
- rendering_views = render_views?
103
- end
104
- end
105
- end
106
- group.run(double.as_null_object)
107
- rendering_views.should be_true
108
- end
109
- end
110
- end