rspec-rails 2.5.0 → 2.6.0.rc2

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.
Files changed (70) hide show
  1. data/.gitignore +9 -4
  2. data/.travis.yml +11 -0
  3. data/README_DEV.md +43 -0
  4. data/Rakefile +54 -27
  5. data/Thorfile +6 -21
  6. data/features/Autotest.md +7 -0
  7. data/features/Changelog.md +17 -2
  8. data/features/Upgrade.md +13 -12
  9. data/features/controller_specs/README.md +18 -10
  10. data/features/controller_specs/anonymous_controller.feature +5 -5
  11. data/features/controller_specs/controller_spec.feature +1 -1
  12. data/features/controller_specs/isolation_from_views.feature +2 -2
  13. data/features/controller_specs/render_views.feature +3 -3
  14. data/features/helper_specs/helper_spec.feature +3 -3
  15. data/features/mailer_specs/url_helpers.feature +2 -2
  16. data/features/matchers/new_record_matcher.feature +2 -2
  17. data/features/matchers/redirect_to_matcher.feature +1 -1
  18. data/features/matchers/render_template_matcher.feature +1 -1
  19. data/features/mocks/mock_model.feature +21 -5
  20. data/features/mocks/stub_model.feature +2 -2
  21. data/features/model_specs/errors_on.feature +1 -1
  22. data/features/model_specs/transactional_examples.feature +10 -5
  23. data/features/routing_specs/README.md +2 -1
  24. data/features/routing_specs/be_routable_matcher.feature +5 -5
  25. data/features/routing_specs/named_routes.feature +1 -1
  26. data/features/routing_specs/route_to_matcher.feature +28 -8
  27. data/features/step_definitions/additional_cli_steps.rb +1 -1
  28. data/features/support/env.rb +7 -18
  29. data/features/view_specs/inferred_controller_path.feature +3 -3
  30. data/features/view_specs/stub_template.feature +2 -2
  31. data/features/view_specs/view_spec.feature +8 -8
  32. data/gemfiles/base.rb +45 -0
  33. data/gemfiles/rails-3-0-stable +7 -0
  34. data/gemfiles/rails-3.0.0 +5 -0
  35. data/gemfiles/rails-3.0.1 +5 -0
  36. data/gemfiles/rails-3.0.2 +5 -0
  37. data/gemfiles/rails-3.0.3 +5 -0
  38. data/gemfiles/rails-3.0.4 +5 -0
  39. data/gemfiles/rails-3.0.5 +5 -0
  40. data/gemfiles/rails-3.0.6 +5 -0
  41. data/gemfiles/rails-master +7 -0
  42. data/lib/generators/rspec/scaffold/scaffold_generator.rb +20 -2
  43. data/lib/generators/rspec/scaffold/templates/controller_spec.rb +23 -23
  44. data/lib/generators/rspec/scaffold/templates/edit_spec.rb +7 -7
  45. data/lib/generators/rspec/scaffold/templates/index_spec.rb +2 -2
  46. data/lib/generators/rspec/scaffold/templates/new_spec.rb +5 -5
  47. data/lib/generators/rspec/scaffold/templates/routing_spec.rb +14 -14
  48. data/lib/generators/rspec/scaffold/templates/show_spec.rb +2 -2
  49. data/lib/rspec/rails/example/controller_example_group.rb +9 -1
  50. data/lib/rspec/rails/example/routing_example_group.rb +1 -0
  51. data/lib/rspec/rails/matchers/routing_matchers.rb +23 -2
  52. data/lib/rspec/rails/mocks.rb +3 -0
  53. data/lib/rspec/rails/tasks/rspec.rake +1 -1
  54. data/lib/rspec/rails/version.rb +1 -1
  55. data/rspec-rails.gemspec +5 -36
  56. data/spec/autotest/rails_rspec2_spec.rb +2 -7
  57. data/spec/rspec/rails/example/controller_example_group_spec.rb +25 -0
  58. data/spec/rspec/rails/matchers/route_to_spec.rb +15 -0
  59. data/spec/rspec/rails/mocks/ar_classes.rb +5 -2
  60. data/spec/rspec/rails/view_rendering_spec.rb +0 -6
  61. data/templates/generate_stuff.rb +2 -1
  62. data/templates/run_specs.rb +2 -2
  63. metadata +54 -77
  64. data/Gemfile-3-0-stable +0 -6
  65. data/Gemfile-3.0.0 +0 -3
  66. data/Gemfile-3.0.3 +0 -3
  67. data/Gemfile-base +0 -38
  68. data/Gemfile-master +0 -5
  69. data/specs.watchr +0 -59
  70. data/templates/Gemfile-base +0 -17
