rspec-rails 4.0.0.rc1 → 4.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Changelog.md +75 -52
- data/README.md +22 -17
- 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/scaffold/templates/api_request_spec.rb +3 -3
- data/lib/generators/rspec/scaffold/templates/request_spec.rb +4 -0
- data/lib/rspec/rails/configuration.rb +39 -2
- 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/system_example_group.rb +8 -3
- data/lib/rspec/rails/extensions/active_record/proxy.rb +4 -1
- data/lib/rspec/rails/fixture_file_upload_support.rb +7 -12
- data/lib/rspec/rails/fixture_support.rb +7 -7
- data/lib/rspec/rails/matchers/active_job.rb +29 -3
- data/lib/rspec/rails/matchers/have_enqueued_mail.rb +3 -3
- data/lib/rspec/rails/matchers/relation_match_array.rb +1 -1
- data/lib/rspec/rails/version.rb +1 -1
- metadata +20 -20
- 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: 9aed74b202a650d1d357c9f67149cc1ef9a90851e9f6584f508d4ea9425d1f95
|
4
|
+
data.tar.gz: 25546684b5d38d12eaf6decf5b37082f716bdb91c47795ae320282254bd512e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 179cb4950fe52f8ce4a36751b9b91e75eb399cc2f688a851ffad10cef3e8c8271d97eec0a2f073f3a09ad3f2290cf5f5149cc36886bece17c03f934481ae9014
|
7
|
+
data.tar.gz: 2b209184a885d39a67bdead0354657634cddbe24dede2c4ba069c9aebcf0cd4d08a1aaf49241dab05f24d508af0e1ced7a66b50cb7b904c7514167a36f35c062
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/Changelog.md
CHANGED
@@ -1,47 +1,57 @@
|
|
1
|
-
### 4.
|
2
|
-
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.0.beta4...v4.0.0.rc1)
|
3
|
-
|
4
|
-
Enhancements:
|
5
|
-
|
6
|
-
* Allow `ActiveJob` matchers `#on_queue` modifier to take symbolic queue names. (Nils Sommer, #2283)
|
7
|
-
* The scaffold generator now generates request specs in preference to controller specs.
|
8
|
-
(Luka Lüdicke, #2288)
|
9
|
-
* Add configuration option to disable ActiveRecord. (Jon Rowe, Phil Pirozhkov, Hermann Mayer, #2266)
|
1
|
+
### 4.1.1 / 2021-03-09
|
10
2
|
|
11
3
|
Bug Fixes:
|
12
4
|
|
13
|
-
*
|
14
|
-
|
15
|
-
* Allow changing `ActiveJob::Base.queue_adapter` inside a system spec.
|
16
|
-
(Jonathan Rochkind, #2242)
|
17
|
-
* `rails generate generator` command now creates related spec file (Joel Azemar, #2217)
|
18
|
-
* Relax upper `capybara` version constraint to allow for Capybara 3.x (Phil Pirozhkov, #2281)
|
5
|
+
* Remove generated specs when destroying a generated controller.
|
6
|
+
(@Naokimi, #2475)
|
19
7
|
|
20
|
-
### 4.
|
21
|
-
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.
|
8
|
+
### 4.1.0 / 2021-03-06
|
9
|
+
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.2...v4.1.0)
|
22
10
|
|
23
11
|
Enhancements:
|
24
12
|
|
25
|
-
*
|
26
|
-
|
27
|
-
*
|
28
|
-
|
29
|
-
*
|
30
|
-
|
13
|
+
* Issue a warning when using job matchers with `#at` mis-match on `usec` precision.
|
14
|
+
(Jon Rowe, #2350)
|
15
|
+
* Generated request specs now have a bare `_spec` suffix instead of `request_spec`.
|
16
|
+
(Eloy Espinaco, Luka Lüdicke, #2355, #2356, #2378)
|
17
|
+
* Generated scaffold now includes engine route helpers when inside a mountable engine.
|
18
|
+
(Andrew W. Lee, #2372)
|
19
|
+
* Improve request spec "controller" scafold when no action is specified.
|
20
|
+
(Thomas Hareau, #2399)
|
21
|
+
* Introduce testing snippets concept (Phil Pirozhkov, Benoit Tigeot, #2423)
|
22
|
+
* Prevent collisions with `let(:name)` for Rails 6.1 and `let(:method_name)` on older
|
23
|
+
Rails. (Benoit Tigeot, #2461)
|
24
|
+
|
25
|
+
### 4.0.2 / 2020-12-26
|
26
|
+
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.1...v4.0.2)
|
31
27
|
|
32
28
|
Bug Fixes:
|
33
29
|
|
34
|
-
*
|
35
|
-
|
36
|
-
*
|
37
|
-
|
38
|
-
*
|
30
|
+
* Indent all extra failure lines output from system specs. (Alex Robbin, #2321)
|
31
|
+
* Generated request spec for update now uses the correct let. (Paul Hanyzewski, #2344)
|
32
|
+
* Return `true`/`false` from predicate methods in config rather than raw values.
|
33
|
+
(Phil Pirozhkov, Jon Rowe, #2353, #2354)
|
34
|
+
* Remove old #fixture_path feature detection code which broke under newer Rails.
|
35
|
+
(Koen Punt, Jon Rowe, #2370)
|
36
|
+
|
37
|
+
### 4.0.1 / 2020-05-16
|
38
|
+
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.0...v4.0.1)
|
39
|
+
|
40
|
+
Bug Fixes:
|
41
|
+
|
42
|
+
* Remove warning when calling `driven_by` in system specs. (Aubin Lorieux, #2302)
|
43
|
+
* Fix comparison of times for `#at` in job matchers. (Jon Rowe, Markus Doits, #2304)
|
44
|
+
* Allow `have_enqueued_mail` to match when a sub class of `ActionMailer::DeliveryJob`
|
45
|
+
is set using `<Class>.delivery_job=`. (Atsushi Yoshida #2305)
|
46
|
+
* Restore Ruby 2.2.x compatibility. (Jon Rowe, #2332)
|
47
|
+
* Add `required_ruby_version` to gem spec. (Marc-André Lafortune, #2319, #2338)
|
39
48
|
|
40
|
-
### 4.0.0
|
41
|
-
[Full Changelog](https://github.com/rspec/rspec-rails/compare/
|
49
|
+
### 4.0.0 / 2020-03-24
|
50
|
+
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v3.9.1...v4.0.0)
|
42
51
|
|
43
52
|
Enhancements:
|
44
53
|
|
54
|
+
* Adds support for Rails 6. (Penelope Phippen, Benoit Tigeot, Jon Rowe, #2071)
|
45
55
|
* Adds support for JRuby on Rails 5.2 and 6
|
46
56
|
* Add support for parameterised mailers (Ignatius Reza, #2125)
|
47
57
|
* Add ActionMailbox spec helpers and test type (James Dabbs, #2119)
|
@@ -52,28 +62,18 @@ Enhancements:
|
|
52
62
|
* Improve path parsing in view specs render options. (John Hawthorn, #2115)
|
53
63
|
* Add routing spec template as an option for generating controller specs.
|
54
64
|
(David Revelo, #2134)
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
*
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
Bug Fixes:
|
68
|
-
|
69
|
-
* Fix version dependencies in gemspec.
|
70
|
-
|
71
|
-
### 4.0.0.beta1
|
72
|
-
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v3.9.0...v4.0.0.beta1)
|
73
|
-
|
74
|
-
Enhancements:
|
75
|
-
|
76
|
-
* Adds support for Rails 6. (Penelope Phippen, Benoit Tigeot, Jon Rowe, #2071)
|
65
|
+
* Add argument matcher support to `have_enqueued_*` matchers. (Phil Pirozhkov, #2206)
|
66
|
+
* Switch generated templates to use ruby 1.9 hash keys. (Tanbir Hasan, #2224)
|
67
|
+
* Add `have_been_performed`/`have_performed_job`/`perform_job` ActiveJob
|
68
|
+
matchers (Isaac Seymour, #1785)
|
69
|
+
* Default to generating request specs rather than controller specs when
|
70
|
+
generating a controller (Luka Lüdicke, #2222)
|
71
|
+
* Allow `ActiveJob` matchers `#on_queue` modifier to take symbolic queue names. (Nils Sommer, #2283)
|
72
|
+
* The scaffold generator now generates request specs in preference to controller specs.
|
73
|
+
(Luka Lüdicke, #2288)
|
74
|
+
* Add configuration option to disable ActiveRecord. (Jon Rowe, Phil Pirozhkov, Hermann Mayer, #2266)
|
75
|
+
* Set `ActionDispatch::SystemTesting::Server.silence_puma = true` when running system specs.
|
76
|
+
(ta1kt0me, Benoit Tigeot, #2289)
|
77
77
|
|
78
78
|
Bug Fixes:
|
79
79
|
|
@@ -83,12 +83,35 @@ Bug Fixes:
|
|
83
83
|
deprecated. (Pavel Rosický, #2092)
|
84
84
|
* `ActionView::Template#formats` has been deprecated and replaced by
|
85
85
|
`ActionView::Template#format`(Seb Jacobs, #2100)
|
86
|
+
* Replace `before_teardown` as well as `after_teardown` to ensure screenshots
|
87
|
+
are generated correctly. (Jon Rowe, #2164)
|
88
|
+
* `ActionView::FixtureResolver#hash` has been renamed to `ActionView::FixtureResolver#data`.
|
89
|
+
(Penelope Phippen, #2076)
|
90
|
+
* Prevent `driven_by(:selenium)` being called due to hook precedence.
|
91
|
+
(Takumi Shotoku, #2188)
|
92
|
+
* Prevent a `WrongScopeError` being thrown during loading fixtures on Rails
|
93
|
+
6.1 development version. (Edouard Chin, #2215)
|
94
|
+
* Fix Mocha mocking support with `should`. (Phil Pirozhkov, #2256)
|
95
|
+
* Restore previous conditional check for setting `default_url_options` in feature
|
96
|
+
specs, prevents a `NoMethodError` in some scenarios. (Eugene Kenny, #2277)
|
97
|
+
* Allow changing `ActiveJob::Base.queue_adapter` inside a system spec.
|
98
|
+
(Jonathan Rochkind, #2242)
|
99
|
+
* `rails generate generator` command now creates related spec file (Joel Azemar, #2217)
|
100
|
+
* Relax upper `capybara` version constraint to allow for Capybara 3.x (Phil Pirozhkov, #2281)
|
101
|
+
* Clear ActionMailer test mailbox after each example (Benoit Tigeot, #2293)
|
86
102
|
|
87
103
|
Breaking Changes:
|
88
104
|
|
89
105
|
* Drops support for Rails below 5.0
|
90
106
|
* Drops support for Ruby below 2.3
|
91
107
|
|
108
|
+
### 3.9.1 / 2020-03-10
|
109
|
+
[Full Changelog](http://github.com/rspec/rspec-rails/compare/v3.9.0...v3.9.1)
|
110
|
+
|
111
|
+
Bug Fixes:
|
112
|
+
|
113
|
+
* Add missing require for have_enqueued_mail matcher. (Ignatius Reza, #2117)
|
114
|
+
|
92
115
|
### 3.9.0 / 2019-10-08
|
93
116
|
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v3.8.3...v3.9.0)
|
94
117
|
|
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,9 +8,10 @@ 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` 3.x][]** for Rails earlier than 5.0.
|
11
12
|
Use **[`rspec-rails` 1.x][]** for Rails 2.x.
|
12
13
|
|
13
|
-
[Build Status]: https://secure.travis-ci.org/rspec/rspec-rails.svg?branch=
|
14
|
+
[Build Status]: https://secure.travis-ci.org/rspec/rspec-rails.svg?branch=main
|
14
15
|
[travis-ci]: https://travis-ci.org/rspec/rspec-rails
|
15
16
|
[Code Climate]: https://codeclimate.com/github/rspec/rspec-rails.svg
|
16
17
|
[code-climate]: https://codeclimate.com/github/rspec/rspec-rails
|
@@ -19,23 +20,27 @@ Use **[`rspec-rails` 1.x][]** for Rails 2.x.
|
|
19
20
|
[RSpec]: https://rspec.info/
|
20
21
|
[Ruby on Rails]: https://rubyonrails.org/
|
21
22
|
[`rspec-rails` 1.x]: https://github.com/dchelimsky/rspec-rails
|
23
|
+
[`rspec-rails` 3.x]: https://github.com/rspec/rspec-rails/tree/3-9-maintenance
|
22
24
|
|
23
25
|
## Installation
|
24
26
|
|
27
|
+
**IMPORTANT** This README / branch refers to the `4.1.x` series of releases.
|
28
|
+
See the [`main` branch on Github](https://github.com/rspec/rspec-rails/tree/main) for more up to date releases.
|
29
|
+
|
25
30
|
1. Add `rspec-rails` to **both** the `:development` and `:test` groups
|
26
31
|
of your app’s `Gemfile`:
|
27
32
|
|
28
33
|
```ruby
|
29
34
|
# Run against the latest stable release
|
30
35
|
group :development, :test do
|
31
|
-
gem 'rspec-rails', '~> 4.0'
|
36
|
+
gem 'rspec-rails', '~> 4.1.0'
|
32
37
|
end
|
33
38
|
|
34
|
-
# Or, run against the
|
35
|
-
# (requires
|
39
|
+
# Or, run against the main branch
|
40
|
+
# (requires main-branch versions of all related RSpec libraries)
|
36
41
|
group :development, :test do
|
37
42
|
%w[rspec-core rspec-expectations rspec-mocks rspec-rails rspec-support].each do |lib|
|
38
|
-
gem lib, git: "https://github.com/rspec/#{lib}.git", branch: '
|
43
|
+
gem lib, git: "https://github.com/rspec/#{lib}.git", branch: 'main'
|
39
44
|
end
|
40
45
|
end
|
41
46
|
```
|
@@ -182,17 +187,17 @@ In addition to [the matchers that come standard in RSpec][],
|
|
182
187
|
here are some extras that make it easier
|
183
188
|
to test the various parts of a Rails system:
|
184
189
|
|
185
|
-
| RSpec matcher | Delegates to
|
186
|
-
| ------------------------ |
|
187
|
-
| [`be_a_new`][] |
|
188
|
-
| [`render_template`][] | `assert_template`
|
189
|
-
| [`redirect_to`][] | `assert_redirect`
|
190
|
-
| [`route_to`] | `
|
191
|
-
| [`be_routable`] |
|
192
|
-
| [`have_http_status`][] |
|
193
|
-
| [`match_array`][] |
|
194
|
-
| [`have_been_enqueued`][] |
|
195
|
-
| [`have_enqueued_job`][] |
|
190
|
+
| RSpec matcher | Delegates to | Available in | Notes |
|
191
|
+
| ------------------------ | ------------------- | ------------------------------- | -------------------------------------------------------- |
|
192
|
+
| [`be_a_new`][] | | all | primarily intended for controller specs |
|
193
|
+
| [`render_template`][] | `assert_template` | request / controller / view | use with `expect(response).to` |
|
194
|
+
| [`redirect_to`][] | `assert_redirect` | request / controller | use with `expect(response).to` |
|
195
|
+
| [`route_to`] | `assert_recognizes` | routing / controller | use with `expect(...).to route_to` |
|
196
|
+
| [`be_routable`] | | routing / controller | use with `expect(...).not_to be_routable` |
|
197
|
+
| [`have_http_status`][] | | request / controller / feature | |
|
198
|
+
| [`match_array`][] | | all | for comparing arrays of ActiveRecord objects |
|
199
|
+
| [`have_been_enqueued`][] | | all | requires config: `ActiveJob::Base.queue_adapter = :test` |
|
200
|
+
| [`have_enqueued_job`][] | | all | requires config: `ActiveJob::Base.queue_adapter = :test` |
|
196
201
|
|
197
202
|
Follow the links above for examples of how each matcher is used.
|
198
203
|
|
@@ -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
|
@@ -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
|
|
@@ -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,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
|
|
@@ -105,7 +106,41 @@ module RSpec
|
|
105
106
|
end
|
106
107
|
|
107
108
|
def render_views?
|
108
|
-
rendering_views
|
109
|
+
rendering_views?
|
110
|
+
end
|
111
|
+
|
112
|
+
undef :rendering_views? if respond_to?(:rendering_views?)
|
113
|
+
def rendering_views?
|
114
|
+
!!rendering_views
|
115
|
+
end
|
116
|
+
|
117
|
+
# Define boolean predicates rather than relying on rspec-core due
|
118
|
+
# to the bug fix in rspec/rspec-core#2736, note some of these
|
119
|
+
# predicates are a bit nonsensical, but they exist for backwards
|
120
|
+
# compatibility, we can tidy these up in `rspec-rails` 5.
|
121
|
+
undef :fixture_path? if respond_to?(:fixture_path?)
|
122
|
+
def fixture_path?
|
123
|
+
!!fixture_path
|
124
|
+
end
|
125
|
+
|
126
|
+
undef :global_fixtures? if respond_to?(:global_fixtures?)
|
127
|
+
def global_fixtures?
|
128
|
+
!!global_fixtures
|
129
|
+
end
|
130
|
+
|
131
|
+
undef :infer_base_class_for_anonymous_controllers? if respond_to?(:infer_base_class_for_anonymous_controllers?)
|
132
|
+
def infer_base_class_for_anonymous_controllers?
|
133
|
+
!!infer_base_class_for_anonymous_controllers
|
134
|
+
end
|
135
|
+
|
136
|
+
undef :use_instantiated_fixtures? if respond_to?(:use_instantiated_fixtures?)
|
137
|
+
def use_instantiated_fixtures?
|
138
|
+
!!use_instantiated_fixtures
|
139
|
+
end
|
140
|
+
|
141
|
+
undef :use_transactional_fixtures? if respond_to?(:use_transactional_fixtures?)
|
142
|
+
def use_transactional_fixtures?
|
143
|
+
!!use_transactional_fixtures
|
109
144
|
end
|
110
145
|
|
111
146
|
def infer_spec_type_from_file_location!
|
@@ -137,6 +172,7 @@ module RSpec
|
|
137
172
|
|
138
173
|
if RSpec::Rails::FeatureCheck.has_action_mailer?
|
139
174
|
config.include RSpec::Rails::MailerExampleGroup, type: :mailer
|
175
|
+
config.after { ActionMailer::Base.deliveries.clear }
|
140
176
|
end
|
141
177
|
|
142
178
|
if RSpec::Rails::FeatureCheck.has_active_job?
|
@@ -155,3 +191,4 @@ module RSpec
|
|
155
191
|
initialize_configuration RSpec.configuration
|
156
192
|
end
|
157
193
|
end
|
194
|
+
# 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.
|
@@ -50,6 +50,10 @@ module RSpec
|
|
50
50
|
end
|
51
51
|
|
52
52
|
included do |other|
|
53
|
+
ActiveSupport.on_load(:action_dispatch_system_test_case) do
|
54
|
+
ActionDispatch::SystemTesting::Server.silence_puma = true
|
55
|
+
end
|
56
|
+
|
53
57
|
begin
|
54
58
|
require 'capybara'
|
55
59
|
require 'action_dispatch/system_test_case'
|
@@ -92,8 +96,8 @@ module RSpec
|
|
92
96
|
end
|
93
97
|
end
|
94
98
|
|
95
|
-
def driven_by(
|
96
|
-
@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)
|
97
101
|
end
|
98
102
|
|
99
103
|
before do
|
@@ -110,7 +114,8 @@ module RSpec
|
|
110
114
|
original_after_teardown.bind(self).call
|
111
115
|
ensure
|
112
116
|
myio = $stdout
|
113
|
-
|
117
|
+
myio.rewind
|
118
|
+
RSpec.current_example.metadata[:extra_failure_lines] = myio.readlines
|
114
119
|
$stdout = orig_stdout
|
115
120
|
end
|
116
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
|
@@ -8,7 +8,12 @@ module RSpec
|
|
8
8
|
|
9
9
|
def rails_fixture_file_wrapper
|
10
10
|
RailsFixtureFileWrapper.fixture_path = nil
|
11
|
-
resolved_fixture_path =
|
11
|
+
resolved_fixture_path =
|
12
|
+
if respond_to?(:fixture_path) && !fixture_path.nil?
|
13
|
+
fixture_path.to_s
|
14
|
+
else
|
15
|
+
(RSpec.configuration.fixture_path || '').to_s
|
16
|
+
end
|
12
17
|
RailsFixtureFileWrapper.fixture_path = File.join(resolved_fixture_path, '') unless resolved_fixture_path.strip.empty?
|
13
18
|
RailsFixtureFileWrapper.instance
|
14
19
|
end
|
@@ -17,22 +22,12 @@ module RSpec
|
|
17
22
|
include ActionDispatch::TestProcess if defined?(ActionDispatch::TestProcess)
|
18
23
|
|
19
24
|
class << self
|
20
|
-
|
25
|
+
attr_accessor :fixture_path
|
21
26
|
|
22
27
|
# Get instance of wrapper
|
23
28
|
def instance
|
24
29
|
@instance ||= new
|
25
30
|
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
31
|
end
|
37
32
|
end
|
38
33
|
end
|
@@ -9,6 +9,13 @@ 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
|
+
use_transactional_tests && !self.class.uses_transaction?(self)
|
17
|
+
end
|
18
|
+
|
12
19
|
included do
|
13
20
|
if RSpec.configuration.use_active_record?
|
14
21
|
include Fixtures
|
@@ -50,13 +57,6 @@ module RSpec
|
|
50
57
|
end
|
51
58
|
end
|
52
59
|
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
60
|
end
|
61
61
|
end
|
62
62
|
end
|
@@ -30,8 +30,12 @@ module RSpec
|
|
30
30
|
self
|
31
31
|
end
|
32
32
|
|
33
|
-
def at(
|
34
|
-
|
33
|
+
def at(time_or_date)
|
34
|
+
case time_or_date
|
35
|
+
when Time then @at = Time.at(time_or_date.to_f)
|
36
|
+
else
|
37
|
+
@at = time_or_date
|
38
|
+
end
|
35
39
|
self
|
36
40
|
end
|
37
41
|
|
@@ -159,7 +163,29 @@ module RSpec
|
|
159
163
|
return job[:at].nil? if @at == :no_wait
|
160
164
|
return false unless job[:at]
|
161
165
|
|
162
|
-
|
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
|
163
189
|
end
|
164
190
|
|
165
191
|
def set_expected_number(relativity, count)
|
@@ -131,15 +131,15 @@ module RSpec
|
|
131
131
|
end
|
132
132
|
|
133
133
|
def legacy_mail?(job)
|
134
|
-
job[:job]
|
134
|
+
job[:job] <= ActionMailer::DeliveryJob
|
135
135
|
end
|
136
136
|
|
137
137
|
def parameterized_mail?(job)
|
138
|
-
RSpec::Rails::FeatureCheck.has_action_mailer_parameterized? && job[:job]
|
138
|
+
RSpec::Rails::FeatureCheck.has_action_mailer_parameterized? && job[:job] <= ActionMailer::Parameterized::DeliveryJob
|
139
139
|
end
|
140
140
|
|
141
141
|
def unified_mail?(job)
|
142
|
-
RSpec::Rails::FeatureCheck.has_action_mailer_unified_delivery? && job[:job]
|
142
|
+
RSpec::Rails::FeatureCheck.has_action_mailer_unified_delivery? && job[:job] <= ActionMailer::MailDeliveryJob
|
143
143
|
end
|
144
144
|
end
|
145
145
|
# @api public
|
@@ -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
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.
|
4
|
+
version: 4.1.1
|
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-03-09 00:00:00.000000000 Z
|
48
48
|
dependencies:
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: actionpack
|
@@ -94,70 +94,70 @@ dependencies:
|
|
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/v4.
|
299
|
+
changelog_uri: https://github.com/rspec/rspec-rails/blob/v4.1.1/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:
|
@@ -309,15 +309,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
309
309
|
requirements:
|
310
310
|
- - ">="
|
311
311
|
- !ruby/object:Gem::Version
|
312
|
-
version:
|
312
|
+
version: 2.2.0
|
313
313
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
314
314
|
requirements:
|
315
|
-
- - "
|
315
|
+
- - ">="
|
316
316
|
- !ruby/object:Gem::Version
|
317
|
-
version:
|
317
|
+
version: '0'
|
318
318
|
requirements: []
|
319
|
-
rubygems_version: 3.
|
320
|
-
signing_key:
|
319
|
+
rubygems_version: 3.2.4
|
320
|
+
signing_key:
|
321
321
|
specification_version: 4
|
322
322
|
summary: RSpec for Rails
|
323
323
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|