rspec-rails 2.3.1 → 2.4.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/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
|