@@ -25,7 +25,7 @@ Feature: helper spec
25
25
  end
26
26
  end
27
27
  """
28
- When I run "rspec spec/helpers/application_helper_spec.rb"
28
+ When I run `rspec spec/helpers/application_helper_spec.rb`
29
29
  Then the examples should all pass
30
30
 
31
31
  Scenario: helper method that accesses an instance variable
@@ -50,7 +50,7 @@ Feature: helper spec
50
50
  end
51
51
  end
52
52
  """
53
- When I run "rspec spec/helpers/application_helper_spec.rb"
53
+ When I run `rspec spec/helpers/application_helper_spec.rb`
54
54
  Then the examples should all pass
55
55
 
56
56
  Scenario: application helper is included in helper object
@@ -83,5 +83,5 @@ Feature: helper spec
83
83
  end
84
84
  end
85
85
  """
86
- When I run "rspec spec/helpers/widgets_helper_spec.rb"
86
+ When I run `rspec spec/helpers/widgets_helper_spec.rb`
87
87
  Then the examples should all pass
@@ -15,7 +15,7 @@ Feature: URL helpers in mailer examples
15
15
  end
16
16
  end
17
17
  """
18
- When I run "rspec spec"
18
+ When I run `rspec spec`
19
19
  Then the examples should all pass
20
20
 
21
21
  Scenario: using URL helpers without default options
@@ -34,5 +34,5 @@ Feature: URL helpers in mailer examples
34
34
  end
35
35
  end
36
36
  """
37
- When I run "rspec spec"
37
+ When I run `rspec spec`
38
38
  Then the examples should all pass
@@ -24,7 +24,7 @@ Feature: be_a_new matcher
24
24
  end
25
25
  end
26
26
  """
27
- When I run "rspec spec/models/widget_spec.rb"
27
+ When I run `rspec spec/models/widget_spec.rb`
28
28
  Then the examples should all pass
29
29
 
30
30
  Scenario: example spec using be_a_new.with
@@ -66,5 +66,5 @@ Feature: be_a_new matcher
66
66
  end
67
67
  end
68
68
  """
69
- When I run "rspec spec/models/widget_spec.rb"
69
+ When I run `rspec spec/models/widget_spec.rb`
70
70
  Then the examples should all pass
@@ -36,5 +36,5 @@ Feature: redirect_to matcher
36
36
  end
37
37
  end
38
38
  """
39
- When I run "rspec spec/controllers/widgets_controller_spec.rb"
39
+ When I run `rspec spec/controllers/widgets_controller_spec.rb`
40
40
  Then the examples should all pass
@@ -21,5 +21,5 @@ Feature: render_template matcher
21
21
  end
22
22
  end
23
23
  """
24
- When I run "rspec spec/controllers/gadgets_spec.rb"
24
+ When I run `rspec spec/controllers/gadgets_spec.rb`
25
25
  Then the examples should all pass
@@ -36,7 +36,7 @@ Feature: mock_model
36
36
  end
37
37
  end
38
38
  """
39
- When I run "rspec spec/models/car_spec.rb"
39
+ When I run `rspec spec/models/car_spec.rb`
40
40
  Then the examples should all pass
41
41
 
42
42
  Scenario: passing a string that represents an existing constant
@@ -51,7 +51,7 @@ Feature: mock_model
51
51
  end
