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.
- data/History.md +21 -1
- data/README.md +3 -3
- data/Rakefile +2 -2
- data/{Upgrade.markdown → Upgrade.md} +0 -0
- data/features/.nav +12 -7
- data/features/Autotest.md +10 -0
- data/features/Generators.md +8 -0
- data/features/GettingStarted.md +40 -0
- data/features/{README.markdown → README.md} +1 -26
- data/features/Upgrade.md +56 -0
- data/features/controller_specs/README.md +27 -16
- data/features/controller_specs/isolation_from_views.feature +6 -5
- data/features/controller_specs/render_views.feature +30 -1
- data/features/helper_specs/helper_spec.feature +36 -3
- data/features/mocks/mock_model.feature +3 -3
- data/features/model_specs/README.md +19 -0
- data/features/routing_specs/README.md +16 -0
- data/features/{matchers → routing_specs}/be_routable_matcher.feature +18 -18
- data/features/routing_specs/{access_to_named_routes.feature → named_routes.feature} +6 -3
- data/features/routing_specs/route_to_matcher.feature +38 -0
- data/lib/generators/rspec/scaffold/scaffold_generator.rb +6 -6
- data/lib/generators/rspec/scaffold/templates/controller_spec.rb +22 -24
- data/lib/rspec/rails.rb +0 -1
- data/lib/rspec/rails/example.rb +29 -1
- data/lib/rspec/rails/example/controller_example_group.rb +1 -5
- data/lib/rspec/rails/example/helper_example_group.rb +5 -6
- data/lib/rspec/rails/example/mailer_example_group.rb +1 -5
- data/lib/rspec/rails/example/model_example_group.rb +0 -3
- data/lib/rspec/rails/example/request_example_group.rb +1 -5
- data/lib/rspec/rails/example/routing_example_group.rb +1 -5
- data/lib/rspec/rails/example/view_example_group.rb +1 -4
- data/lib/rspec/rails/matchers/redirect_to.rb +6 -2
- data/lib/rspec/rails/matchers/render_template.rb +5 -1
- data/lib/rspec/rails/matchers/routing_matchers.rb +1 -1
- data/lib/rspec/rails/module_inclusion.rb +17 -0
- data/lib/rspec/rails/version.rb +1 -1
- data/lib/rspec/rails/view_rendering.rb +23 -7
- data/spec/rspec/rails/configuration_spec.rb +26 -0
- data/spec/rspec/rails/example/helper_example_group_spec.rb +18 -0
- data/spec/rspec/rails/example/request_example_group_spec.rb +2 -0
- data/spec/rspec/rails/matchers/be_routable_spec.rb +41 -0
- data/spec/rspec/rails/matchers/redirect_to_spec.rb +67 -8
- data/spec/rspec/rails/matchers/render_template_spec.rb +67 -10
- data/spec/rspec/rails/matchers/route_to_spec.rb +64 -33
- data/spec/rspec/rails/view_rendering_spec.rb +105 -0
- metadata +38 -20
- data/spec/rspec/rails/example/view_rendering_spec.rb +0 -110
@@ -0,0 +1,16 @@
|
|
1
|
+
Routing specs live in the `spec/routing` directory.
|
2
|
+
|
3
|
+
Simple apps with nothing but standard RESTful routes won't get much value from
|
4
|
+
routing specs, but they can provide significant value when used to specify
|
5
|
+
customized routes, like vanity links, slugs, etc.
|
6
|
+
|
7
|
+
{ :get => "/articles/2012/11/when-to-use-routing-specs" }.
|
8
|
+
should route_to(
|
9
|
+
:controller => "articles",
|
10
|
+
:month => "2012-11",
|
11
|
+
:slug => "when-to-use-routing-specs"
|
12
|
+
)
|
13
|
+
|
14
|
+
They are also valuable for routes that should not be available:
|
15
|
+
|
16
|
+
{ :delete => "/accounts/37" }.should_not be_routable
|
@@ -1,47 +1,47 @@
|
|
1
1
|
Feature: be_routable matcher
|
2
2
|
|
3
|
-
The be_routable matcher is
|
4
|
-
given route
|
5
|
-
spec/routing) and controller specs (in spec/
|
3
|
+
The `be_routable` matcher is best used with `should_not` to specify that a
|
4
|
+
given route should not be routable. It is available in routing specs (in
|
5
|
+
spec/routing) and controller specs (in spec/controllers).
|
6
6
|
|
7
|
-
Scenario: specify routeable route should be routable (
|
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
|
"""
|
10
10
|
require "spec_helper"
|
11
11
|
|
12
|
-
describe
|
13
|
-
it "
|
14
|
-
{ :get => "/widgets" }.
|
12
|
+
describe "routes for Widgets" do
|
13
|
+
it "does not route to widgets" do
|
14
|
+
{ :get => "/widgets" }.should_not be_routable
|
15
15
|
end
|
16
16
|
end
|
17
17
|
"""
|
18
18
|
|
19
19
|
When I run "rspec spec/routing/widgets_routing_spec.rb"
|
20
|
-
Then the output should contain "1 example,
|
20
|
+
Then the output should contain "1 example, 1 failure"
|
21
21
|
|
22
|
-
Scenario: specify routeable route should not be routable (
|
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
|
"""
|
25
25
|
require "spec_helper"
|
26
26
|
|
27
|
-
describe
|
28
|
-
it "does not route to widgets" do
|
29
|
-
{ :get => "/widgets" }.should_not be_routable
|
27
|
+
describe "routes for Widgets" do
|
28
|
+
it "does not route to widgets/foo/bar" do
|
29
|
+
{ :get => "/widgets/foo/bar" }.should_not be_routable
|
30
30
|
end
|
31
31
|
end
|
32
32
|
"""
|
33
33
|
|
34
34
|
When I run "rspec spec/routing/widgets_routing_spec.rb"
|
35
|
-
Then the output should contain "1 example,
|
35
|
+
Then the output should contain "1 example, 0 failures"
|
36
36
|
|
37
|
-
Scenario: specify
|
37
|
+
Scenario: specify routeable route should be routable (passes)
|
38
38
|
Given a file named "spec/routing/widgets_routing_spec.rb" with:
|
39
39
|
"""
|
40
40
|
require "spec_helper"
|
41
41
|
|
42
|
-
describe
|
43
|
-
it "
|
44
|
-
{ :get => "/widgets
|
42
|
+
describe "routes for Widgets" do
|
43
|
+
it "routes to /widgets" do
|
44
|
+
{ :get => "/widgets" }.should be_routable
|
45
45
|
end
|
46
46
|
end
|
47
47
|
"""
|
@@ -54,7 +54,7 @@ Feature: be_routable matcher
|
|
54
54
|
"""
|
55
55
|
require "spec_helper"
|
56
56
|
|
57
|
-
describe
|
57
|
+
describe "routes for Widgets" do
|
58
58
|
it "routes to widgets/foo/bar" do
|
59
59
|
{ :get => "/widgets/foo/bar" }.should be_routable
|
60
60
|
end
|
@@ -1,13 +1,16 @@
|
|
1
|
-
Feature:
|
1
|
+
Feature: named routes
|
2
2
|
|
3
|
-
|
3
|
+
Routing specs have access to named routes.
|
4
|
+
|
5
|
+
Scenario: access named route
|
4
6
|
Given a file named "spec/routing/widget_routes_spec.rb" with:
|
5
7
|
"""
|
6
8
|
require "spec_helper"
|
7
9
|
|
8
10
|
describe "routes to the widgets controller" do
|
9
11
|
it "routes a named route" do
|
10
|
-
{:get => new_widget_path}.
|
12
|
+
{:get => new_widget_path}.
|
13
|
+
should route_to(:controller => "widgets", :action => "new")
|
11
14
|
end
|
12
15
|
end
|
13
16
|
"""
|
@@ -0,0 +1,38 @@
|
|
1
|
+
Feature: route_to matcher
|
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.
|
5
|
+
|
6
|
+
{ :get => "/" }.should route_to(:controller => "welcome")
|
7
|
+
|
8
|
+
Scenario: passing route spec
|
9
|
+
Given a file named "spec/routing/widgets_routing_spec.rb" with:
|
10
|
+
"""
|
11
|
+
require "spec_helper"
|
12
|
+
|
13
|
+
describe "routes for Widgets" do
|
14
|
+
it "routes /widgets to the widgets controller" do
|
15
|
+
{ :get => "/widgets" }.
|
16
|
+
should route_to(:controller => "widgets", :action => "index")
|
17
|
+
end
|
18
|
+
end
|
19
|
+
"""
|
20
|
+
|
21
|
+
When I run "rspec spec/routing/widgets_routing_spec.rb"
|
22
|
+
Then the output should contain "1 example, 0 failures"
|
23
|
+
|
24
|
+
Scenario: route spec for a route that doesn't exist (fails)
|
25
|
+
Given a file named "spec/routing/widgets_routing_spec.rb" with:
|
26
|
+
"""
|
27
|
+
require "spec_helper"
|
28
|
+
|
29
|
+
describe "routes for Widgets" do
|
30
|
+
it "routes /widgets/foo to the /foo action" do
|
31
|
+
{ :get => "/widgets/foo" }.
|
32
|
+
should route_to(:controller => "widgets", :action => "foo")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
"""
|
36
|
+
|
37
|
+
When I run "rspec spec/routing/widgets_routing_spec.rb"
|
38
|
+
Then the output should contain "1 example, 1 failure"
|
@@ -97,21 +97,21 @@ module Rspec
|
|
97
97
|
# should! orm_class.find(User, "37")
|
98
98
|
# #=> User.should_receive(:get).with(37)
|
99
99
|
#
|
100
|
-
def should_receive
|
100
|
+
def should_receive(chain)
|
101
101
|
stub_or_should_chain(:should_receive, chain)
|
102
102
|
end
|
103
103
|
|
104
104
|
# Receives the ORM chain and convert to stub. For ActiveRecord:
|
105
105
|
#
|
106
|
-
# stub
|
107
|
-
# #=> User.stub
|
106
|
+
# stub orm_class.find(User, "37")
|
107
|
+
# #=> User.stub(:find).with(37)
|
108
108
|
#
|
109
109
|
# For Datamapper:
|
110
110
|
#
|
111
|
-
# stub
|
112
|
-
# #=> User.stub
|
111
|
+
# stub orm_class.find(User, "37")
|
112
|
+
# #=> User.stub(:get).with(37)
|
113
113
|
#
|
114
|
-
def stub
|
114
|
+
def stub(chain)
|
115
115
|
stub_or_should_chain(:stub, chain)
|
116
116
|
end
|
117
117
|
|
@@ -1,17 +1,19 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
# This spec was generated by rspec-rails when you ran the scaffold generator.
|
4
|
+
# It demonstrates how one might use RSpec to specify the controller code that
|
5
|
+
# was generated by the Rails when you ran the scaffold generator.
|
6
|
+
|
3
7
|
describe <%= controller_class_name %>Controller do
|
4
8
|
|
5
9
|
def <%= mock_file_name %>(stubs={})
|
6
|
-
|
7
|
-
<%= file_name %>.stub(stubs) unless stubs.empty?
|
8
|
-
end
|
10
|
+
@<%= mock_file_name %> ||= mock_model(<%= class_name %>, stubs).as_null_object
|
9
11
|
end
|
10
12
|
|
11
13
|
<% unless options[:singleton] -%>
|
12
14
|
describe "GET index" do
|
13
15
|
it "assigns all <%= table_name.pluralize %> as @<%= table_name.pluralize %>" do
|
14
|
-
<%= stub
|
16
|
+
<%= stub orm_class.all(class_name) %> { [<%= mock_file_name %>] }
|
15
17
|
get :index
|
16
18
|
assigns(:<%= table_name %>).should eq([<%= mock_file_name %>])
|
17
19
|
end
|
@@ -20,7 +22,7 @@ describe <%= controller_class_name %>Controller do
|
|
20
22
|
<% end -%>
|
21
23
|
describe "GET show" do
|
22
24
|
it "assigns the requested <%= file_name %> as @<%= file_name %>" do
|
23
|
-
<%= stub
|
25
|
+
<%= stub orm_class.find(class_name, "37".inspect) %> { <%= mock_file_name %> }
|
24
26
|
get :show, :id => "37"
|
25
27
|
assigns(:<%= file_name %>).should be(<%= mock_file_name %>)
|
26
28
|
end
|
@@ -28,7 +30,7 @@ describe <%= controller_class_name %>Controller do
|
|
28
30
|
|
29
31
|
describe "GET new" do
|
30
32
|
it "assigns a new <%= file_name %> as @<%= file_name %>" do
|
31
|
-
<%= stub
|
33
|
+
<%= stub orm_class.build(class_name) %> { <%= mock_file_name %> }
|
32
34
|
get :new
|
33
35
|
assigns(:<%= file_name %>).should be(<%= mock_file_name %>)
|
34
36
|
end
|
@@ -36,23 +38,22 @@ describe <%= controller_class_name %>Controller do
|
|
36
38
|
|
37
39
|
describe "GET edit" do
|
38
40
|
it "assigns the requested <%= file_name %> as @<%= file_name %>" do
|
39
|
-
<%= stub
|
41
|
+
<%= stub orm_class.find(class_name, "37".inspect) %> { <%= mock_file_name %> }
|
40
42
|
get :edit, :id => "37"
|
41
43
|
assigns(:<%= file_name %>).should be(<%= mock_file_name %>)
|
42
44
|
end
|
43
45
|
end
|
44
46
|
|
45
47
|
describe "POST create" do
|
46
|
-
|
47
48
|
describe "with valid params" do
|
48
49
|
it "assigns a newly created <%= file_name %> as @<%= file_name %>" do
|
49
|
-
<%= stub
|
50
|
+
<%= stub orm_class.build(class_name, params) %> { <%= mock_file_name(:save => true) %> }
|
50
51
|
post :create, :<%= file_name %> => <%= params %>
|
51
52
|
assigns(:<%= file_name %>).should be(<%= mock_file_name %>)
|
52
53
|
end
|
53
54
|
|
54
55
|
it "redirects to the created <%= file_name %>" do
|
55
|
-
<%= stub
|
56
|
+
<%= stub orm_class.build(class_name) %> { <%= mock_file_name(:save => true) %> }
|
56
57
|
post :create, :<%= file_name %> => {}
|
57
58
|
response.should redirect_to(<%= table_name.singularize %>_url(<%= mock_file_name %>))
|
58
59
|
end
|
@@ -60,37 +61,35 @@ describe <%= controller_class_name %>Controller do
|
|
60
61
|
|
61
62
|
describe "with invalid params" do
|
62
63
|
it "assigns a newly created but unsaved <%= file_name %> as @<%= file_name %>" do
|
63
|
-
<%= stub
|
64
|
+
<%= stub orm_class.build(class_name, params) %> { <%= mock_file_name(:save => false) %> }
|
64
65
|
post :create, :<%= file_name %> => <%= params %>
|
65
66
|
assigns(:<%= file_name %>).should be(<%= mock_file_name %>)
|
66
67
|
end
|
67
68
|
|
68
69
|
it "re-renders the 'new' template" do
|
69
|
-
<%= stub
|
70
|
+
<%= stub orm_class.build(class_name) %> { <%= mock_file_name(:save => false) %> }
|
70
71
|
post :create, :<%= file_name %> => {}
|
71
72
|
response.should render_template("new")
|
72
73
|
end
|
73
74
|
end
|
74
|
-
|
75
75
|
end
|
76
76
|
|
77
77
|
describe "PUT update" do
|
78
|
-
|
79
78
|
describe "with valid params" do
|
80
79
|
it "updates the requested <%= file_name %>" do
|
81
|
-
<%=
|
82
|
-
mock_<%= should_receive
|
80
|
+
<%= stub orm_class.find(class_name, "37".inspect) %> { <%= mock_file_name %> }
|
81
|
+
mock_<%= should_receive orm_instance.update_attributes(params) %>
|
83
82
|
put :update, :id => "37", :<%= file_name %> => <%= params %>
|
84
83
|
end
|
85
84
|
|
86
85
|
it "assigns the requested <%= file_name %> as @<%= file_name %>" do
|
87
|
-
<%= stub
|
86
|
+
<%= stub orm_class.find(class_name) %> { <%= mock_file_name(:update_attributes => true) %> }
|
88
87
|
put :update, :id => "1"
|
89
88
|
assigns(:<%= file_name %>).should be(<%= mock_file_name %>)
|
90
89
|
end
|
91
90
|
|
92
91
|
it "redirects to the <%= file_name %>" do
|
93
|
-
<%= stub
|
92
|
+
<%= stub orm_class.find(class_name) %> { <%= mock_file_name(:update_attributes => true) %> }
|
94
93
|
put :update, :id => "1"
|
95
94
|
response.should redirect_to(<%= table_name.singularize %>_url(<%= mock_file_name %>))
|
96
95
|
end
|
@@ -98,29 +97,28 @@ describe <%= controller_class_name %>Controller do
|
|
98
97
|
|
99
98
|
describe "with invalid params" do
|
100
99
|
it "assigns the <%= file_name %> as @<%= file_name %>" do
|
101
|
-
<%= stub
|
100
|
+
<%= stub orm_class.find(class_name) %> { <%= mock_file_name(:update_attributes => false) %> }
|
102
101
|
put :update, :id => "1"
|
103
102
|
assigns(:<%= file_name %>).should be(<%= mock_file_name %>)
|
104
103
|
end
|
105
104
|
|
106
105
|
it "re-renders the 'edit' template" do
|
107
|
-
<%= stub
|
106
|
+
<%= stub orm_class.find(class_name) %> { <%= mock_file_name(:update_attributes => false) %> }
|
108
107
|
put :update, :id => "1"
|
109
108
|
response.should render_template("edit")
|
110
109
|
end
|
111
110
|
end
|
112
|
-
|
113
111
|
end
|
114
112
|
|
115
113
|
describe "DELETE destroy" do
|
116
114
|
it "destroys the requested <%= file_name %>" do
|
117
|
-
<%=
|
118
|
-
mock_<%= should_receive
|
115
|
+
<%= stub orm_class.find(class_name, "37".inspect) %> { <%= mock_file_name %> }
|
116
|
+
mock_<%= should_receive orm_instance.destroy %>
|
119
117
|
delete :destroy, :id => "37"
|
120
118
|
end
|
121
119
|
|
122
120
|
it "redirects to the <%= table_name %> list" do
|
123
|
-
<%= stub
|
121
|
+
<%= stub orm_class.find(class_name) %> { <%= mock_file_name %> }
|
124
122
|
delete :destroy, :id => "1"
|
125
123
|
response.should redirect_to(<%= table_name %>_url)
|
126
124
|
end
|
data/lib/rspec/rails.rb
CHANGED
data/lib/rspec/rails/example.rb
CHANGED
@@ -5,4 +5,32 @@ require 'rspec/rails/example/helper_example_group'
|
|
5
5
|
require 'rspec/rails/example/view_example_group'
|
6
6
|
require 'rspec/rails/example/mailer_example_group'
|
7
7
|
require 'rspec/rails/example/routing_example_group'
|
8
|
-
require 'rspec/rails/example/model_example_group'
|
8
|
+
require 'rspec/rails/example/model_example_group'
|
9
|
+
|
10
|
+
RSpec::configure do |c|
|
11
|
+
def c.escaped_path(*parts)
|
12
|
+
Regexp.compile(parts.join('[\\\/]'))
|
13
|
+
end
|
14
|
+
|
15
|
+
c.include RSpec::Rails::ControllerExampleGroup, :type => :controller, :example_group => {
|
16
|
+
:file_path => c.escaped_path(%w[spec controllers])
|
17
|
+
}
|
18
|
+
c.include RSpec::Rails::HelperExampleGroup, :type => :helper, :example_group => {
|
19
|
+
:file_path => c.escaped_path(%w[spec helpers])
|
20
|
+
}
|
21
|
+
c.include RSpec::Rails::MailerExampleGroup, :type => :mailer, :example_group => {
|
22
|
+
:file_path => c.escaped_path(%w[spec mailers])
|
23
|
+
}
|
24
|
+
c.include RSpec::Rails::ModelExampleGroup, :type => :model, :example_group => {
|
25
|
+
:file_path => c.escaped_path(%w[spec models])
|
26
|
+
}
|
27
|
+
c.include RSpec::Rails::RequestExampleGroup, :type => :request, :example_group => {
|
28
|
+
:file_path => c.escaped_path(%w[spec (requests|integration)])
|
29
|
+
}
|
30
|
+
c.include RSpec::Rails::RoutingExampleGroup, :type => :routing, :example_group => {
|
31
|
+
:file_path => c.escaped_path(%w[spec routing])
|
32
|
+
}
|
33
|
+
c.include RSpec::Rails::ViewExampleGroup, :type => :view, :example_group => {
|
34
|
+
:file_path => c.escaped_path(%w[spec views])
|
35
|
+
}
|
36
|
+
end
|
@@ -72,11 +72,9 @@ module RSpec::Rails
|
|
72
72
|
#
|
73
73
|
module ControllerExampleGroup
|
74
74
|
extend ActiveSupport::Concern
|
75
|
-
extend RSpec::Rails::ModuleInclusion
|
76
|
-
|
77
|
-
include RSpec::Rails::RailsExampleGroup
|
78
75
|
|
79
76
|
include ActionController::TestCase::Behavior
|
77
|
+
include RSpec::Rails::RailsExampleGroup
|
80
78
|
include RSpec::Rails::ViewRendering
|
81
79
|
include RSpec::Rails::Matchers::RedirectTo
|
82
80
|
include RSpec::Rails::Matchers::RenderTemplate
|
@@ -172,7 +170,5 @@ module RSpec::Rails
|
|
172
170
|
end
|
173
171
|
end
|
174
172
|
end
|
175
|
-
|
176
|
-
RSpec.configure &include_self_when_dir_matches('spec','controllers')
|
177
173
|
end
|
178
174
|
end
|
@@ -27,11 +27,9 @@ module RSpec::Rails
|
|
27
27
|
#
|
28
28
|
module HelperExampleGroup
|
29
29
|
extend ActiveSupport::Concern
|
30
|
-
extend RSpec::Rails::ModuleInclusion
|
31
|
-
|
32
|
-
include RSpec::Rails::RailsExampleGroup
|
33
30
|
|
34
31
|
include ActionView::TestCase::Behavior
|
32
|
+
include RSpec::Rails::RailsExampleGroup
|
35
33
|
include RSpec::Rails::ViewAssigns
|
36
34
|
include RSpec::Rails::BrowserSimulators
|
37
35
|
|
@@ -49,7 +47,10 @@ module RSpec::Rails
|
|
49
47
|
# Returns an instance of ActionView::Base with the helper being specified
|
50
48
|
# mixed in, along with any of the built-in rails helpers.
|
51
49
|
def helper
|
52
|
-
_view.tap
|
50
|
+
_view.tap do |v|
|
51
|
+
v.extend(ApplicationHelper) if defined?(ApplicationHelper)
|
52
|
+
v.assign(view_assigns)
|
53
|
+
end
|
53
54
|
end
|
54
55
|
|
55
56
|
private
|
@@ -66,7 +67,5 @@ module RSpec::Rails
|
|
66
67
|
controller.controller_path = _controller_path
|
67
68
|
end
|
68
69
|
end
|
69
|
-
|
70
|
-
RSpec.configure &include_self_when_dir_matches('spec','helpers')
|
71
70
|
end
|
72
71
|
end
|
@@ -2,11 +2,9 @@ if defined?(ActionMailer)
|
|
2
2
|
module RSpec::Rails
|
3
3
|
module MailerExampleGroup
|
4
4
|
extend ActiveSupport::Concern
|
5
|
-
extend RSpec::Rails::ModuleInclusion
|
6
|
-
|
7
|
-
include RSpec::Rails::RailsExampleGroup
|
8
5
|
|
9
6
|
include ActionMailer::TestCase::Behavior
|
7
|
+
include RSpec::Rails::RailsExampleGroup
|
10
8
|
include RSpec::Rails::BrowserSimulators
|
11
9
|
|
12
10
|
webrat do
|
@@ -29,8 +27,6 @@ if defined?(ActionMailer)
|
|
29
27
|
describes
|
30
28
|
end
|
31
29
|
end
|
32
|
-
|
33
|
-
RSpec.configure &include_self_when_dir_matches('spec','mailers')
|
34
30
|
end
|
35
31
|
end
|
36
32
|
end
|
@@ -1,14 +1,11 @@
|
|
1
1
|
module RSpec::Rails
|
2
2
|
module ModelExampleGroup
|
3
3
|
extend ActiveSupport::Concern
|
4
|
-
extend RSpec::Rails::ModuleInclusion
|
5
4
|
|
6
5
|
include RSpec::Rails::RailsExampleGroup
|
7
6
|
|
8
7
|
included do
|
9
8
|
metadata[:type] = :model
|
10
9
|
end
|
11
|
-
|
12
|
-
RSpec.configure &include_self_when_dir_matches('spec','models')
|
13
10
|
end
|
14
11
|
end
|