rspec-rails 2.14.2 → 2.99.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (102) hide show
  1. checksums.yaml +14 -6
  2. data/Changelog.md +8 -10
  3. data/features/Autotest.md +24 -0
  4. data/features/Generators.md +24 -0
  5. data/features/GettingStarted.md +84 -0
  6. data/features/README.md +56 -0
  7. data/features/RailsVersions.md +4 -0
  8. data/features/Transactions.md +84 -0
  9. data/features/Upgrade.md +121 -0
  10. data/features/controller_specs/Cookies.md +57 -0
  11. data/features/controller_specs/README.md +45 -0
  12. data/features/controller_specs/anonymous_controller.feature +378 -0
  13. data/features/controller_specs/bypass_rescue.feature +75 -0
  14. data/features/controller_specs/controller_spec.feature +58 -0
  15. data/features/controller_specs/engine_routes.feature +51 -0
  16. data/features/controller_specs/isolation_from_views.feature +87 -0
  17. data/features/controller_specs/render_views.feature +114 -0
  18. data/features/feature_specs/feature_spec.feature +34 -0
  19. data/features/helper_specs/helper_spec.feature +122 -0
  20. data/features/mailer_specs/url_helpers.feature +38 -0
  21. data/features/matchers/README.md +18 -0
  22. data/features/matchers/new_record_matcher.feature +41 -0
  23. data/features/matchers/redirect_to_matcher.feature +40 -0
  24. data/features/matchers/relation_match_array.feature +27 -0
  25. data/features/matchers/render_template_matcher.feature +49 -0
  26. data/features/mocks/mock_model.feature +147 -0
  27. data/features/mocks/stub_model.feature +58 -0
  28. data/features/model_specs/README.md +21 -0
  29. data/features/model_specs/errors_on.feature +51 -0
  30. data/features/model_specs/records.feature +27 -0
  31. data/features/model_specs/transactional_examples.feature +109 -0
  32. data/features/request_specs/request_spec.feature +49 -0
  33. data/features/routing_specs/README.md +16 -0
  34. data/features/routing_specs/be_routable_matcher.feature +80 -0
  35. data/features/routing_specs/engine_routes.feature +38 -0
  36. data/features/routing_specs/named_routes.feature +18 -0
  37. data/features/routing_specs/route_to_matcher.feature +90 -0
  38. data/features/step_definitions/additional_cli_steps.rb +4 -0
  39. data/features/step_definitions/model_steps.rb +3 -0
  40. data/features/support/env.rb +53 -0
  41. data/features/support/rails_versions.rb +4 -0
  42. data/features/support/rubinius.rb +6 -0
  43. data/features/view_specs/inferred_controller_path.feature +45 -0
  44. data/features/view_specs/stub_template.feature +51 -0
  45. data/features/view_specs/view_spec.feature +206 -0
  46. data/lib/autotest/rails_rspec2.rb +81 -76
  47. data/lib/generators/rspec/install/templates/spec/spec_helper.rb.tt +1 -6
  48. data/lib/rspec/rails/adapters.rb +5 -12
  49. data/lib/rspec/rails/example/controller_example_group.rb +1 -2
  50. data/lib/rspec/rails/example/helper_example_group.rb +3 -3
  51. data/lib/rspec/rails/example/view_example_group.rb +4 -7
  52. data/lib/rspec/rails/matchers/have_extension.rb +0 -1
  53. data/lib/rspec/rails/matchers/routing_matchers.rb +0 -4
  54. data/lib/rspec/rails/mocks.rb +0 -26
  55. data/lib/rspec/rails/tasks/rspec.rake +5 -12
  56. data/lib/rspec/rails/version.rb +1 -1
  57. data/spec/autotest/rails_rspec2_spec.rb +36 -0
  58. data/spec/generators/rspec/controller/controller_generator_spec.rb +97 -0
  59. data/spec/generators/rspec/helper/helper_generator_spec.rb +30 -0
  60. data/spec/generators/rspec/install/install_generator_spec.rb +30 -0
  61. data/spec/generators/rspec/integration/integration_generator_spec.rb +44 -0
  62. data/spec/generators/rspec/mailer/mailer_generator_spec.rb +48 -0
  63. data/spec/generators/rspec/model/model_generator_spec.rb +52 -0
  64. data/spec/generators/rspec/observer/observer_generator_spec.rb +21 -0
  65. data/spec/generators/rspec/scaffold/scaffold_generator_spec.rb +138 -0
  66. data/spec/generators/rspec/view/view_generator_spec.rb +41 -0
  67. data/spec/rspec/rails/assertion_adapter_spec.rb +28 -0
  68. data/spec/rspec/rails/assertion_delegator_spec.rb +43 -0
  69. data/spec/rspec/rails/configuration_spec.rb +26 -0
  70. data/spec/rspec/rails/deprecations_spec.rb +18 -0
  71. data/spec/rspec/rails/example/controller_example_group_spec.rb +100 -0
  72. data/spec/rspec/rails/example/feature_example_group_spec.rb +56 -0
  73. data/spec/rspec/rails/example/helper_example_group_spec.rb +66 -0
  74. data/spec/rspec/rails/example/mailer_example_group_spec.rb +21 -0
  75. data/spec/rspec/rails/example/model_example_group_spec.rb +15 -0
  76. data/spec/rspec/rails/example/request_example_group_spec.rb +17 -0
  77. data/spec/rspec/rails/example/routing_example_group_spec.rb +32 -0
  78. data/spec/rspec/rails/example/view_example_group_spec.rb +220 -0
  79. data/spec/rspec/rails/extensions/active_model/errors_on_spec.rb +23 -0
  80. data/spec/rspec/rails/extensions/active_record/base_spec.rb +42 -0
  81. data/spec/rspec/rails/fixture_support_spec.rb +17 -0
  82. data/spec/rspec/rails/matchers/be_a_new_spec.rb +142 -0
  83. data/spec/rspec/rails/matchers/be_new_record_spec.rb +33 -0
  84. data/spec/rspec/rails/matchers/be_routable_spec.rb +41 -0
  85. data/spec/rspec/rails/matchers/be_valid_spec.rb +44 -0
  86. data/spec/rspec/rails/matchers/errors_on_spec.rb +38 -0
  87. data/spec/rspec/rails/matchers/has_spec.rb +29 -0
  88. data/spec/rspec/rails/matchers/have_rendered_spec.rb +93 -0
  89. data/spec/rspec/rails/matchers/redirect_to_spec.rb +80 -0
  90. data/spec/rspec/rails/matchers/relation_match_array_spec.rb +31 -0
  91. data/spec/rspec/rails/matchers/route_to_spec.rb +151 -0
  92. data/spec/rspec/rails/minitest_lifecycle_adapter_spec.rb +22 -0
  93. data/spec/rspec/rails/mocks/mock_model_spec.rb +378 -0
  94. data/spec/rspec/rails/mocks/stub_model_spec.rb +154 -0
  95. data/spec/rspec/rails/setup_and_teardown_adapter_spec.rb +32 -0
  96. data/spec/rspec/rails/view_rendering_spec.rb +111 -0
  97. data/spec/spec_helper.rb +31 -0
  98. data/spec/support/ar_classes.rb +42 -0
  99. data/spec/support/helpers.rb +20 -0
  100. data/spec/support/matchers.rb +9 -0
  101. data/spec/support/null_object.rb +6 -0
  102. metadata +223 -47