52
52
  end
53
53
  """
54
- When I run "rspec spec/models/widget_spec.rb"
54
+ When I run `rspec spec/models/widget_spec.rb`
55
55
  Then the examples should all pass
56
56
 
57
57
  Scenario: passing a class that does not extend ActiveModel::Naming
@@ -65,7 +65,7 @@ Feature: mock_model
65
65
  end
66
66
  end
67
67
  """
68
- When I run "rspec spec/models/string_spec.rb"
68
+ When I run `rspec spec/models/string_spec.rb`
69
69
  Then the examples should all pass
70
70
 
71
71
  Scenario: passing an Active Record constant
@@ -94,7 +94,7 @@ Feature: mock_model
94
94
  end
95
95
  end
96
96
  """
97
- When I run "rspec spec/models/widget_spec.rb"
97
+ When I run `rspec spec/models/widget_spec.rb`
98
98
  Then the examples should all pass
99
99
 
100
100
  Scenario: passing an Active Record constant with method stubs
@@ -127,5 +127,21 @@ Feature: mock_model
127
127
  end
128
128
  end
129
129
  """
130
- When I run "rspec spec/models/widget_spec.rb"
130
+ When I run `rspec spec/models/widget_spec.rb`
131
+ Then the examples should all pass
132
+
133
+ Scenario: mock_model outside rails
134
+ Given a file named "mock_model_outside_rails_spec.rb" with:
135
+ """
136
+ require 'rspec/rails/mocks'
137
+
138
+ describe "Foo" do
139
+ it "is mockable" do
140
+ foo = mock_model("Foo")
141
+ foo.id.should eq(1001)
142
+ foo.to_param.should eq("1001")
143
+ end
144
+ end
145
+ """
146
+ When I run `rspec mock_model_outside_rails_spec.rb`
131
147
  Then the examples should all pass
@@ -34,7 +34,7 @@ Feature: stub_model
34
34
  end
35
35
  end
36
36
  """
37
- When I run "rspec spec/models/widget_spec.rb"
37
+ When I run `rspec spec/models/widget_spec.rb`
38
38
  Then the examples should all pass
39
39
 
40
40
  Scenario: passing an Active Record constant with a block of stubs
@@ -54,5 +54,5 @@ Feature: stub_model
54
54
  end
55
55
  end
56
56
  """
57
- When I run "rspec spec/models/widget_spec.rb"
57
+ When I run `rspec spec/models/widget_spec.rb`
58
58
  Then the examples should all pass
@@ -28,5 +28,5 @@ Feature: errors_on
28
28
  end
29
29
  end
30
30
  """
31
- When I run "rspec spec/models/widget_spec.rb"
31
+ When I run `rspec spec/models/widget_spec.rb`
32
32
  Then the examples should all pass
@@ -1,5 +1,10 @@
1
1
  Feature: transactional examples
2
2
 
3
+ By default rspec executes each individual example in a transaction.
4
+
5
+ You can also explicitly enable/disable transactions the configuration
6
+ property 'use_transactional_examples'.
7
+
3
8
  Scenario: run in transactions (default)
4
9
  Given a file named "spec/models/widget_spec.rb" with:
5
10
  """
@@ -20,7 +25,7 @@ Feature: transactional examples
20
25
  end
21
26
  end
22
27
  """
23
- When I run "rspec spec/models/widget_spec.rb"
28
+ When I run `rspec spec/models/widget_spec.rb`
24
29
  Then the examples should all pass
25
30
 
26
31
  Scenario: run in transactions (explicit)
@@ -47,7 +52,7 @@ Feature: transactional examples
47
52
  end
48
53
  end
49
54
  """
50
- When I run "rspec spec/models/widget_spec.rb"
55
+ When I run `rspec spec/models/widget_spec.rb`
51
56
  Then the examples should all pass
52
57
 
53
58
  Scenario: disable transactions (explicit)
@@ -76,7 +81,7 @@ Feature: transactional examples
76
81
  after(:all) { Widget.destroy_all }
