rspec-rails 4.0.1 → 5.0.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 +71 -2
- data/README.md +23 -18
- 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/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/templates/api_request_spec.rb +3 -3
- data/lib/generators/rspec/scaffold/templates/controller_spec.rb +0 -48
- 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 +4 -0
- data/lib/generators/rspec/system/system_generator.rb +14 -16
- data/lib/rspec/rails/configuration.rb +40 -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/request_example_group.rb +1 -4
- data/lib/rspec/rails/example/system_example_group.rb +3 -2
- 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 +23 -1
- 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 +23 -23
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 93e1ee0dc7bb7ea05c19308593f872702af96d6964061a741151eee2e872109a
|
|
4
|
+
data.tar.gz: d76331ed70af267b4ff35ddb4479a470befe5dc54aaf2e07611cc7696873dbd9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8d5f6b9db91c30e791d85446ddcacd6ace734888c08141d4ccc120e3132c81113c67372bdac08c6b46b71f963e4510cdac55fad734e09fb4fc4ad205c59584c9
|
|
7
|
+
data.tar.gz: 9c61a0d38958a2ce62828bc75acb48ba81c16098a65ecc19bc778d0ec962b886163b41d257a096f23a84b99c022dbbe2c1d4435ffe948c2048604e001e7e4bdf
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/Changelog.md
CHANGED
|
@@ -1,5 +1,74 @@
|
|
|
1
1
|
### Development
|
|
2
|
-
[Full Changelog](https://github.com/rspec/rspec-rails/compare/
|
|
2
|
+
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v5.0.2...5-0-maintenance)
|
|
3
|
+
|
|
4
|
+
### 5.0.2 / 2021-08-14
|
|
5
|
+
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v5.0.1...v5.0.2)
|
|
6
|
+
|
|
7
|
+
Bug Fixes:
|
|
8
|
+
|
|
9
|
+
* Prevent generated job specs from duplicating `_job` in filenames.
|
|
10
|
+
(Nick Flückiger, #2496)
|
|
11
|
+
* Fix `ActiveRecord::TestFixture#uses_transaction` by using example description
|
|
12
|
+
to replace example name rather than example in our monkey patched
|
|
13
|
+
`run_in_transaction?` method. (Stan Lo, #2495)
|
|
14
|
+
* Prevent keyword arguments being lost when methods are invoked dynamically
|
|
15
|
+
in controller specs. (Josh Cheek, #2509, #2514)
|
|
16
|
+
|
|
17
|
+
### 5.0.1 / 2021-03-18
|
|
18
|
+
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v5.0.0...v5.0.1)
|
|
19
|
+
|
|
20
|
+
Bug Fixes:
|
|
21
|
+
|
|
22
|
+
* Limit multibyte example descriptions when used in system tests for #method_name
|
|
23
|
+
which ends up as screenshot names etc. (@y-yagi, #2405, #2487)
|
|
24
|
+
|
|
25
|
+
### 5.0.0 / 2021-03-09
|
|
26
|
+
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.1.1...v5.0.0)
|
|
27
|
+
|
|
28
|
+
Enhancements:
|
|
29
|
+
|
|
30
|
+
* Support new #file_fixture_path and new fixture test support code. (Jon Rowe, #2398)
|
|
31
|
+
* Support for Rails 6.1. (Benoit Tigeot, Jon Rowe, Phil Pirozhkov, and more #2398)
|
|
32
|
+
|
|
33
|
+
Breaking Changes:
|
|
34
|
+
|
|
35
|
+
* Drop support for Rails below 5.2.
|
|
36
|
+
|
|
37
|
+
### 4.1.1 / 2021-03-09
|
|
38
|
+
|
|
39
|
+
Bug Fixes:
|
|
40
|
+
|
|
41
|
+
* Remove generated specs when destroying a generated controller.
|
|
42
|
+
(@Naokimi, #2475)
|
|
43
|
+
|
|
44
|
+
### 4.1.0 / 2021-03-06
|
|
45
|
+
|
|
46
|
+
Enhancements:
|
|
47
|
+
|
|
48
|
+
* Issue a warning when using job matchers with `#at` mis-match on `usec` precision.
|
|
49
|
+
(Jon Rowe, #2350)
|
|
50
|
+
* Generated request specs now have a bare `_spec` suffix instead of `request_spec`.
|
|
51
|
+
(Eloy Espinaco, Luka Lüdicke, #2355, #2356, #2378)
|
|
52
|
+
* Generated scaffold now includes engine route helpers when inside a mountable engine.
|
|
53
|
+
(Andrew W. Lee, #2372)
|
|
54
|
+
* Improve request spec "controller" scafold when no action is specified.
|
|
55
|
+
(Thomas Hareau, #2399)
|
|
56
|
+
* Introduce testing snippets concept (Phil Pirozhkov, Benoit Tigeot, #2423)
|
|
57
|
+
* Prevent collisions with `let(:name)` for Rails 6.1 and `let(:method_name)` on older
|
|
58
|
+
Rails. (Benoit Tigeot, #2461)
|
|
59
|
+
|
|
60
|
+
### 4.0.2 / 2020-12-26
|
|
61
|
+
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.1...v4.0.2)
|
|
62
|
+
|
|
63
|
+
Bug Fixes:
|
|
64
|
+
|
|
65
|
+
* Indent all extra failure lines output from system specs. (Alex Robbin, #2321)
|
|
66
|
+
* Generated request spec for update now uses the correct let. (Paul Hanyzewski, #2344)
|
|
67
|
+
* Return `true`/`false` from predicate methods in config rather than raw values.
|
|
68
|
+
(Phil Pirozhkov, Jon Rowe, #2353, #2354)
|
|
69
|
+
* Remove old #fixture_path feature detection code which broke under newer Rails.
|
|
70
|
+
(Koen Punt, Jon Rowe, #2370)
|
|
71
|
+
* Fix an error when `use_active_record` is `false` (Phil Pirozhkov, #2423)
|
|
3
72
|
|
|
4
73
|
### 4.0.1 / 2020-05-16
|
|
5
74
|
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.0...v4.0.1)
|
|
@@ -37,7 +106,7 @@ Enhancements:
|
|
|
37
106
|
generating a controller (Luka Lüdicke, #2222)
|
|
38
107
|
* Allow `ActiveJob` matchers `#on_queue` modifier to take symbolic queue names. (Nils Sommer, #2283)
|
|
39
108
|
* The scaffold generator now generates request specs in preference to controller specs.
|
|
40
|
-
(Luka
|
|
109
|
+
(Luka Lüdicke, #2288)
|
|
41
110
|
* Add configuration option to disable ActiveRecord. (Jon Rowe, Phil Pirozhkov, Hermann Mayer, #2266)
|
|
42
111
|
* Set `ActionDispatch::SystemTesting::Server.silence_puma = true` when running system specs.
|
|
43
112
|
(ta1kt0me, Benoit Tigeot, #2289)
|
data/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# rspec-rails [![
|
|
1
|
+
# rspec-rails [![Code Climate][]][code-climate] [![Gem Version][]][gem-version]
|
|
2
2
|
|
|
3
3
|
`rspec-rails` brings the [RSpec][] testing framework to [Ruby on Rails][]
|
|
4
4
|
as a drop-in alternative to its default testing framework, Minitest.
|
|
@@ -8,10 +8,11 @@ They’re also specifications (or _specs,_ for short):
|
|
|
8
8
|
detailed explanations of how the application is supposed to behave,
|
|
9
9
|
expressed in plain English.
|
|
10
10
|
|
|
11
|
+
Use **[`rspec-rails` 4.x][]** for Rails from 5.0 to 6.0.
|
|
11
12
|
Use **[`rspec-rails` 3.x][]** for Rails earlier than 5.0.
|
|
12
13
|
Use **[`rspec-rails` 1.x][]** for Rails 2.x.
|
|
13
14
|
|
|
14
|
-
[Build Status]: https://secure.travis-ci.org/rspec/rspec-rails.svg?branch=
|
|
15
|
+
[Build Status]: https://secure.travis-ci.org/rspec/rspec-rails.svg?branch=main
|
|
15
16
|
[travis-ci]: https://travis-ci.org/rspec/rspec-rails
|
|
16
17
|
[Code Climate]: https://codeclimate.com/github/rspec/rspec-rails.svg
|
|
17
18
|
[code-climate]: https://codeclimate.com/github/rspec/rspec-rails
|
|
@@ -21,23 +22,27 @@ Use **[`rspec-rails` 1.x][]** for Rails 2.x.
|
|
|
21
22
|
[Ruby on Rails]: https://rubyonrails.org/
|
|
22
23
|
[`rspec-rails` 1.x]: https://github.com/dchelimsky/rspec-rails
|
|
23
24
|
[`rspec-rails` 3.x]: https://github.com/rspec/rspec-rails/tree/3-9-maintenance
|
|
25
|
+
[`rspec-rails` 4.x]: https://github.com/rspec/rspec-rails/tree/4-1-maintenance
|
|
24
26
|
|
|
25
27
|
## Installation
|
|
26
28
|
|
|
29
|
+
**IMPORTANT** This README / branch refers to the 5.0.x series of releases.
|
|
30
|
+
See the [`main` branch on Github](https://github.com/rspec/rspec-rails/tree/main) for more up to date releases.
|
|
31
|
+
|
|
27
32
|
1. Add `rspec-rails` to **both** the `:development` and `:test` groups
|
|
28
33
|
of your app’s `Gemfile`:
|
|
29
34
|
|
|
30
35
|
```ruby
|
|
31
|
-
# Run against
|
|
36
|
+
# Run against this stable release
|
|
32
37
|
group :development, :test do
|
|
33
|
-
gem 'rspec-rails', '~>
|
|
38
|
+
gem 'rspec-rails', '~> 5.0.0'
|
|
34
39
|
end
|
|
35
40
|
|
|
36
|
-
# Or, run against the
|
|
37
|
-
# (requires
|
|
41
|
+
# Or, run against the main branch
|
|
42
|
+
# (requires main-branch versions of all related RSpec libraries)
|
|
38
43
|
group :development, :test do
|
|
39
44
|
%w[rspec-core rspec-expectations rspec-mocks rspec-rails rspec-support].each do |lib|
|
|
40
|
-
gem lib, git: "https://github.com/rspec/#{lib}.git", branch: '
|
|
45
|
+
gem lib, git: "https://github.com/rspec/#{lib}.git", branch: 'main'
|
|
41
46
|
end
|
|
42
47
|
end
|
|
43
48
|
```
|
|
@@ -184,17 +189,17 @@ In addition to [the matchers that come standard in RSpec][],
|
|
|
184
189
|
here are some extras that make it easier
|
|
185
190
|
to test the various parts of a Rails system:
|
|
186
191
|
|
|
187
|
-
| RSpec matcher | Delegates to
|
|
188
|
-
| ------------------------ |
|
|
189
|
-
| [`be_a_new`][] |
|
|
190
|
-
| [`render_template`][] | `assert_template`
|
|
191
|
-
| [`redirect_to`][] | `assert_redirect`
|
|
192
|
-
| [`route_to`] | `
|
|
193
|
-
| [`be_routable`] |
|
|
194
|
-
| [`have_http_status`][] |
|
|
195
|
-
| [`match_array`][] |
|
|
196
|
-
| [`have_been_enqueued`][] |
|
|
197
|
-
| [`have_enqueued_job`][] |
|
|
192
|
+
| RSpec matcher | Delegates to | Available in | Notes |
|
|
193
|
+
| ------------------------ | ------------------- | ------------------------------- | -------------------------------------------------------- |
|
|
194
|
+
| [`be_a_new`][] | | all | primarily intended for controller specs |
|
|
195
|
+
| [`render_template`][] | `assert_template` | request / controller / view | use with `expect(response).to` |
|
|
196
|
+
| [`redirect_to`][] | `assert_redirect` | request / controller | use with `expect(response).to` |
|
|
197
|
+
| [`route_to`] | `assert_recognizes` | routing / controller | use with `expect(...).to route_to` |
|
|
198
|
+
| [`be_routable`] | | routing / controller | use with `expect(...).not_to be_routable` |
|
|
199
|
+
| [`have_http_status`][] | | request / controller / feature | |
|
|
200
|
+
| [`match_array`][] | | all | for comparing arrays of ActiveRecord objects |
|
|
201
|
+
| [`have_been_enqueued`][] | | all | requires config: `ActiveJob::Base.queue_adapter = :test` |
|
|
202
|
+
| [`have_enqueued_job`][] | | all | requires config: `ActiveJob::Base.queue_adapter = :test` |
|
|
198
203
|
|
|
199
204
|
Follow the links above for examples of how each matcher is used.
|
|
200
205
|
|
|
@@ -16,7 +16,7 @@ module Rspec
|
|
|
16
16
|
return unless options[:request_specs]
|
|
17
17
|
|
|
18
18
|
template 'request_spec.rb',
|
|
19
|
-
File.join('spec/requests', class_path, "#{file_name}
|
|
19
|
+
File.join('spec/requests', class_path, "#{file_name}_spec.rb")
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def generate_controller_spec
|
|
@@ -27,7 +27,7 @@ module Rspec
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def generate_view_specs
|
|
30
|
-
return if actions.empty?
|
|
30
|
+
return if actions.empty? && behavior == :invoke
|
|
31
31
|
return unless options[:view_specs] && options[:template_engine]
|
|
32
32
|
|
|
33
33
|
empty_directory File.join("spec", "views", file_path)
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
require 'rails_helper'
|
|
2
2
|
|
|
3
3
|
RSpec.describe "<%= class_name.pluralize %>", <%= type_metatag(:request) %> do
|
|
4
|
-
<% namespaced_path = regular_class_path.join('/')
|
|
4
|
+
<% namespaced_path = regular_class_path.join('/') -%>
|
|
5
|
+
<% if actions.empty? -%>
|
|
6
|
+
describe "GET /index" do
|
|
7
|
+
pending "add some examples (or delete) #{__FILE__}"
|
|
8
|
+
end
|
|
9
|
+
<% end -%>
|
|
5
10
|
<% for action in actions -%>
|
|
6
11
|
describe "GET /<%= action %>" do
|
|
7
12
|
it "returns http success" do
|
|
@@ -5,7 +5,8 @@ module Rspec
|
|
|
5
5
|
# @private
|
|
6
6
|
class JobGenerator < Base
|
|
7
7
|
def create_job_spec
|
|
8
|
-
|
|
8
|
+
file_suffix = file_name.end_with?('job') ? 'spec.rb' : 'job_spec.rb'
|
|
9
|
+
template 'job_spec.rb.erb', File.join('spec/jobs', class_path, [file_name, file_suffix].join('_'))
|
|
9
10
|
end
|
|
10
11
|
end
|
|
11
12
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
require 'rails_helper'
|
|
2
2
|
|
|
3
3
|
<% module_namespacing do -%>
|
|
4
|
-
RSpec.describe <%= class_name
|
|
4
|
+
RSpec.describe <%= class_name %><%= "Job" unless class_name.end_with?("Job")%>, <%= type_metatag(:job) %> do
|
|
5
5
|
pending "add some examples to (or delete) #{__FILE__}"
|
|
6
6
|
end
|
|
7
7
|
<% end -%>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
require "rails_helper"
|
|
2
2
|
|
|
3
3
|
<% module_namespacing do -%>
|
|
4
|
-
RSpec.describe <%=
|
|
4
|
+
RSpec.describe <%= class_name.sub(/(Mailer)?$/, 'Mailer') %>, <%= type_metatag(:mailer) %> do
|
|
5
5
|
<% for action in actions -%>
|
|
6
6
|
describe "<%= action %>" do
|
|
7
|
-
let(:mail) { <%=
|
|
7
|
+
let(:mail) { <%= class_name.sub(/(Mailer)?$/, 'Mailer') %>.<%= action %> }
|
|
8
8
|
|
|
9
9
|
it "renders the headers" do
|
|
10
10
|
expect(mail.subject).to eq(<%= action.to_s.humanize.inspect %>)
|
|
@@ -5,7 +5,7 @@ class <%= class_name %>Preview < ActionMailer::Preview
|
|
|
5
5
|
|
|
6
6
|
# Preview this email at http://localhost:3000/rails/mailers/<%= file_path %>/<%= action %>
|
|
7
7
|
def <%= action %>
|
|
8
|
-
<%=
|
|
8
|
+
<%= class_name.sub(/(Mailer)?$/, 'Mailer') %>.<%= action %>
|
|
9
9
|
end
|
|
10
10
|
<% end -%>
|
|
11
11
|
|
|
@@ -94,7 +94,7 @@ RSpec.describe "/<%= name.underscore.pluralize %>", <%= type_metatag(:request) %
|
|
|
94
94
|
it "updates the requested <%= ns_file_name %>" do
|
|
95
95
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
|
96
96
|
patch <%= show_helper.tr('@', '') %>,
|
|
97
|
-
params: { <%= singular_table_name %>:
|
|
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
|
|
@@ -102,9 +102,9 @@ RSpec.describe "/<%= name.underscore.pluralize %>", <%= type_metatag(:request) %
|
|
|
102
102
|
it "renders a JSON response with the <%= ns_file_name %>" do
|
|
103
103
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
|
104
104
|
patch <%= show_helper.tr('@', '') %>,
|
|
105
|
-
params: { <%= singular_table_name %>:
|
|
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
|
|
|
@@ -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
|
-
<% if Rails::VERSION::STRING < '5.0' -%>
|
|
99
|
-
post :create, {<%= ns_file_name %>: valid_attributes}, valid_session
|
|
100
|
-
<% else -%>
|
|
101
82
|
post :create, params: {<%= ns_file_name %>: valid_attributes}, session: valid_session
|
|
102
|
-
<% end -%>
|
|
103
83
|
}.to change(<%= class_name %>, :count).by(1)
|
|
104
84
|
end
|
|
105
85
|
|
|
106
86
|
it "redirects to the created <%= ns_file_name %>" do
|
|
107
|
-
<% if Rails::VERSION::STRING < '5.0' -%>
|
|
108
|
-
post :create, {<%= ns_file_name %>: valid_attributes}, valid_session
|
|
109
|
-
<% else -%>
|
|
110
87
|
post :create, params: {<%= ns_file_name %>: valid_attributes}, session: valid_session
|
|
111
|
-
<% end -%>
|
|
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
|
-
<% if Rails::VERSION::STRING < '5.0' -%>
|
|
119
|
-
post :create, {<%= ns_file_name %>: invalid_attributes}, valid_session
|
|
120
|
-
<% else -%>
|
|
121
94
|
post :create, params: {<%= ns_file_name %>: invalid_attributes}, session: valid_session
|
|
122
|
-
<% end -%>
|
|
123
95
|
expect(response).to be_successful
|
|
124
96
|
end
|
|
125
97
|
end
|
|
@@ -133,22 +105,14 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
|
|
|
133
105
|
|
|
134
106
|
it "updates the requested <%= ns_file_name %>" do
|
|
135
107
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
|
136
|
-
<% if Rails::VERSION::STRING < '5.0' -%>
|
|
137
|
-
put :update, {id: <%= file_name %>.to_param, <%= ns_file_name %>: new_attributes}, valid_session
|
|
138
|
-
<% else -%>
|
|
139
108
|
put :update, params: {id: <%= file_name %>.to_param, <%= ns_file_name %>: new_attributes}, session: valid_session
|
|
140
|
-
<% end -%>
|
|
141
109
|
<%= file_name %>.reload
|
|
142
110
|
skip("Add assertions for updated state")
|
|
143
111
|
end
|
|
144
112
|
|
|
145
113
|
it "redirects to the <%= ns_file_name %>" do
|
|
146
114
|
<%= file_name %> = <%= class_name %>.create! valid_attributes
|
|
147
|
-
<% if Rails::VERSION::STRING < '5.0' -%>
|
|
148
|
-
put :update, {id: <%= file_name %>.to_param, <%= ns_file_name %>: valid_attributes}, valid_session
|
|
149
|
-
<% else -%>
|
|
150
115
|
put :update, params: {id: <%= file_name %>.to_param, <%= ns_file_name %>: valid_attributes}, session: valid_session
|
|
151
|
-
<% end -%>
|
|
152
116
|
expect(response).to redirect_to(<%= file_name %>)
|
|
153
117
|
end
|
|
154
118
|
end
|
|
@@ -156,11 +120,7 @@ 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
|
-
<% if Rails::VERSION::STRING < '5.0' -%>
|
|
160
|
-
put :update, {id: <%= file_name %>.to_param, <%= ns_file_name %>: invalid_attributes}, valid_session
|
|
161
|
-
<% else -%>
|
|
162
123
|
put :update, params: {id: <%= file_name %>.to_param, <%= ns_file_name %>: invalid_attributes}, session: valid_session
|
|
163
|
-
<% end -%>
|
|
164
124
|
expect(response).to be_successful
|
|
165
125
|
end
|
|
166
126
|
end
|
|
@@ -170,21 +130,13 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
|
|
|
170
130
|
it "destroys the requested <%= ns_file_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
|
|
@@ -14,6 +14,10 @@
|
|
|
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
|
+
|
|
17
21
|
# <%= class_name %>. As you add validations to <%= class_name %>, be sure to
|
|
18
22
|
# adjust the attributes here as well.
|
|
19
23
|
let(:valid_attributes) {
|
|
@@ -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,
|
|
@@ -55,7 +56,7 @@ module RSpec
|
|
|
55
56
|
end
|
|
56
57
|
|
|
57
58
|
# @private
|
|
58
|
-
def self.initialize_configuration(config) # rubocop:disable Metrics/MethodLength
|
|
59
|
+
def self.initialize_configuration(config) # rubocop:disable Metrics/MethodLength,Metrics/CyclomaticComplexity
|
|
59
60
|
config.backtrace_exclusion_patterns << /vendor\//
|
|
60
61
|
config.backtrace_exclusion_patterns << %r{lib/rspec/rails}
|
|
61
62
|
|
|
@@ -79,10 +80,8 @@ module RSpec
|
|
|
79
80
|
# `RSpec::Rails::FixtureSupport` directly instead
|
|
80
81
|
config.include RSpec::Rails::FixtureSupport
|
|
81
82
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
config.include RSpec::Rails::FileFixtureSupport
|
|
85
|
-
end
|
|
83
|
+
config.add_setting :file_fixture_path, default: 'spec/fixtures/files'
|
|
84
|
+
config.include RSpec::Rails::FileFixtureSupport
|
|
86
85
|
|
|
87
86
|
# Add support for fixture_path on fixture_file_upload
|
|
88
87
|
config.include RSpec::Rails::FixtureFileUploadSupport
|
|
@@ -105,7 +104,41 @@ module RSpec
|
|
|
105
104
|
end
|
|
106
105
|
|
|
107
106
|
def render_views?
|
|
108
|
-
rendering_views
|
|
107
|
+
rendering_views?
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
undef :rendering_views? if respond_to?(:rendering_views?)
|
|
111
|
+
def rendering_views?
|
|
112
|
+
!!rendering_views
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# Define boolean predicates rather than relying on rspec-core due
|
|
116
|
+
# to the bug fix in rspec/rspec-core#2736, note some of these
|
|
117
|
+
# predicates are a bit nonsensical, but they exist for backwards
|
|
118
|
+
# compatibility, we can tidy these up in `rspec-rails` 5.
|
|
119
|
+
undef :fixture_path? if respond_to?(:fixture_path?)
|
|
120
|
+
def fixture_path?
|
|
121
|
+
!!fixture_path
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
undef :global_fixtures? if respond_to?(:global_fixtures?)
|
|
125
|
+
def global_fixtures?
|
|
126
|
+
!!global_fixtures
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
undef :infer_base_class_for_anonymous_controllers? if respond_to?(:infer_base_class_for_anonymous_controllers?)
|
|
130
|
+
def infer_base_class_for_anonymous_controllers?
|
|
131
|
+
!!infer_base_class_for_anonymous_controllers
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
undef :use_instantiated_fixtures? if respond_to?(:use_instantiated_fixtures?)
|
|
135
|
+
def use_instantiated_fixtures?
|
|
136
|
+
!!use_instantiated_fixtures
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
undef :use_transactional_fixtures? if respond_to?(:use_transactional_fixtures?)
|
|
140
|
+
def use_transactional_fixtures?
|
|
141
|
+
!!use_transactional_fixtures
|
|
109
142
|
end
|
|
110
143
|
|
|
111
144
|
def infer_spec_type_from_file_location!
|
|
@@ -156,3 +189,4 @@ module RSpec
|
|
|
156
189
|
initialize_configuration RSpec.configuration
|
|
157
190
|
end
|
|
158
191
|
end
|
|
192
|
+
# rubocop: enable Metrics/ModuleLength
|
|
@@ -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`.
|
|
@@ -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
|
|
@@ -6,33 +6,49 @@ module RSpec
|
|
|
6
6
|
|
|
7
7
|
private
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
# In Rails 6.2 fixture file path needs to be relative to `file_fixture_path` instead, this change
|
|
10
|
+
# was brought in with a deprecation warning on 6.1. In Rails 6.2 expect to rework this to remove
|
|
11
|
+
# the old accessor.
|
|
12
|
+
if ::Rails.version.to_f >= 6.1
|
|
13
|
+
def rails_fixture_file_wrapper
|
|
14
|
+
RailsFixtureFileWrapper.file_fixture_path = nil
|
|
15
|
+
resolved_fixture_path =
|
|
16
|
+
if respond_to?(:file_fixture_path) && !file_fixture_path.nil?
|
|
17
|
+
file_fixture_path.to_s
|
|
18
|
+
else
|
|
19
|
+
(RSpec.configuration.fixture_path || '').to_s
|
|
20
|
+
end
|
|
21
|
+
RailsFixtureFileWrapper.file_fixture_path = File.join(resolved_fixture_path, '') unless resolved_fixture_path.strip.empty?
|
|
22
|
+
RailsFixtureFileWrapper.instance
|
|
23
|
+
end
|
|
24
|
+
else
|
|
25
|
+
def rails_fixture_file_wrapper
|
|
26
|
+
RailsFixtureFileWrapper.fixture_path = nil
|
|
27
|
+
resolved_fixture_path =
|
|
28
|
+
if respond_to?(:fixture_path) && !fixture_path.nil?
|
|
29
|
+
fixture_path.to_s
|
|
30
|
+
else
|
|
31
|
+
(RSpec.configuration.fixture_path || '').to_s
|
|
32
|
+
end
|
|
33
|
+
RailsFixtureFileWrapper.fixture_path = File.join(resolved_fixture_path, '') unless resolved_fixture_path.strip.empty?
|
|
34
|
+
RailsFixtureFileWrapper.instance
|
|
35
|
+
end
|
|
14
36
|
end
|
|
15
37
|
|
|
16
38
|
class RailsFixtureFileWrapper
|
|
17
39
|
include ActionDispatch::TestProcess if defined?(ActionDispatch::TestProcess)
|
|
18
40
|
|
|
41
|
+
if ::Rails.version.to_f >= 6.1
|
|
42
|
+
include ActiveSupport::Testing::FileFixtures
|
|
43
|
+
end
|
|
44
|
+
|
|
19
45
|
class << self
|
|
20
|
-
|
|
46
|
+
attr_accessor :fixture_path
|
|
21
47
|
|
|
22
48
|
# Get instance of wrapper
|
|
23
49
|
def instance
|
|
24
50
|
@instance ||= new
|
|
25
51
|
end
|
|
26
|
-
|
|
27
|
-
# Override fixture_path set
|
|
28
|
-
# to support Rails 3.0->3.1 using ActionController::TestCase class to resolve fixture_path
|
|
29
|
-
# see https://apidock.com/rails/v3.0.0/ActionDispatch/TestProcess/fixture_file_upload
|
|
30
|
-
def fixture_path=(value)
|
|
31
|
-
if ActionController::TestCase.respond_to?(:fixture_path)
|
|
32
|
-
ActionController::TestCase.fixture_path = value
|
|
33
|
-
end
|
|
34
|
-
@fixture_path = value
|
|
35
|
-
end
|
|
36
52
|
end
|
|
37
53
|
end
|
|
38
54
|
end
|
|
@@ -9,16 +9,20 @@ module RSpec
|
|
|
9
9
|
include RSpec::Rails::MinitestAssertionAdapter
|
|
10
10
|
include ActiveRecord::TestFixtures
|
|
11
11
|
|
|
12
|
+
# @private prevent ActiveSupport::TestFixtures to start a DB transaction.
|
|
13
|
+
# Monkey patched to avoid collisions with 'let(:name)' in Rails 6.1 and after
|
|
14
|
+
# and let(:method_name) before Rails 6.1.
|
|
15
|
+
def run_in_transaction?
|
|
16
|
+
current_example_name = (RSpec.current_example && RSpec.current_example.metadata[:description])
|
|
17
|
+
use_transactional_tests && !self.class.uses_transaction?(current_example_name)
|
|
18
|
+
end
|
|
19
|
+
|
|
12
20
|
included do
|
|
13
21
|
if RSpec.configuration.use_active_record?
|
|
14
22
|
include Fixtures
|
|
15
23
|
|
|
16
24
|
self.fixture_path = RSpec.configuration.fixture_path
|
|
17
|
-
|
|
18
|
-
self.use_transactional_tests = RSpec.configuration.use_transactional_fixtures
|
|
19
|
-
else
|
|
20
|
-
self.use_transactional_fixtures = RSpec.configuration.use_transactional_fixtures
|
|
21
|
-
end
|
|
25
|
+
self.use_transactional_tests = RSpec.configuration.use_transactional_fixtures
|
|
22
26
|
self.use_instantiated_fixtures = RSpec.configuration.use_instantiated_fixtures
|
|
23
27
|
|
|
24
28
|
fixtures RSpec.configuration.global_fixtures if RSpec.configuration.global_fixtures
|
|
@@ -50,13 +54,6 @@ module RSpec
|
|
|
50
54
|
end
|
|
51
55
|
end
|
|
52
56
|
end
|
|
53
|
-
|
|
54
|
-
if ::Rails.version.to_f >= 6.1
|
|
55
|
-
# @private return the example name for TestFixtures
|
|
56
|
-
def name
|
|
57
|
-
@example
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
57
|
end
|
|
61
58
|
end
|
|
62
59
|
end
|
|
@@ -22,11 +22,20 @@ module RSpec
|
|
|
22
22
|
@inbound_email = create_inbound_email(message)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
if defined?(::ApplicationMailbox) && ::ApplicationMailbox.router.respond_to?(:mailbox_for)
|
|
26
|
+
def matches?(mailbox)
|
|
27
|
+
@mailbox = mailbox
|
|
28
|
+
@receiver = ApplicationMailbox.router.mailbox_for(inbound_email)
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
@receiver == @mailbox
|
|
31
|
+
end
|
|
32
|
+
else
|
|
33
|
+
def matches?(mailbox)
|
|
34
|
+
@mailbox = mailbox
|
|
35
|
+
@receiver = ApplicationMailbox.router.send(:match_to_mailbox, inbound_email)
|
|
36
|
+
|
|
37
|
+
@receiver == @mailbox
|
|
38
|
+
end
|
|
30
39
|
end
|
|
31
40
|
|
|
32
41
|
def failure_message
|
|
@@ -41,7 +50,7 @@ module RSpec
|
|
|
41
50
|
"expected #{describe_inbound_email} not to route to #{mailbox}"
|
|
42
51
|
end
|
|
43
52
|
|
|
44
|
-
|
|
53
|
+
private
|
|
45
54
|
|
|
46
55
|
attr_reader :inbound_email, :mailbox, :receiver
|
|
47
56
|
|
|
@@ -163,7 +163,29 @@ module RSpec
|
|
|
163
163
|
return job[:at].nil? if @at == :no_wait
|
|
164
164
|
return false unless job[:at]
|
|
165
165
|
|
|
166
|
-
|
|
166
|
+
scheduled_at = Time.at(job[:at])
|
|
167
|
+
values_match?(@at, scheduled_at) || check_for_inprecise_value(scheduled_at)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def check_for_inprecise_value(scheduled_at)
|
|
171
|
+
return unless Time === @at && values_match?(@at.change(usec: 0), scheduled_at)
|
|
172
|
+
|
|
173
|
+
RSpec.warn_with((<<-WARNING).gsub(/^\s+\|/, '').chomp)
|
|
174
|
+
|[WARNING] Your expected `at(...)` value does not match the job scheduled_at value
|
|
175
|
+
|unless microseconds are removed. This precision error often occurs when checking
|
|
176
|
+
|values against `Time.current` / `Time.now` which have usec precision, but Rails
|
|
177
|
+
|uses `n.seconds.from_now` internally which has a usec count of `0`.
|
|
178
|
+
|
|
|
179
|
+
|Use `change(usec: 0)` to correct these values. For example:
|
|
180
|
+
|
|
|
181
|
+
|`Time.current.change(usec: 0)`
|
|
182
|
+
|
|
|
183
|
+
|Note: RSpec cannot do this for you because jobs can be scheduled with usec
|
|
184
|
+
|precision and we do not know wether it is on purpose or not.
|
|
185
|
+
|
|
|
186
|
+
|
|
|
187
|
+
WARNING
|
|
188
|
+
false
|
|
167
189
|
end
|
|
168
190
|
|
|
169
191
|
def set_expected_number(relativity, count)
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
if defined?(ActiveRecord::Relation)
|
|
1
|
+
if defined?(ActiveRecord::Relation) && defined?(RSpec::Matchers::BuiltIn::OperatorMatcher) # RSpec 4 removed OperatorMatcher
|
|
2
2
|
RSpec::Matchers::BuiltIn::OperatorMatcher.register(ActiveRecord::Relation, '=~', RSpec::Matchers::BuiltIn::ContainExactly)
|
|
3
3
|
end
|
data/lib/rspec/rails/version.rb
CHANGED
data/lib/rspec-rails.rb
CHANGED
|
@@ -7,13 +7,11 @@ module RSpec
|
|
|
7
7
|
# Railtie to hook into Rails.
|
|
8
8
|
class Railtie < ::Rails::Railtie
|
|
9
9
|
# As of Rails 5.1.0 you can register directories to work with `rake notes`
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
SourceAnnotationExtractor::Annotation.register_directories("spec")
|
|
16
|
-
end
|
|
10
|
+
require 'rails/source_annotation_extractor'
|
|
11
|
+
if ::Rails::VERSION::STRING >= '6.0'
|
|
12
|
+
::Rails::SourceAnnotationExtractor::Annotation.register_directories("spec")
|
|
13
|
+
else
|
|
14
|
+
SourceAnnotationExtractor::Annotation.register_directories("spec")
|
|
17
15
|
end
|
|
18
16
|
generators = config.app_generators
|
|
19
17
|
generators.integration_tool :rspec
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rspec-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 5.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Chelimsky
|
|
8
8
|
- Andy Lindeman
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain:
|
|
12
12
|
- |
|
|
@@ -44,7 +44,7 @@ cert_chain:
|
|
|
44
44
|
ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
|
|
45
45
|
F3MdtaDehhjC
|
|
46
46
|
-----END CERTIFICATE-----
|
|
47
|
-
date:
|
|
47
|
+
date: 2021-08-14 00:00:00.000000000 Z
|
|
48
48
|
dependencies:
|
|
49
49
|
- !ruby/object:Gem::Dependency
|
|
50
50
|
name: actionpack
|
|
@@ -52,112 +52,112 @@ dependencies:
|
|
|
52
52
|
requirements:
|
|
53
53
|
- - ">="
|
|
54
54
|
- !ruby/object:Gem::Version
|
|
55
|
-
version: '
|
|
55
|
+
version: '5.2'
|
|
56
56
|
type: :runtime
|
|
57
57
|
prerelease: false
|
|
58
58
|
version_requirements: !ruby/object:Gem::Requirement
|
|
59
59
|
requirements:
|
|
60
60
|
- - ">="
|
|
61
61
|
- !ruby/object:Gem::Version
|
|
62
|
-
version: '
|
|
62
|
+
version: '5.2'
|
|
63
63
|
- !ruby/object:Gem::Dependency
|
|
64
64
|
name: activesupport
|
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
|
66
66
|
requirements:
|
|
67
67
|
- - ">="
|
|
68
68
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: '
|
|
69
|
+
version: '5.2'
|
|
70
70
|
type: :runtime
|
|
71
71
|
prerelease: false
|
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
|
73
73
|
requirements:
|
|
74
74
|
- - ">="
|
|
75
75
|
- !ruby/object:Gem::Version
|
|
76
|
-
version: '
|
|
76
|
+
version: '5.2'
|
|
77
77
|
- !ruby/object:Gem::Dependency
|
|
78
78
|
name: railties
|
|
79
79
|
requirement: !ruby/object:Gem::Requirement
|
|
80
80
|
requirements:
|
|
81
81
|
- - ">="
|
|
82
82
|
- !ruby/object:Gem::Version
|
|
83
|
-
version: '
|
|
83
|
+
version: '5.2'
|
|
84
84
|
type: :runtime
|
|
85
85
|
prerelease: false
|
|
86
86
|
version_requirements: !ruby/object:Gem::Requirement
|
|
87
87
|
requirements:
|
|
88
88
|
- - ">="
|
|
89
89
|
- !ruby/object:Gem::Version
|
|
90
|
-
version: '
|
|
90
|
+
version: '5.2'
|
|
91
91
|
- !ruby/object:Gem::Dependency
|
|
92
92
|
name: rspec-core
|
|
93
93
|
requirement: !ruby/object:Gem::Requirement
|
|
94
94
|
requirements:
|
|
95
95
|
- - "~>"
|
|
96
96
|
- !ruby/object:Gem::Version
|
|
97
|
-
version: '3.
|
|
97
|
+
version: '3.10'
|
|
98
98
|
type: :runtime
|
|
99
99
|
prerelease: false
|
|
100
100
|
version_requirements: !ruby/object:Gem::Requirement
|
|
101
101
|
requirements:
|
|
102
102
|
- - "~>"
|
|
103
103
|
- !ruby/object:Gem::Version
|
|
104
|
-
version: '3.
|
|
104
|
+
version: '3.10'
|
|
105
105
|
- !ruby/object:Gem::Dependency
|
|
106
106
|
name: rspec-expectations
|
|
107
107
|
requirement: !ruby/object:Gem::Requirement
|
|
108
108
|
requirements:
|
|
109
109
|
- - "~>"
|
|
110
110
|
- !ruby/object:Gem::Version
|
|
111
|
-
version: '3.
|
|
111
|
+
version: '3.10'
|
|
112
112
|
type: :runtime
|
|
113
113
|
prerelease: false
|
|
114
114
|
version_requirements: !ruby/object:Gem::Requirement
|
|
115
115
|
requirements:
|
|
116
116
|
- - "~>"
|
|
117
117
|
- !ruby/object:Gem::Version
|
|
118
|
-
version: '3.
|
|
118
|
+
version: '3.10'
|
|
119
119
|
- !ruby/object:Gem::Dependency
|
|
120
120
|
name: rspec-mocks
|
|
121
121
|
requirement: !ruby/object:Gem::Requirement
|
|
122
122
|
requirements:
|
|
123
123
|
- - "~>"
|
|
124
124
|
- !ruby/object:Gem::Version
|
|
125
|
-
version: '3.
|
|
125
|
+
version: '3.10'
|
|
126
126
|
type: :runtime
|
|
127
127
|
prerelease: false
|
|
128
128
|
version_requirements: !ruby/object:Gem::Requirement
|
|
129
129
|
requirements:
|
|
130
130
|
- - "~>"
|
|
131
131
|
- !ruby/object:Gem::Version
|
|
132
|
-
version: '3.
|
|
132
|
+
version: '3.10'
|
|
133
133
|
- !ruby/object:Gem::Dependency
|
|
134
134
|
name: rspec-support
|
|
135
135
|
requirement: !ruby/object:Gem::Requirement
|
|
136
136
|
requirements:
|
|
137
137
|
- - "~>"
|
|
138
138
|
- !ruby/object:Gem::Version
|
|
139
|
-
version: '3.
|
|
139
|
+
version: '3.10'
|
|
140
140
|
type: :runtime
|
|
141
141
|
prerelease: false
|
|
142
142
|
version_requirements: !ruby/object:Gem::Requirement
|
|
143
143
|
requirements:
|
|
144
144
|
- - "~>"
|
|
145
145
|
- !ruby/object:Gem::Version
|
|
146
|
-
version: '3.
|
|
146
|
+
version: '3.10'
|
|
147
147
|
- !ruby/object:Gem::Dependency
|
|
148
148
|
name: ammeter
|
|
149
149
|
requirement: !ruby/object:Gem::Requirement
|
|
150
150
|
requirements:
|
|
151
151
|
- - "~>"
|
|
152
152
|
- !ruby/object:Gem::Version
|
|
153
|
-
version: 1.1.
|
|
153
|
+
version: 1.1.5
|
|
154
154
|
type: :development
|
|
155
155
|
prerelease: false
|
|
156
156
|
version_requirements: !ruby/object:Gem::Requirement
|
|
157
157
|
requirements:
|
|
158
158
|
- - "~>"
|
|
159
159
|
- !ruby/object:Gem::Version
|
|
160
|
-
version: 1.1.
|
|
160
|
+
version: 1.1.5
|
|
161
161
|
- !ruby/object:Gem::Dependency
|
|
162
162
|
name: aruba
|
|
163
163
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -296,11 +296,11 @@ licenses:
|
|
|
296
296
|
- MIT
|
|
297
297
|
metadata:
|
|
298
298
|
bug_tracker_uri: https://github.com/rspec/rspec-rails/issues
|
|
299
|
-
changelog_uri: https://github.com/rspec/rspec-rails/blob/
|
|
299
|
+
changelog_uri: https://github.com/rspec/rspec-rails/blob/v5.0.2/Changelog.md
|
|
300
300
|
documentation_uri: https://rspec.info/documentation/
|
|
301
301
|
mailing_list_uri: https://groups.google.com/forum/#!forum/rspec
|
|
302
302
|
source_code_uri: https://github.com/rspec/rspec-rails
|
|
303
|
-
post_install_message:
|
|
303
|
+
post_install_message:
|
|
304
304
|
rdoc_options:
|
|
305
305
|
- "--charset=UTF-8"
|
|
306
306
|
require_paths:
|
|
@@ -316,8 +316,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
316
316
|
- !ruby/object:Gem::Version
|
|
317
317
|
version: '0'
|
|
318
318
|
requirements: []
|
|
319
|
-
rubygems_version: 3.
|
|
320
|
-
signing_key:
|
|
319
|
+
rubygems_version: 3.2.22
|
|
320
|
+
signing_key:
|
|
321
321
|
specification_version: 4
|
|
322
322
|
summary: RSpec for Rails
|
|
323
323
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|