@@ -0,0 +1,4 @@
1
+ Then /^the example(s)? should( all)? pass$/ do |_, _|
2
+ step %q{the output should contain "0 failures"}
3
+ step %q{the exit status should be 0}
4
+ end
@@ -0,0 +1,3 @@
1
+ Given /a (\w+) model/ do |model_class_name|
2
+ puts eval(model_class_name)
3
+ end
@@ -0,0 +1,53 @@
1
+ require 'aruba/cucumber'
2
+
3
+ module ArubaExt
4
+ def run(cmd)
5
+ super(cmd =~ /^rspec/ ? "bin/#{cmd}" : cmd)
6
+ end
7
+ end
8
+
9
+ World(ArubaExt)
10
+
11
+ Before do
12
+ @aruba_timeout_seconds = 30
13
+ end
14
+
15
+ unless File.directory?('./tmp/example_app')
16
+ system "rake generate:app generate:stuff"
17
+ end
18
+
19
+ def aruba_path(file_or_dir)
20
+ File.expand_path("../../../#{file_or_dir.sub('example_app','aruba')}", __FILE__)
21
+ end
22
+
23
+ def example_app_path(file_or_dir)
24
+ File.expand_path("../../../#{file_or_dir}", __FILE__)
25
+ end
26
+
27
+ def write_symlink(file_or_dir)
28
+ source = example_app_path(file_or_dir)
29
+ target = aruba_path(file_or_dir)
30
+ system "ln -s #{source} #{target}"
31
+ end
32
+
33
+ def copy(file_or_dir)
34
+ source = example_app_path(file_or_dir)
35
+ target = aruba_path(file_or_dir)
36
+ system "cp -r #{source} #{target}"
37
+ end
38
+
39
+ Before do
40
+ steps %Q{
41
+ Given a directory named "spec"
42
+ }
43
+
44
+ Dir['tmp/example_app/*'].each do |file_or_dir|
45
+ if !(file_or_dir =~ /spec$/)
46
+ write_symlink(file_or_dir)
47
+ end
48
+ end
49
+
50
+ ["spec/spec_helper.rb"].each do |file_or_dir|
51
+ write_symlink("tmp/example_app/#{file_or_dir}")
52
+ end
53
+ end
@@ -0,0 +1,4 @@
1
+ Around "@unsupported-on-rails-3-0" do |scenario, block|
2
+ require 'rails'
3
+ block.call unless ::Rails.version.to_s.start_with?("3.0")
4
+ end
@@ -0,0 +1,6 @@
1
+ # Required until https://github.com/rubinius/rubinius/issues/2430 is resolved
2
+ ENV['RBXOPT'] = "#{ENV["RBXOPT"]} -Xcompiler.no_rbc"
3
+
4
+ Around "@unsupported-on-rbx" do |scenario, block|
5
+ block.call unless defined?(Rubinius)
6
+ end
@@ -0,0 +1,45 @@
1
+ Feature: view spec infers controller path and action
2
+
3
+ Scenario: infer controller path
4
+ Given a file named "spec/views/widgets/new.html.erb_spec.rb" with:
5
+ """ruby
6
+ require "spec_helper"
7
+
8
+ describe "widgets/new" do
9
+ it "infers the controller path" do
10
+ expect(controller.request.path_parameters[:controller]).to eq("widgets")
11
+ expect(controller.controller_path).to eq("widgets")
12
+ end
13
+ end
14
+ """
15
+ When I run `rspec spec/views`
16
+ Then the examples should all pass
17
+
18
+ Scenario: infer action
19
+ Given a file named "spec/views/widgets/new.html.erb_spec.rb" with:
20
+ """ruby
21
+ require "spec_helper"
22
+
23
+ describe "widgets/new" do
24
+ it "infers the controller path" do
25
+ expect(controller.request.path_parameters[:action]).to eq("new")
26
+ end
27
+ end
28
+ """
29
+ When I run `rspec spec/views`
30
+ Then the examples should all pass
31
+
32
+ Scenario: do not infer action in a partial
33
+ Given a file named "spec/views/widgets/_form.html.erb_spec.rb" with:
34
+ """ruby
35
+ require "spec_helper"
36
+
37
+ describe "widgets/_form" do
38
+ it "includes a link to new" do
39
+ expect(controller.request.path_parameters[:action]).to be_nil
40
+ end
41
+ end
42
+ """
43
+ When I run `rspec spec/views`
44
+ Then the examples should all pass
45
+
@@ -0,0 +1,51 @@
1
+ Feature: stub template
2
+
3
+ In order to isolate view specs from the partials rendered by the primary
4
+ view, rspec-rails (since 2.2) provides the stub_template method.
5
+
6
+ Scenario: stub template that does not exist
7
+ Given a file named "spec/views/gadgets/list.html.erb_spec.rb" with:
8
+ """ruby
9
+ require "spec_helper"
10
+
11
+ describe "gadgets/list" do
12
+ it "renders the gadget partial for each gadget" do
13
+ assign(:gadgets, [
14
+ mock_model(Gadget, :id => 1, :name => "First"),
15
+ mock_model(Gadget, :id => 2, :name => "Second")
16
+ ])
17
+ stub_template "gadgets/_gadget.html.erb" => "<%= gadget.name %><br/>"
18
+ render
19
+ expect(rendered).to match /First/
20
+ expect(rendered).to match /Second/
21
+ end
22
+ end
23
+ """
24
+
25
+ And a file named "app/views/gadgets/list.html.erb" with:
26
+ """
27
+ <%= render :partial => "gadget", :collection => @gadgets %>
28
+ """
29
+ When I run `rspec spec/views/gadgets/list.html.erb_spec.rb`
30
+ Then the examples should all pass
31
+
32
+ Scenario: stub template that exists
33
+ Given a file named "spec/views/gadgets/edit.html.erb_spec.rb" with:
34
+ """ruby
35
+ require "spec_helper"
36
+
37
+ describe "gadgets/edit" do
38
+ before(:each) do
39
+ @gadget = assign(:gadget, stub_model(Gadget))
40
+ end
41
+
42
+ it "renders the form partial" do
43
+ stub_template "gadgets/_form.html.erb" => "This content"
44
+ render
45
+ expect(rendered).to match /This content/
46
+ end
47
+ end
48
+ """
49
+ When I run `rspec spec/views/gadgets/edit.html.erb_spec.rb`
50
+ Then the examples should all pass
51
+
@@ -0,0 +1,206 @@
1
+ Feature: view spec
2
+
3
+ View specs live in spec/views and render view templates in isolation.
4
+
5
+ Scenario: passing spec that renders the described view file
6
+ Given a file named "spec/views/widgets/index.html.erb_spec.rb" with:
7
+ """ruby
8
+ require "spec_helper"
9
+
10
+ describe "widgets/index" do
11
+ it "displays all the widgets" do
12
+ assign(:widgets, [
13
+ stub_model(Widget, :name => "slicer"),
14
+ stub_model(Widget, :name => "dicer")
15
+ ])
16
+
17
+ render
18
+
19
+ expect(rendered).to match /slicer/
20
+ expect(rendered).to match /dicer/
21
+ end
22
+ end
23
+ """
24
+ When I run `rspec spec/views`
25
+ Then the examples should all pass
26
+
27
+ Scenario: passing spec with before and nesting
28
+ Given a file named "spec/views/widgets/index.html.erb_spec.rb" with:
29
+ """ruby
30
+ require "spec_helper"
31
+
32
+ describe "widgets/index" do
33
+
34
+ context "with 2 widgets" do
35
+ before(:each) do
36
+ assign(:widgets, [
37
+ stub_model(Widget, :name => "slicer"),
38
+ stub_model(Widget, :name => "dicer")
39
+ ])
40
+ end
41
+
42
+ it "displays both widgets" do
43
+ render
44
+
45
+ expect(rendered).to match /slicer/
46
+ expect(rendered).to match /dicer/
47
+ end
48
+ end
49
+ end
50
+ """
51
+ When I run `rspec spec/views`
52
+ Then the examples should all pass
53
+
54
+ Scenario: passing spec with explicit template rendering
55
+ Given a file named "spec/views/widgets/widget.html.erb_spec.rb" with:
56
+ """ruby
57
+ require "spec_helper"
58
+
59
+ describe "rendering the widget template" do
60
+ it "displays the widget" do
61
+ assign(:widget, stub_model(Widget, :name => "slicer"))
62
+
63
+ render :template => "widgets/widget.html.erb"
64
+
65
+ expect(rendered).to match /slicer/
66
+ end
67
+ end
68
+ """
69
+ And a file named "app/views/widgets/widget.html.erb" with:
70
+ """
71
+ <h2><%= @widget.name %></h2>
72
+ """
73
+ When I run `rspec spec/views`
74
+ Then the examples should all pass
75
+
76
+ Scenario: passing spec with a description that includes the format and handler
77
+ Given a file named "spec/views/widgets/widget.xml.erb_spec.rb" with:
78
+ """ruby
79
+ require "spec_helper"
80
+
81
+ describe "widgets/widget.html.erb" do
82
+ it "renders the HTML template" do
83
+ render
84
+
85
+ expect(rendered).to match /HTML/
86
+ end
87
+ end
88
+
89
+ describe "widgets/widget.xml.erb" do
90
+ it "renders the XML template" do
91
+ render
92
+
93
+ expect(rendered).to match /XML/
94
+ end
95
+ end
96
+ """
97
+ And a file named "app/views/widgets/widget.html.erb" with:
98
+ """
99
+ HTML
100
+ """
101
+ And a file named "app/views/widgets/widget.xml.erb" with:
102
+ """
103
+ XML
104
+ """
105
+ When I run `rspec spec/views`
106
+ Then the examples should all pass
107
+
108
+ Scenario: passing spec with rendering of locals in a partial
109
+ Given a file named "spec/views/widgets/_widget.html.erb_spec.rb" with:
110
+ """ruby
111
+ require "spec_helper"
112
+
113
+ describe "rendering locals in a partial" do
114
+ it "displays the widget" do
115
+ widget = stub_model(Widget, :name => "slicer")
116
+
117
+ render :partial => "widgets/widget.html.erb", :locals => {:widget => widget}
118
+
119
+ expect(rendered).to match /slicer/
120
+ end
121
+ end
122
+ """
123
+ And a file named "app/views/widgets/_widget.html.erb" with:
124
+ """
125
+ <h3><%= widget.name %></h3>
126
+ """
127
+ When I run `rspec spec/views`
128
+ Then the examples should all pass
129
+
130
+ Scenario: passing spec with rendering of locals in an implicit partial
131
+ Given a file named "spec/views/widgets/_widget.html.erb_spec.rb" with:
132
+ """ruby
133
+ require "spec_helper"
134
+
135
+ describe "rendering locals in a partial" do
136
+ it "displays the widget" do
137
+ widget = stub_model(Widget, :name => "slicer")
138
+
139
+ render "widgets/widget", :widget => widget
140
+
141
+ expect(rendered).to match /slicer/
142
+ end
143
+ end
144
+ """
145
+ And a file named "app/views/widgets/_widget.html.erb" with:
146
+ """
147
+ <h3><%= widget.name %></h3>
148
+ """
149
+ When I run `rspec spec/views`
150
+ Then the examples should all pass
151
+
152
+ Scenario: passing spec with rendering of text
153
+ Given a file named "spec/views/widgets/direct.html.erb_spec.rb" with:
154
+ """ruby
155
+ require "spec_helper"
156
+
157
+ describe "rendering text directly" do
158
+ it "displays the given text" do
159
+
160
+ render :text => "This is directly rendered"
161
+
162
+ expect(rendered).to match /directly rendered/
163
+ end
164
+ end
165
+ """
166
+ When I run `rspec spec/views`
167
+ Then the examples should all pass
168
+
169
+ Scenario: passing view spec that stubs a helper method
170
+ Given a file named "app/views/secrets/index.html.erb" with:
171
+ """
172
+ <%- if admin? %>
173
+ <h1>Secret admin area</h1>
174
+ <%- end %>
175
+ """
176
+ And a file named "spec/views/secrets/index.html.erb_spec.rb" with:
177
+ """ruby
178
+ require 'spec_helper'
179
+
180
+ describe 'secrets/index' do
181
+ before do
182
+ view.stub(:admin?).and_return(true)
183
+ end
184
+
185
+ it 'checks for admin access' do
186
+ render
187
+ expect(rendered).to match /Secret admin area/
188
+ end
189
+ end
190
+ """
191
+ When I run `rspec spec/views/secrets`
192
+ Then the examples should all pass
193
+
194
+ Scenario: request.path_parameters should match Rails by using symbols for keys
195
+ Given a file named "spec/views/widgets/index.html.erb_spec.rb" with:
196
+ """ruby
197
+ require "spec_helper"
198
+
199
+ describe "controller.request.path_parameters" do
200
+ it "matches the Rails environment by using symbols for keys" do
201
+ [:controller, :action].each { |k| expect(controller.request.path_parameters.keys).to include(k) }
202
+ end
203
+ end
204
+ """
205
+ When I run `rspec spec/views`
206
+ Then the examples should all pass
@@ -1,85 +1,90 @@
1
- # (c) Copyright 2006 Nick Sieger <nicksieger@gmail.com>
2
- #
3
- # Permission is hereby granted, free of charge, to any person
4
- # obtaining a copy of this software and associated documentation files
5
- # (the "Software"), to deal in the Software without restriction,
6
- # including without limitation the rights to use, copy, modify, merge,
7
- # publish, distribute, sublicense, and/or sell copies of the Software,
8
- # and to permit persons to whom the Software is furnished to do so,
9
- # subject to the following conditions:
10
- #
11
- # The above copyright notice and this permission notice shall be
12
- # included in all copies or substantial portions of the Software.
13
- #
14
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
18
- # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19
- # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
- # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- # SOFTWARE.
1
+ begin
2
+ require 'rspec/rails/autotest'
3
+ rescue LoadError
4
+ # (c) Copyright 2006 Nick Sieger <nicksieger@gmail.com>
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person
7
+ # obtaining a copy of this software and associated documentation files
8
+ # (the "Software"), to deal in the Software without restriction,
9
+ # including without limitation the rights to use, copy, modify, merge,
10
+ # publish, distribute, sublicense, and/or sell copies of the Software,
11
+ # and to permit persons to whom the Software is furnished to do so,
12
+ # subject to the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be
15
+ # included in all copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
21
+ # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
22
+ # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
23
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
24
+ # SOFTWARE.
22
25
 