77
82
  end
78
83
  """
79
- When I run "rspec spec/models/widget_spec.rb"
84
+ When I run `rspec spec/models/widget_spec.rb`
80
85
  Then the examples should all pass
81
86
 
82
87
  Scenario: run in transactions with fixture
@@ -84,7 +89,7 @@ Feature: transactional examples
84
89
  """
85
90
  require "spec_helper"
86
91
 
87
- describe Thing do
92
+ describe Thing do
88
93
  fixtures :things
89
94
  it "fixture method defined" do
90
95
  things(:one)
@@ -96,7 +101,7 @@ Feature: transactional examples
96
101
  one:
97
102
  name: MyString
98
103
  """
99
- When I run "rspec spec/models/thing_spec.rb"
104
+ When I run `rspec spec/models/thing_spec.rb`
100
105
  Then the examples should all pass
101
106
 
102
107
 
@@ -1,4 +1,5 @@
1
- Routing specs live in the `spec/routing` directory.
1
+ Routing specs live in the `spec/routing` directory, or any example group with
2
+ `:type => :routing`.
2
3
 
3
4
  Simple apps with nothing but standard RESTful routes won't get much value from
4
5
  routing specs, but they can provide significant value when used to specify
@@ -16,7 +16,7 @@ Feature: be_routable matcher
16
16
  end
17
17
  """
18
18
 
19
- When I run "rspec spec/routing/widgets_routing_spec.rb"
19
+ When I run `rspec spec/routing/widgets_routing_spec.rb`
20
20
  Then the output should contain "1 example, 1 failure"
21
21
 
22
22
  Scenario: specify non-routeable route should not be routable (passes)
@@ -31,7 +31,7 @@ Feature: be_routable matcher
31
31
  end
32
32
  """
33
33
 
34
- When I run "rspec spec/routing/widgets_routing_spec.rb"
34
+ When I run `rspec spec/routing/widgets_routing_spec.rb`
35
35
  Then the examples should all pass
36
36
 
37
37
  Scenario: specify routeable route should be routable (passes)
@@ -46,7 +46,7 @@ Feature: be_routable matcher
46
46
  end
47
47
  """
48
48
 
49
- When I run "rspec spec/routing/widgets_routing_spec.rb"
49
+ When I run `rspec spec/routing/widgets_routing_spec.rb`
50
50
  Then the examples should all pass
51
51
 
52
52
  Scenario: specify non-routeable route should be routable (fails)
@@ -61,7 +61,7 @@ Feature: be_routable matcher
61
61
  end
62
62
  """
63
63
 
64
- When I run "rspec spec/routing/widgets_routing_spec.rb"
64
+ When I run `rspec spec/routing/widgets_routing_spec.rb`
65
65
  Then the output should contain "1 example, 1 failure"
66
66
 
67
67
  Scenario: be_routable in a controller spec
@@ -76,5 +76,5 @@ Feature: be_routable matcher
76
76
  end
77
77
  """
78
78
 
79
- When I run "rspec spec/controllers/widgets_controller_spec.rb"
79
+ When I run `rspec spec/controllers/widgets_controller_spec.rb`
80
80
  Then the examples should all pass
@@ -14,5 +14,5 @@ Feature: named routes
14
14
  end
15
15
  end
