rspec-rails 4.0.0 → 5.1.2
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/Changelog.md +139 -50
- data/README.md +42 -31
- data/lib/generators/rspec/controller/controller_generator.rb +2 -2
- data/lib/generators/rspec/controller/templates/request_spec.rb +6 -1
- data/lib/generators/rspec/install/templates/spec/rails_helper.rb +1 -1
- data/lib/generators/rspec/job/job_generator.rb +2 -1
- data/lib/generators/rspec/job/templates/job_spec.rb.erb +1 -1
- data/lib/generators/rspec/mailer/templates/mailer_spec.rb +2 -2
- data/lib/generators/rspec/mailer/templates/preview.rb +1 -1
- data/lib/generators/rspec/scaffold/scaffold_generator.rb +4 -0
- data/lib/generators/rspec/scaffold/templates/api_controller_spec.rb +13 -13
- data/lib/generators/rspec/scaffold/templates/api_request_spec.rb +20 -20
- data/lib/generators/rspec/scaffold/templates/controller_spec.rb +10 -58
- data/lib/generators/rspec/scaffold/templates/edit_spec.rb +0 -4
- data/lib/generators/rspec/scaffold/templates/new_spec.rb +0 -4
- data/lib/generators/rspec/scaffold/templates/request_spec.rb +23 -18
- data/lib/generators/rspec/system/system_generator.rb +14 -16
- data/lib/rspec/rails/configuration.rb +41 -6
- data/lib/rspec/rails/example/controller_example_group.rb +1 -0
- data/lib/rspec/rails/example/mailbox_example_group.rb +1 -1
- data/lib/rspec/rails/example/mailer_example_group.rb +2 -2
- data/lib/rspec/rails/example/request_example_group.rb +1 -4
- data/lib/rspec/rails/example/system_example_group.rb +5 -4
- data/lib/rspec/rails/extensions/active_record/proxy.rb +4 -1
- data/lib/rspec/rails/file_fixture_support.rb +9 -11
- data/lib/rspec/rails/fixture_file_upload_support.rb +32 -16
- data/lib/rspec/rails/fixture_support.rb +9 -12
- data/lib/rspec/rails/matchers/action_mailbox.rb +14 -5
- data/lib/rspec/rails/matchers/active_job.rb +29 -3
- data/lib/rspec/rails/matchers/have_enqueued_mail.rb +33 -5
- data/lib/rspec/rails/matchers/have_http_status.rb +4 -4
- data/lib/rspec/rails/matchers/relation_match_array.rb +1 -1
- data/lib/rspec/rails/version.rb +1 -1
- data/lib/rspec-rails.rb +5 -7
- data.tar.gz.sig +0 -0
- metadata +37 -25
- metadata.gz.sig +0 -0
@@ -46,7 +46,7 @@ RSpec.describe "/<%= name.underscore.pluralize %>", <%= type_metatag(:request) %
|
|
46
46
|
describe "GET /show" do
|
47
47
|
it "renders a successful response" do
|
48
48
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
49
|
-
get <%= show_helper
|
49
|
+
get <%= show_helper %>, as: :json
|
50
50
|
expect(response).to be_successful
|
51
51
|
end
|
52
52
|
end
|
@@ -56,13 +56,13 @@ RSpec.describe "/<%= name.underscore.pluralize %>", <%= type_metatag(:request) %
|
|
56
56
|
it "creates a new <%= class_name %>" do
|
57
57
|
expect {
|
58
58
|
post <%= index_helper %>_url,
|
59
|
-
params: { <%=
|
59
|
+
params: { <%= singular_table_name %>: valid_attributes }, headers: valid_headers, as: :json
|
60
60
|
}.to change(<%= class_name %>, :count).by(1)
|
61
61
|
end
|
62
62
|
|
63
|
-
it "renders a JSON response with the new <%=
|
63
|
+
it "renders a JSON response with the new <%= singular_table_name %>" do
|
64
64
|
post <%= index_helper %>_url,
|
65
|
-
params: { <%=
|
65
|
+
params: { <%= singular_table_name %>: valid_attributes }, headers: valid_headers, as: :json
|
66
66
|
expect(response).to have_http_status(:created)
|
67
67
|
expect(response.content_type).to match(a_string_including("application/json"))
|
68
68
|
end
|
@@ -72,15 +72,15 @@ RSpec.describe "/<%= name.underscore.pluralize %>", <%= type_metatag(:request) %
|
|
72
72
|
it "does not create a new <%= class_name %>" do
|
73
73
|
expect {
|
74
74
|
post <%= index_helper %>_url,
|
75
|
-
params: { <%=
|
75
|
+
params: { <%= singular_table_name %>: invalid_attributes }, as: :json
|
76
76
|
}.to change(<%= class_name %>, :count).by(0)
|
77
77
|
end
|
78
78
|
|
79
|
-
it "renders a JSON response with errors for the new <%=
|
79
|
+
it "renders a JSON response with errors for the new <%= singular_table_name %>" do
|
80
80
|
post <%= index_helper %>_url,
|
81
|
-
params: { <%=
|
81
|
+
params: { <%= singular_table_name %>: invalid_attributes }, headers: valid_headers, as: :json
|
82
82
|
expect(response).to have_http_status(:unprocessable_entity)
|
83
|
-
expect(response.content_type).to
|
83
|
+
expect(response.content_type).to match(a_string_including("application/json"))
|
84
84
|
end
|
85
85
|
end
|
86
86
|
end
|
@@ -91,39 +91,39 @@ RSpec.describe "/<%= name.underscore.pluralize %>", <%= type_metatag(:request) %
|
|
91
91
|
skip("Add a hash of attributes valid for your model")
|
92
92
|
}
|
93
93
|
|
94
|
-
it "updates the requested <%=
|
94
|
+
it "updates the requested <%= singular_table_name %>" do
|
95
95
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
96
|
-
patch <%= show_helper
|
97
|
-
params: { <%= singular_table_name %>:
|
96
|
+
patch <%= show_helper %>,
|
97
|
+
params: { <%= singular_table_name %>: new_attributes }, headers: valid_headers, as: :json
|
98
98
|
<%= file_name %>.reload
|
99
99
|
skip("Add assertions for updated state")
|
100
100
|
end
|
101
101
|
|
102
|
-
it "renders a JSON response with the <%=
|
102
|
+
it "renders a JSON response with the <%= singular_table_name %>" do
|
103
103
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
104
|
-
patch <%= show_helper
|
105
|
-
params: { <%= singular_table_name %>:
|
104
|
+
patch <%= show_helper %>,
|
105
|
+
params: { <%= singular_table_name %>: new_attributes }, headers: valid_headers, as: :json
|
106
106
|
expect(response).to have_http_status(:ok)
|
107
|
-
expect(response.content_type).to
|
107
|
+
expect(response.content_type).to match(a_string_including("application/json"))
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
111
|
context "with invalid parameters" do
|
112
|
-
it "renders a JSON response with errors for the <%=
|
112
|
+
it "renders a JSON response with errors for the <%= singular_table_name %>" do
|
113
113
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
114
|
-
patch <%= show_helper
|
114
|
+
patch <%= show_helper %>,
|
115
115
|
params: { <%= singular_table_name %>: invalid_attributes }, headers: valid_headers, as: :json
|
116
116
|
expect(response).to have_http_status(:unprocessable_entity)
|
117
|
-
expect(response.content_type).to
|
117
|
+
expect(response.content_type).to match(a_string_including("application/json"))
|
118
118
|
end
|
119
119
|
end
|
120
120
|
end
|
121
121
|
|
122
122
|
describe "DELETE /destroy" do
|
123
|
-
it "destroys the requested <%=
|
123
|
+
it "destroys the requested <%= singular_table_name %>" do
|
124
124
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
125
125
|
expect {
|
126
|
-
delete <%= show_helper
|
126
|
+
delete <%= show_helper %>, headers: valid_headers, as: :json
|
127
127
|
}.to change(<%= class_name %>, :count).by(-1)
|
128
128
|
end
|
129
129
|
end
|
@@ -46,11 +46,7 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
|
|
46
46
|
describe "GET #index" do
|
47
47
|
it "returns a success response" do
|
48
48
|
<%= class_name %>.create! valid_attributes
|
49
|
-
<% if Rails::VERSION::STRING < '5.0' -%>
|
50
|
-
get :index, {}, valid_session
|
51
|
-
<% else -%>
|
52
49
|
get :index, params: {}, session: valid_session
|
53
|
-
<% end -%>
|
54
50
|
expect(response).to be_successful
|
55
51
|
end
|
56
52
|
end
|
@@ -59,22 +55,14 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
|
|
59
55
|
describe "GET #show" do
|
60
56
|
it "returns a success response" do
|
61
57
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
62
|
-
<% if Rails::VERSION::STRING < '5.0' -%>
|
63
|
-
get :show, {id: <%= file_name %>.to_param}, valid_session
|
64
|
-
<% else -%>
|
65
58
|
get :show, params: {id: <%= file_name %>.to_param}, session: valid_session
|
66
|
-
<% end -%>
|
67
59
|
expect(response).to be_successful
|
68
60
|
end
|
69
61
|
end
|
70
62
|
|
71
63
|
describe "GET #new" do
|
72
64
|
it "returns a success response" do
|
73
|
-
<% if Rails::VERSION::STRING < '5.0' -%>
|
74
|
-
get :new, {}, valid_session
|
75
|
-
<% else -%>
|
76
65
|
get :new, params: {}, session: valid_session
|
77
|
-
<% end -%>
|
78
66
|
expect(response).to be_successful
|
79
67
|
end
|
80
68
|
end
|
@@ -82,11 +70,7 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
|
|
82
70
|
describe "GET #edit" do
|
83
71
|
it "returns a success response" do
|
84
72
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
85
|
-
<% if Rails::VERSION::STRING < '5.0' -%>
|
86
|
-
get :edit, {id: <%= file_name %>.to_param}, valid_session
|
87
|
-
<% else -%>
|
88
73
|
get :edit, params: {id: <%= file_name %>.to_param}, session: valid_session
|
89
|
-
<% end -%>
|
90
74
|
expect(response).to be_successful
|
91
75
|
end
|
92
76
|
end
|
@@ -95,31 +79,19 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
|
|
95
79
|
context "with valid params" do
|
96
80
|
it "creates a new <%= class_name %>" do
|
97
81
|
expect {
|
98
|
-
|
99
|
-
post :create, {<%= ns_file_name %>: valid_attributes}, valid_session
|
100
|
-
<% else -%>
|
101
|
-
post :create, params: {<%= ns_file_name %>: valid_attributes}, session: valid_session
|
102
|
-
<% end -%>
|
82
|
+
post :create, params: {<%= singular_table_name %>: valid_attributes}, session: valid_session
|
103
83
|
}.to change(<%= class_name %>, :count).by(1)
|
104
84
|
end
|
105
85
|
|
106
|
-
it "redirects to the created <%=
|
107
|
-
|
108
|
-
post :create, {<%= ns_file_name %>: valid_attributes}, valid_session
|
109
|
-
<% else -%>
|
110
|
-
post :create, params: {<%= ns_file_name %>: valid_attributes}, session: valid_session
|
111
|
-
<% end -%>
|
86
|
+
it "redirects to the created <%= singular_table_name %>" do
|
87
|
+
post :create, params: {<%= singular_table_name %>: valid_attributes}, session: valid_session
|
112
88
|
expect(response).to redirect_to(<%= class_name %>.last)
|
113
89
|
end
|
114
90
|
end
|
115
91
|
|
116
92
|
context "with invalid params" do
|
117
93
|
it "returns a success response (i.e. to display the 'new' template)" do
|
118
|
-
|
119
|
-
post :create, {<%= ns_file_name %>: invalid_attributes}, valid_session
|
120
|
-
<% else -%>
|
121
|
-
post :create, params: {<%= ns_file_name %>: invalid_attributes}, session: valid_session
|
122
|
-
<% end -%>
|
94
|
+
post :create, params: {<%= singular_table_name %>: invalid_attributes}, session: valid_session
|
123
95
|
expect(response).to be_successful
|
124
96
|
end
|
125
97
|
end
|
@@ -131,24 +103,16 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
|
|
131
103
|
skip("Add a hash of attributes valid for your model")
|
132
104
|
}
|
133
105
|
|
134
|
-
it "updates the requested <%=
|
106
|
+
it "updates the requested <%= singular_table_name %>" do
|
135
107
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
136
|
-
|
137
|
-
put :update, {id: <%= file_name %>.to_param, <%= ns_file_name %>: new_attributes}, valid_session
|
138
|
-
<% else -%>
|
139
|
-
put :update, params: {id: <%= file_name %>.to_param, <%= ns_file_name %>: new_attributes}, session: valid_session
|
140
|
-
<% end -%>
|
108
|
+
put :update, params: {id: <%= file_name %>.to_param, <%= singular_table_name %>: new_attributes}, session: valid_session
|
141
109
|
<%= file_name %>.reload
|
142
110
|
skip("Add assertions for updated state")
|
143
111
|
end
|
144
112
|
|
145
|
-
it "redirects to the <%=
|
113
|
+
it "redirects to the <%= singular_table_name %>" do
|
146
114
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
147
|
-
|
148
|
-
put :update, {id: <%= file_name %>.to_param, <%= ns_file_name %>: valid_attributes}, valid_session
|
149
|
-
<% else -%>
|
150
|
-
put :update, params: {id: <%= file_name %>.to_param, <%= ns_file_name %>: valid_attributes}, session: valid_session
|
151
|
-
<% end -%>
|
115
|
+
put :update, params: {id: <%= file_name %>.to_param, <%= singular_table_name %>: new_attributes}, session: valid_session
|
152
116
|
expect(response).to redirect_to(<%= file_name %>)
|
153
117
|
end
|
154
118
|
end
|
@@ -156,35 +120,23 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
|
|
156
120
|
context "with invalid params" do
|
157
121
|
it "returns a success response (i.e. to display the 'edit' template)" do
|
158
122
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
159
|
-
|
160
|
-
put :update, {id: <%= file_name %>.to_param, <%= ns_file_name %>: invalid_attributes}, valid_session
|
161
|
-
<% else -%>
|
162
|
-
put :update, params: {id: <%= file_name %>.to_param, <%= ns_file_name %>: invalid_attributes}, session: valid_session
|
163
|
-
<% end -%>
|
123
|
+
put :update, params: {id: <%= file_name %>.to_param, <%= singular_table_name %>: invalid_attributes}, session: valid_session
|
164
124
|
expect(response).to be_successful
|
165
125
|
end
|
166
126
|
end
|
167
127
|
end
|
168
128
|
|
169
129
|
describe "DELETE #destroy" do
|
170
|
-
it "destroys the requested <%=
|
130
|
+
it "destroys the requested <%= singular_table_name %>" do
|
171
131
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
172
132
|
expect {
|
173
|
-
<% if Rails::VERSION::STRING < '5.0' -%>
|
174
|
-
delete :destroy, {id: <%= file_name %>.to_param}, valid_session
|
175
|
-
<% else -%>
|
176
133
|
delete :destroy, params: {id: <%= file_name %>.to_param}, session: valid_session
|
177
|
-
<% end -%>
|
178
134
|
}.to change(<%= class_name %>, :count).by(-1)
|
179
135
|
end
|
180
136
|
|
181
137
|
it "redirects to the <%= table_name %> list" do
|
182
138
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
183
|
-
<% if Rails::VERSION::STRING < '5.0' -%>
|
184
|
-
delete :destroy, {id: <%= file_name %>.to_param}, valid_session
|
185
|
-
<% else -%>
|
186
139
|
delete :destroy, params: {id: <%= file_name %>.to_param}, session: valid_session
|
187
|
-
<% end -%>
|
188
140
|
expect(response).to redirect_to(<%= index_helper %>_url)
|
189
141
|
end
|
190
142
|
end
|
@@ -16,11 +16,7 @@ RSpec.describe "<%= ns_table_name %>/edit", <%= type_metatag(:view) %> do
|
|
16
16
|
assert_select "form[action=?][method=?]", <%= ns_file_name %>_path(@<%= ns_file_name %>), "post" do
|
17
17
|
<% for attribute in output_attributes -%>
|
18
18
|
<%- name = attribute.respond_to?(:column_name) ? attribute.column_name : attribute.name %>
|
19
|
-
<% if Rails.version.to_f >= 5.1 -%>
|
20
19
|
assert_select "<%= attribute.input_type -%>[name=?]", "<%= ns_file_name %>[<%= name %>]"
|
21
|
-
<% else -%>
|
22
|
-
assert_select "<%= attribute.input_type -%>#<%= ns_file_name %>_<%= name %>[name=?]", "<%= ns_file_name %>[<%= name %>]"
|
23
|
-
<% end -%>
|
24
20
|
<% end -%>
|
25
21
|
end
|
26
22
|
end
|
@@ -15,11 +15,7 @@ RSpec.describe "<%= ns_table_name %>/new", <%= type_metatag(:view) %> do
|
|
15
15
|
assert_select "form[action=?][method=?]", <%= index_helper %>_path, "post" do
|
16
16
|
<% for attribute in output_attributes -%>
|
17
17
|
<%- name = attribute.respond_to?(:column_name) ? attribute.column_name : attribute.name %>
|
18
|
-
<% if Rails.version.to_f >= 5.1 -%>
|
19
18
|
assert_select "<%= attribute.input_type -%>[name=?]", "<%= ns_file_name %>[<%= name %>]"
|
20
|
-
<% else -%>
|
21
|
-
assert_select "<%= attribute.input_type -%>#<%= ns_file_name %>_<%= name %>[name=?]", "<%= ns_file_name %>[<%= name %>]"
|
22
|
-
<% end -%>
|
23
19
|
<% end -%>
|
24
20
|
end
|
25
21
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'rails_helper'
|
2
2
|
|
3
3
|
# This spec was generated by rspec-rails when you ran the scaffold generator.
|
4
4
|
# It demonstrates how one might use RSpec to test the controller code that
|
@@ -14,6 +14,11 @@
|
|
14
14
|
|
15
15
|
<% module_namespacing do -%>
|
16
16
|
RSpec.describe "/<%= name.underscore.pluralize %>", <%= type_metatag(:request) %> do
|
17
|
+
<% if mountable_engine? -%>
|
18
|
+
include Engine.routes.url_helpers
|
19
|
+
<% end -%>
|
20
|
+
|
21
|
+
# This should return the minimal set of attributes required to create a valid
|
17
22
|
# <%= class_name %>. As you add validations to <%= class_name %>, be sure to
|
18
23
|
# adjust the attributes here as well.
|
19
24
|
let(:valid_attributes) {
|
@@ -37,7 +42,7 @@ RSpec.describe "/<%= name.underscore.pluralize %>", <%= type_metatag(:request) %
|
|
37
42
|
describe "GET /show" do
|
38
43
|
it "renders a successful response" do
|
39
44
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
40
|
-
get <%= show_helper
|
45
|
+
get <%= show_helper %>
|
41
46
|
expect(response).to be_successful
|
42
47
|
end
|
43
48
|
end
|
@@ -50,9 +55,9 @@ RSpec.describe "/<%= name.underscore.pluralize %>", <%= type_metatag(:request) %
|
|
50
55
|
end
|
51
56
|
|
52
57
|
describe "GET /edit" do
|
53
|
-
it "
|
58
|
+
it "renders a successful response" do
|
54
59
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
55
|
-
get <%= edit_helper
|
60
|
+
get <%= edit_helper %>
|
56
61
|
expect(response).to be_successful
|
57
62
|
end
|
58
63
|
end
|
@@ -61,25 +66,25 @@ RSpec.describe "/<%= name.underscore.pluralize %>", <%= type_metatag(:request) %
|
|
61
66
|
context "with valid parameters" do
|
62
67
|
it "creates a new <%= class_name %>" do
|
63
68
|
expect {
|
64
|
-
post <%= index_helper %>_url, params: { <%=
|
69
|
+
post <%= index_helper %>_url, params: { <%= singular_table_name %>: valid_attributes }
|
65
70
|
}.to change(<%= class_name %>, :count).by(1)
|
66
71
|
end
|
67
72
|
|
68
|
-
it "redirects to the created <%=
|
69
|
-
post <%= index_helper %>_url, params: { <%=
|
70
|
-
expect(response).to redirect_to(<%= show_helper
|
73
|
+
it "redirects to the created <%= singular_table_name %>" do
|
74
|
+
post <%= index_helper %>_url, params: { <%= singular_table_name %>: valid_attributes }
|
75
|
+
expect(response).to redirect_to(<%= show_helper(class_name+".last") %>)
|
71
76
|
end
|
72
77
|
end
|
73
78
|
|
74
79
|
context "with invalid parameters" do
|
75
80
|
it "does not create a new <%= class_name %>" do
|
76
81
|
expect {
|
77
|
-
post <%= index_helper %>_url, params: { <%=
|
82
|
+
post <%= index_helper %>_url, params: { <%= singular_table_name %>: invalid_attributes }
|
78
83
|
}.to change(<%= class_name %>, :count).by(0)
|
79
84
|
end
|
80
85
|
|
81
86
|
it "renders a successful response (i.e. to display the 'new' template)" do
|
82
|
-
post <%= index_helper %>_url, params: { <%=
|
87
|
+
post <%= index_helper %>_url, params: { <%= singular_table_name %>: invalid_attributes }
|
83
88
|
expect(response).to be_successful
|
84
89
|
end
|
85
90
|
end
|
@@ -91,16 +96,16 @@ RSpec.describe "/<%= name.underscore.pluralize %>", <%= type_metatag(:request) %
|
|
91
96
|
skip("Add a hash of attributes valid for your model")
|
92
97
|
}
|
93
98
|
|
94
|
-
it "updates the requested <%=
|
99
|
+
it "updates the requested <%= singular_table_name %>" do
|
95
100
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
96
|
-
patch <%= show_helper
|
101
|
+
patch <%= show_helper %>, params: { <%= singular_table_name %>: new_attributes }
|
97
102
|
<%= file_name %>.reload
|
98
103
|
skip("Add assertions for updated state")
|
99
104
|
end
|
100
105
|
|
101
|
-
it "redirects to the <%=
|
106
|
+
it "redirects to the <%= singular_table_name %>" do
|
102
107
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
103
|
-
patch <%= show_helper
|
108
|
+
patch <%= show_helper %>, params: { <%= singular_table_name %>: new_attributes }
|
104
109
|
<%= file_name %>.reload
|
105
110
|
expect(response).to redirect_to(<%= singular_table_name %>_url(<%= file_name %>))
|
106
111
|
end
|
@@ -109,23 +114,23 @@ RSpec.describe "/<%= name.underscore.pluralize %>", <%= type_metatag(:request) %
|
|
109
114
|
context "with invalid parameters" do
|
110
115
|
it "renders a successful response (i.e. to display the 'edit' template)" do
|
111
116
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
112
|
-
patch <%= show_helper
|
117
|
+
patch <%= show_helper %>, params: { <%= singular_table_name %>: invalid_attributes }
|
113
118
|
expect(response).to be_successful
|
114
119
|
end
|
115
120
|
end
|
116
121
|
end
|
117
122
|
|
118
123
|
describe "DELETE /destroy" do
|
119
|
-
it "destroys the requested <%=
|
124
|
+
it "destroys the requested <%= singular_table_name %>" do
|
120
125
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
121
126
|
expect {
|
122
|
-
delete <%= show_helper
|
127
|
+
delete <%= show_helper %>
|
123
128
|
}.to change(<%= class_name %>, :count).by(-1)
|
124
129
|
end
|
125
130
|
|
126
131
|
it "redirects to the <%= table_name %> list" do
|
127
132
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
128
|
-
delete <%= show_helper
|
133
|
+
delete <%= show_helper %>
|
129
134
|
expect(response).to redirect_to(<%= index_helper %>_url)
|
130
135
|
end
|
131
136
|
end
|
@@ -1,25 +1,23 @@
|
|
1
1
|
require 'generators/rspec'
|
2
2
|
|
3
|
-
|
4
|
-
module
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
class_option :system_specs, type: :boolean, default: true, desc: "Generate system specs"
|
3
|
+
module Rspec
|
4
|
+
module Generators
|
5
|
+
# @private
|
6
|
+
class SystemGenerator < Base
|
7
|
+
class_option :system_specs, type: :boolean, default: true, desc: "Generate system specs"
|
9
8
|
|
10
|
-
|
11
|
-
|
9
|
+
def generate_system_spec
|
10
|
+
return unless options[:system_specs]
|
12
11
|
|
13
|
-
|
14
|
-
|
12
|
+
template template_name, File.join('spec/system', class_path, filename)
|
13
|
+
end
|
15
14
|
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
def template_name
|
16
|
+
'system_spec.rb'
|
17
|
+
end
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
end
|
19
|
+
def filename
|
20
|
+
"#{table_name}_spec.rb"
|
23
21
|
end
|
24
22
|
end
|
25
23
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# rubocop: disable Metrics/ModuleLength
|
1
2
|
module RSpec
|
2
3
|
module Rails
|
3
4
|
# Fake class to document RSpec Rails configuration options. In practice,
|
@@ -27,6 +28,7 @@ module RSpec
|
|
27
28
|
DIRECTORY_MAPPINGS = {
|
28
29
|
channel: %w[spec channels],
|
29
30
|
controller: %w[spec controllers],
|
31
|
+
generator: %w[spec generator],
|
30
32
|
helper: %w[spec helpers],
|
31
33
|
job: %w[spec jobs],
|
32
34
|
mailer: %w[spec mailers],
|
@@ -55,7 +57,7 @@ module RSpec
|
|
55
57
|
end
|
56
58
|
|
57
59
|
# @private
|
58
|
-
def self.initialize_configuration(config) # rubocop:disable Metrics/MethodLength
|
60
|
+
def self.initialize_configuration(config) # rubocop:disable Metrics/MethodLength,Metrics/CyclomaticComplexity
|
59
61
|
config.backtrace_exclusion_patterns << /vendor\//
|
60
62
|
config.backtrace_exclusion_patterns << %r{lib/rspec/rails}
|
61
63
|
|
@@ -79,10 +81,8 @@ module RSpec
|
|
79
81
|
# `RSpec::Rails::FixtureSupport` directly instead
|
80
82
|
config.include RSpec::Rails::FixtureSupport
|
81
83
|
|
82
|
-
|
83
|
-
|
84
|
-
config.include RSpec::Rails::FileFixtureSupport
|
85
|
-
end
|
84
|
+
config.add_setting :file_fixture_path, default: 'spec/fixtures/files'
|
85
|
+
config.include RSpec::Rails::FileFixtureSupport
|
86
86
|
|
87
87
|
# Add support for fixture_path on fixture_file_upload
|
88
88
|
config.include RSpec::Rails::FixtureFileUploadSupport
|
@@ -105,7 +105,41 @@ module RSpec
|
|
105
105
|
end
|
106
106
|
|
107
107
|
def render_views?
|
108
|
-
rendering_views
|
108
|
+
rendering_views?
|
109
|
+
end
|
110
|
+
|
111
|
+
undef :rendering_views? if respond_to?(:rendering_views?)
|
112
|
+
def rendering_views?
|
113
|
+
!!rendering_views
|
114
|
+
end
|
115
|
+
|
116
|
+
# Define boolean predicates rather than relying on rspec-core due
|
117
|
+
# to the bug fix in rspec/rspec-core#2736, note some of these
|
118
|
+
# predicates are a bit nonsensical, but they exist for backwards
|
119
|
+
# compatibility, we can tidy these up in `rspec-rails` 5.
|
120
|
+
undef :fixture_path? if respond_to?(:fixture_path?)
|
121
|
+
def fixture_path?
|
122
|
+
!!fixture_path
|
123
|
+
end
|
124
|
+
|
125
|
+
undef :global_fixtures? if respond_to?(:global_fixtures?)
|
126
|
+
def global_fixtures?
|
127
|
+
!!global_fixtures
|
128
|
+
end
|
129
|
+
|
130
|
+
undef :infer_base_class_for_anonymous_controllers? if respond_to?(:infer_base_class_for_anonymous_controllers?)
|
131
|
+
def infer_base_class_for_anonymous_controllers?
|
132
|
+
!!infer_base_class_for_anonymous_controllers
|
133
|
+
end
|
134
|
+
|
135
|
+
undef :use_instantiated_fixtures? if respond_to?(:use_instantiated_fixtures?)
|
136
|
+
def use_instantiated_fixtures?
|
137
|
+
!!use_instantiated_fixtures
|
138
|
+
end
|
139
|
+
|
140
|
+
undef :use_transactional_fixtures? if respond_to?(:use_transactional_fixtures?)
|
141
|
+
def use_transactional_fixtures?
|
142
|
+
!!use_transactional_fixtures
|
109
143
|
end
|
110
144
|
|
111
145
|
def infer_spec_type_from_file_location!
|
@@ -156,3 +190,4 @@ module RSpec
|
|
156
190
|
initialize_configuration RSpec.configuration
|
157
191
|
end
|
158
192
|
end
|
193
|
+
# rubocop: enable Metrics/ModuleLength
|
@@ -21,8 +21,8 @@ if defined?(ActionMailer)
|
|
21
21
|
|
22
22
|
included do
|
23
23
|
include ::Rails.application.routes.url_helpers
|
24
|
-
options = ::Rails.configuration.action_mailer.default_url_options
|
25
|
-
options
|
24
|
+
options = ::Rails.configuration.action_mailer.default_url_options || {}
|
25
|
+
options.each { |key, value| default_url_options[key] = value }
|
26
26
|
end
|
27
27
|
|
28
28
|
# Class-level DSL for mailer specs.
|
@@ -10,10 +10,7 @@ module RSpec
|
|
10
10
|
include RSpec::Rails::Matchers::RedirectTo
|
11
11
|
include RSpec::Rails::Matchers::RenderTemplate
|
12
12
|
include ActionController::TemplateAssertions
|
13
|
-
|
14
|
-
if ActionPack::VERSION::MAJOR >= 5
|
15
|
-
include ActionDispatch::IntegrationTest::Behavior
|
16
|
-
end
|
13
|
+
include ActionDispatch::IntegrationTest::Behavior
|
17
14
|
|
18
15
|
# Delegates to `Rails.application`.
|
19
16
|
def app
|
@@ -41,7 +41,7 @@ module RSpec
|
|
41
41
|
@method_name ||= [
|
42
42
|
self.class.name.underscore,
|
43
43
|
RSpec.current_example.description.underscore
|
44
|
-
].join("_").tr(CHARS_TO_TRANSLATE.join, "_")
|
44
|
+
].join("_").tr(CHARS_TO_TRANSLATE.join, "_").byteslice(0...200).scrub("") + "_#{rand(1000)}"
|
45
45
|
end
|
46
46
|
|
47
47
|
# Delegates to `Rails.application`.
|
@@ -96,8 +96,8 @@ module RSpec
|
|
96
96
|
end
|
97
97
|
end
|
98
98
|
|
99
|
-
def driven_by(
|
100
|
-
@driver = ::ActionDispatch::SystemTestCase.driven_by(
|
99
|
+
def driven_by(driver, **driver_options, &blk)
|
100
|
+
@driver = ::ActionDispatch::SystemTestCase.driven_by(driver, **driver_options, &blk).tap(&:use)
|
101
101
|
end
|
102
102
|
|
103
103
|
before do
|
@@ -114,7 +114,8 @@ module RSpec
|
|
114
114
|
original_after_teardown.bind(self).call
|
115
115
|
ensure
|
116
116
|
myio = $stdout
|
117
|
-
|
117
|
+
myio.rewind
|
118
|
+
RSpec.current_example.metadata[:extra_failure_lines] = myio.readlines
|
118
119
|
$stdout = orig_stdout
|
119
120
|
end
|
120
121
|
end
|
@@ -1,7 +1,10 @@
|
|
1
1
|
RSpec.configure do |rspec|
|
2
2
|
# Delay this in order to give users a chance to configure `expect_with`...
|
3
3
|
rspec.before(:suite) do
|
4
|
-
if defined?(RSpec::Matchers) &&
|
4
|
+
if defined?(RSpec::Matchers) &&
|
5
|
+
RSpec::Matchers.configuration.respond_to?(:syntax) && # RSpec 4 dropped support for monkey-patching `should` syntax
|
6
|
+
RSpec::Matchers.configuration.syntax.include?(:should) &&
|
7
|
+
defined?(ActiveRecord::Associations)
|
5
8
|
RSpec::Matchers.configuration.add_should_and_should_not_to ActiveRecord::Associations::CollectionProxy
|
6
9
|
end
|
7
10
|
end
|
@@ -1,16 +1,14 @@
|
|
1
|
-
|
2
|
-
require 'active_support/testing/file_fixtures'
|
1
|
+
require 'active_support/testing/file_fixtures'
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
3
|
+
module RSpec
|
4
|
+
module Rails
|
5
|
+
# @private
|
6
|
+
module FileFixtureSupport
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
include ActiveSupport::Testing::FileFixtures
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
10
|
+
included do
|
11
|
+
self.file_fixture_path = RSpec.configuration.file_fixture_path
|
14
12
|
end
|
15
13
|
end
|
16
14
|
end
|