23
- $:.push(*Dir["vendor/rails/*/lib"])
26
+ $:.push(*Dir["vendor/rails/*/lib"])
24
27
 
25
- require 'active_support'
26
- require 'active_support/core_ext'
27
- require 'autotest/rspec2'
28
+ require 'active_support/core_ext'
29
+ require 'autotest/rspec2'
28
30
 
29
- class Autotest::RailsRspec2 < Autotest::Rspec2
31
+ class Autotest::RailsRspec2 < Autotest::Rspec2
30
32
 
31
- def initialize
32
- super
33
- setup_rails_rspec2_mappings
34
- end
35
-
36
- def setup_rails_rspec2_mappings
37
- %w{coverage/ db/ doc/ log/ public/ script/ tmp/ vendor/rails vendor/plugins vendor/gems}.each do |exception|
38
- add_exception(/^([\.\/]*)?#{exception}/)
33
+ def initialize
34
+ super
35
+ setup_rails_rspec2_mappings
39
36
  end
40
37
 
41
- clear_mappings
42
-
43
- add_mapping(%r%^(test|spec)/fixtures/(.*).yml$%) { |_, m|
44
- ["spec/models/#{m[2].singularize}_spec.rb"] + files_matching(%r%^spec\/views\/#{m[2]}/.*_spec\.rb$%)
45
- }
46
- add_mapping(%r%^spec/.*_spec\.rb$%) { |filename, _|
47
- filename
48
- }
49
- add_mapping(%r%^app/models/(.*)\.rb$%) { |_, m|
50
- ["spec/models/#{m[1]}_spec.rb"]
51
- }
52
- add_mapping(%r%^app/views/(.*)$%) { |_, m|
53
- files_matching %r%^spec/views/#{m[1]}_spec.rb$%
54
- }
55
- add_mapping(%r%^app/controllers/(.*)\.rb$%) { |_, m|
56
- if m[1] == "application"
57
- files_matching %r%^spec/controllers/.*_spec\.rb$%
58
- else
59
- ["spec/controllers/#{m[1]}_spec.rb"]
60
- end
61
- }
62
- add_mapping(%r%^app/helpers/(.*)_helper\.rb$%) { |_, m|
63
- if m[1] == "application" then
64
- files_matching(%r%^spec/(views|helpers)/.*_spec\.rb$%)
65
- else
66
- ["spec/helpers/#{m[1]}_helper_spec.rb"] + files_matching(%r%^spec\/views\/#{m[1]}/.*_spec\.rb$%)
38
+ def setup_rails_rspec2_mappings
39
+ %w{coverage/ db/ doc/ log/ public/ script/ tmp/ vendor/rails vendor/plugins vendor/gems}.each do |exception|
40
+ add_exception(/^([\.\/]*)?#{exception}/)
67
41
  end
68
- }
69
- add_mapping(%r%^config/routes\.rb$%) {
70
- files_matching %r%^spec/(controllers|routing|views|helpers)/.*_spec\.rb$%
71
- }
72
- add_mapping(%r%^config/database\.yml$%) { |_, m|
73
- files_matching %r%^spec/models/.*_spec\.rb$%
74
- }
75
- add_mapping(%r%^(spec/(spec_helper|support/.*)|config/(boot|environment(s/test)?))\.rb$%) {
76
- files_matching %r%^spec/(models|controllers|routing|views|helpers)/.*_spec\.rb$%
77
- }
78
- add_mapping(%r%^lib/(.*)\.rb$%) { |_, m|
79
- ["spec/lib/#{m[1]}_spec.rb"]
80
- }
81
- add_mapping(%r%^app/mailers/(.*)\.rb$%) { |_, m|
82
- ["spec/mailers/#{m[1]}_spec.rb"]
83
- }
42
+
43
+ clear_mappings
44
+
45
+ add_mapping(%r%^(test|spec)/fixtures/(.*).yml$%) { |_, m|
46
+ ["spec/models/#{m[2].singularize}_spec.rb"] + files_matching(%r%^spec\/views\/#{m[2]}/.*_spec\.rb$%)
47
+ }
48
+ add_mapping(%r%^spec/.*_spec\.rb$%) { |filename, _|
49
+ filename
50
+ }
51
+ add_mapping(%r%^app/models/(.*)\.rb$%) { |_, m|
52
+ ["spec/models/#{m[1]}_spec.rb"]
53
+ }
54
+ add_mapping(%r%^app/views/(.*)$%) { |_, m|
55
+ files_matching %r%^spec/views/#{m[1]}_spec.rb$%
56
+ }
57
+ add_mapping(%r%^app/controllers/(.*)\.rb$%) { |_, m|
58
+ if m[1] == "application"
59
+ files_matching %r%^spec/controllers/.*_spec\.rb$%
60
+ else
61
+ ["spec/controllers/#{m[1]}_spec.rb"]
62
+ end
63
+ }
64
+ add_mapping(%r%^app/helpers/(.*)_helper\.rb$%) { |_, m|
65
+ if m[1] == "application" then
66
+ files_matching(%r%^spec/(views|helpers)/.*_spec\.rb$%)
67
+ else
68
+ ["spec/helpers/#{m[1]}_helper_spec.rb"] + files_matching(%r%^spec\/views\/#{m[1]}/.*_spec\.rb$%)
69
+ end
70
+ }
71
+ add_mapping(%r%^config/routes\.rb$%) {
72
+ files_matching %r%^spec/(controllers|routing|views|helpers)/.*_spec\.rb$%
73
+ }
74
+ add_mapping(%r%^config/database\.yml$%) { |_, m|
75
+ files_matching %r%^spec/models/.*_spec\.rb$%
76
+ }
77
+ add_mapping(%r%^(spec/(spec_helper|support/.*)|config/(boot|environment(s/test)?))\.rb$%) {
78
+ files_matching %r%^spec/(models|controllers|routing|views|helpers)/.*_spec\.rb$%
79
+ }
80
+ add_mapping(%r%^lib/(.*)\.rb$%) { |_, m|
81
+ ["spec/lib/#{m[1]}_spec.rb"]
82
+ }
83
+ add_mapping(%r%^app/mailers/(.*)\.rb$%) { |_, m|
84
+ ["spec/mailers/#{m[1]}_spec.rb"]
85
+ }
86
+ end
84
87
  end
88
+
89
+ Autotest.add_hook(:ran_command) { warn "\n\e[31mUsing the built in rspec-rails autotest support is deprecated and will be removed in RSpec 3. Please switch to the rspec-autotest gem\e[0m" }
85
90
  end