16
16
  """
17
- When I run "rspec spec"
17
+ When I run `rspec spec`
18
18
  Then the examples should all pass
@@ -1,11 +1,32 @@
1
1
  Feature: route_to matcher
2
2
 
3
- The `route_to` matcher specifies that a request (verb + uri) is routable. It
4
- is most valuable when specifying routes other than standard RESTful routes.
3
+ The `route_to` matcher specifies that a request (verb + path) is routable.
4
+ It is most valuable when specifying routes other than standard RESTful
5
+ routes.
6
+
7
+ get("/").should route_to("welcome#index")
8
+
9
+ or
5
10
 
6
11
  { :get => "/" }.should route_to(:controller => "welcome")
7
12
 
8
- Scenario: passing route spec
13
+ Scenario: passing route spec with shortcut syntax
14
+ Given a file named "spec/routing/widgets_routing_spec.rb" with:
15
+ """
16
+ require "spec_helper"
17
+
18
+ describe "routes for Widgets" do
19
+ it "routes /widgets to the widgets controller" do
20
+ get("/widgets").
21
+ should route_to("widgets#index")
22
+ end
23
+ end
24
+ """
25
+
26
+ When I run `rspec spec/routing/widgets_routing_spec.rb`
27
+ Then the examples should all pass
28
+
29
+ Scenario: passing route spec with verbose syntax
9
30
  Given a file named "spec/routing/widgets_routing_spec.rb" with:
10
31
  """
11
32
  require "spec_helper"
@@ -18,7 +39,7 @@ Feature: route_to matcher
18
39
  end
19
40
  """
20
41
 
21
- When I run "rspec spec/routing/widgets_routing_spec.rb"
42
+ When I run `rspec spec/routing/widgets_routing_spec.rb`
22
43
  Then the examples should all pass
23
44
 
24
45
  Scenario: route spec for a route that doesn't exist (fails)
@@ -28,11 +49,10 @@ Feature: route_to matcher
28
49
 
29
50
  describe "routes for Widgets" do
30
51
  it "routes /widgets/foo to the /foo action" do
31
- { :get => "/widgets/foo" }.
32
- should route_to(:controller => "widgets", :action => "foo")
52
+ get("/widgets/foo").should route_to("widgets#foo")
33
53
  end
34
54
  end
35
55
  """
36
56
 
37
- When I run "rspec spec/routing/widgets_routing_spec.rb"
38
- Then the output should contain "1 example, 1 failure"
57
+ When I run `rspec spec/routing/widgets_routing_spec.rb`
58
+ Then the output should contain "1 failure"
@@ -1,4 +1,4 @@
1
1
  Then /^the example(s)? should( all)? pass$/ do |_, _|
2
- Then %q{the exit status should be 0}
3
2
  Then %q{the output should contain "0 failures"}
3
+ Then %q{the exit status should be 0}
4
4
  end
@@ -1,20 +1,16 @@
1
- require 'aruba'
1
+ require 'aruba/cucumber'
2
2
  require 'webrat'
3
3
 
4
- module Aruba::Api
5
- alias_method :orig_run, :run
6
-
7
- def run(cmd, fail_on_error=false)
8
- if cmd =~ /^rspec/
9
- orig_run("bundle exec #{cmd}", fail_on_error)
10
- else
11
- orig_run(cmd, fail_on_error)
12
- end
4
+ module ArubaExt
5
+ def run(cmd)
6
+ super(cmd =~ /^rspec/ ? "bundle exec #{cmd}" : cmd)
13
7
  end
14
8
  end
15
9
 
10
+ World(ArubaExt)
11
+
16
12
  Before do
17
- unset_bundler_env_vars
13
+ @aruba_timeout_seconds = 10
18
14
  end
19
15
 
20
16
  unless File.directory?('./tmp/example_app')
@@ -41,7 +37,6 @@ def copy(file_or_dir)
41
37
  system "cp -r #{source} #{target}"
42
38
  end
43
39
 
44
-
45
40
  Before do
46
41
  steps %Q{
47
42
  Given a directory named "spec"
@@ -56,10 +51,4 @@ Before do
56
51
  ["spec/spec_helper.rb"].each do |file_or_dir|
57
52
  write_symlink("tmp/example_app/#{file_or_dir}")
58
53
  end
59
-
60
- end
61
-
62
- Around do |scenario, block|
63
- Bundler.with_clean_env &block
64
54
  end
65
-
@@ -11,7 +11,7 @@ Feature: view spec infers controller path and action
11
11
  end
12
12
  end
13
13
  """
14
- When I run "rspec spec/views"
14
+ When I run `rspec spec/views`
15
15
  Then the examples should all pass
16
16
 
17
17
  Scenario: infer action
@@ -25,7 +25,7 @@ Feature: view spec infers controller path and action
25
25
  end
26
26
  end
27
27
  """
28
- When I run "rspec spec/views"
28
+ When I run `rspec spec/views`
29
29
  Then the examples should all pass
30
30
 
31
31
  Scenario: do not infer action in a partial
@@ -39,6 +39,6 @@ Feature: view spec infers controller path and action
39
39
  end
40
40
  end
41
41
  """
42
- When I run "rspec spec/views"
42
+ When I run `rspec spec/views`
43
43
  Then the examples should all pass
44
44
 
@@ -26,7 +26,7 @@ Feature: stub template
26
26
  """
27
27
  <%= render :partial => "gadget", :collection => @gadgets %>
28
28
  """
29
- When I run "rspec spec/views/gadgets/list.html.erb_spec.rb"
29
+ When I run `rspec spec/views/gadgets/list.html.erb_spec.rb`
30
30
  Then the examples should all pass
31
31
 
32
32
  Scenario: stub template that exists
@@ -46,6 +46,6 @@ Feature: stub template
46
46
  end
47
47
  end
48
48
  """
49
- When I run "rspec spec/views/gadgets/edit.html.erb_spec.rb"
49
+ When I run `rspec spec/views/gadgets/edit.html.erb_spec.rb`
50
50
  Then the examples should all pass
51
51
 
@@ -21,7 +21,7 @@ Feature: view spec
21
21
  end
22
22
  end
23
23
  """
24
- When I run "rspec spec/views"
24
+ When I run `rspec spec/views`
25
25
  Then the examples should all pass
26
26
 
27
27
  Scenario: passing spec with before and nesting
@@ -48,7 +48,7 @@ Feature: view spec
48
48
  end
49
49
  end
50
50
  """
51
- When I run "rspec spec/views"
51
+ When I run `rspec spec/views`
52
52
  Then the examples should all pass
53
53
 
54
54
  Scenario: passing spec with explicit template rendering
@@ -70,7 +70,7 @@ Feature: view spec
70
70
  """
71
71
  <h2><%= @widget.name %></h2>
72
72
  """
73
- When I run "rspec spec/views"
73
+ When I run `rspec spec/views`
74
74
  Then the examples should all pass
75
75
 
76
76
  Scenario: passing spec with rendering of locals in a partial
@@ -92,7 +92,7 @@ Feature: view spec
92
92
  """
93
93
  <h3><%= widget.name %></h3>
94
94
  """
95
- When I run "rspec spec/views"
95
+ When I run `rspec spec/views`
96
96
  Then the examples should all pass
97
97
 
98
98
  Scenario: passing spec with rendering of locals in an implicit partial
@@ -114,7 +114,7 @@ Feature: view spec
114
114
  """
115
115
  <h3><%= widget.name %></h3>
116
116
  """
117
- When I run "rspec spec/views"
117
+ When I run `rspec spec/views`
118
118
  Then the examples should all pass
119
119
 
120
120
  Scenario: passing spec with rendering of text
@@ -131,7 +131,7 @@ Feature: view spec
131
131
  end
132
132
  end
133
133
  """
134
- When I run "rspec spec/views"
134
+ When I run `rspec spec/views`
135
135
  Then the examples should all pass
136
136
 
137
137
  Scenario: passing spec with rendering of Prototype helper update
@@ -150,7 +150,7 @@ Feature: view spec
150
150
  end
151
151
  end
152
152
  """
153
- When I run "rspec spec/views"
153
+ When I run `rspec spec/views`
154
154
  Then the examples should all pass
155
155
 
156
156
  Scenario: spec with view that accesses helper_method helpers
@@ -181,5 +181,5 @@ Feature: view spec
181
181
  end
182
182
  end
183
183
  """
184
- When I run "rspec spec/views/secrets"
184
+ When I run `rspec spec/views/secrets`
185
185
  Then the examples should all pass