rspec-rails 6.1.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/Changelog.md +89 -3
  4. data/README.md +27 -25
  5. data/lib/generators/rspec/generator/generator_generator.rb +2 -2
  6. data/lib/generators/rspec/generator/templates/generator_spec.rb +1 -2
  7. data/lib/generators/rspec/install/templates/spec/rails_helper.rb +17 -10
  8. data/lib/generators/rspec/mailer/mailer_generator.rb +4 -2
  9. data/lib/generators/rspec/mailer/templates/preview.rb +3 -3
  10. data/lib/generators/rspec/scaffold/templates/controller_spec.rb +0 -15
  11. data/lib/generators/rspec/scaffold/templates/index_spec.rb +1 -1
  12. data/lib/generators/rspec/scaffold/templates/request_spec.rb +0 -15
  13. data/lib/rspec/rails/configuration.rb +4 -2
  14. data/lib/rspec/rails/example/mailbox_example_group.rb +1 -1
  15. data/lib/rspec/rails/example/rails_example_group.rb +5 -7
  16. data/lib/rspec/rails/example/routing_example_group.rb +0 -2
  17. data/lib/rspec/rails/example/system_example_group.rb +9 -1
  18. data/lib/rspec/rails/fixture_support.rb +5 -6
  19. data/lib/rspec/rails/matchers/action_cable/have_broadcasted_to.rb +10 -3
  20. data/lib/rspec/rails/matchers/action_cable.rb +6 -1
  21. data/lib/rspec/rails/matchers/active_job.rb +67 -8
  22. data/lib/rspec/rails/matchers/have_enqueued_mail.rb +34 -2
  23. data/lib/rspec/rails/matchers/have_http_status.rb +3 -7
  24. data/lib/rspec/rails/tasks/rspec.rake +3 -1
  25. data/lib/rspec/rails/version.rb +1 -1
  26. data/lib/rspec-rails.rb +17 -0
  27. data.tar.gz.sig +0 -0
  28. metadata +20 -21
  29. metadata.gz.sig +0 -0
  30. data/lib/generators/rspec/integration/integration_generator.rb +0 -29
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4670e0b41ea2e22cb7a3fd5d28a421fe82fed0c591dbb245e011b497a1ac81f3
4
- data.tar.gz: a3cf937f37a03c114b8397216d034eae1645ea8575906f6f5a444973a1626419
3
+ metadata.gz: 725cbfd52d9f763648a595bba0a46d7c0905548e04b988f7c451a0b23ec5e283
4
+ data.tar.gz: ae2f038303eca35e63674c059e4ebe3b3788c47e52bd397ed67c5b857b8f2e19
5
5
  SHA512:
6
- metadata.gz: dd476082c87a5735996ce66d0efcf7bb1f5860b81118e05b71388872b50a11bb28d6fb981a23aed71597c45585244aa4c5d53a45c6d8500a751e36fa8d4f3039
7
- data.tar.gz: b996549661e01669b60767064e24b7dd7836ce79db985048856d7c98c9ed5892d04551050dbaa3727c2a358026990611559144c824f198a85b7c78c3651e3401
6
+ metadata.gz: 3949cffce869076c1b3d84806c76ce5c609b8ae7cc5cd906b44ed09d8df3be4c7d7603c4a2d0430d2337fe7d828b8879025bf32fcacecbb2da010f2108949479
7
+ data.tar.gz: 0a9c1d5d4968a49d52d6d68078761241431a28c8e2f023d3228536839c7a550d637996b050fbc771f475cc2b3951f0846be429a31fba9d124138f3d8b67d66e3
checksums.yaml.gz.sig CHANGED
Binary file
data/Changelog.md CHANGED
@@ -1,5 +1,91 @@
1
1
  ### Development
2
- [Full Changelog](https://github.com/rspec/rspec-rails/compare/v6.0.4...main)
2
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v7.1.0...7-1-maintenance)
3
+
4
+ ### 7.1.0 / 2024-11-09
5
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v7.0.2...v7.1.0)
6
+
7
+ Enhancements:
8
+
9
+ * Improve implicit description for ActionCable matchers `have_broadcasted_to` /
10
+ `have_broadcast`. (Simon Fish, #2795)
11
+ * Comment out `infer_spec_type_from_file_location!` in newly generated
12
+ `rails_helper.rb` files. (Jon Rowe, #2804)
13
+ * Allow turning off active job / mailer argument validation.
14
+ (Oli Peate, #2808)
15
+
16
+ ### 7.0.2 / 2024-11-09
17
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v7.0.1...v7.0.2)
18
+
19
+ Bug Fixes:
20
+
21
+ * Fix issue with `have_enqueued_mail` when jobs were incorrectly matched due
22
+ to refactoring in #2780. (David Runger, #2793)
23
+
24
+ ### 7.0.1 / 2024-09-03
25
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v7.0.0...v7.0.1)
26
+
27
+ Bug Fixes:
28
+
29
+ * Remove mutation of Rails constant in favour of public api. (Petrik de Heus, #2789)
30
+ * Cleanup Rails scaffold for unsupported versions. (Matt Jankowski, #2790)
31
+ * Remove deprecated scaffold that was unintentionally included in 7.0.0
32
+ (Jon Rowe, #2791)
33
+
34
+ ### 7.0.0 / 2024-09-02
35
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v6.1.5...v7.0.0)
36
+
37
+ Enhancements:
38
+
39
+ * Change default driver for system specs on Rails 7.2 to match its default.
40
+ (Steve Polito, #2746)
41
+ * Verify ActiveJob arguments by comparing to the method signature. (Oli Peate, #2745)
42
+ * Add suggestion to rails_helper.rb to skip when not in test mode. (Glauco Custódio, #2751)
43
+ * Add `at_priority` qualifier to `have_enqueued_job` set of matchers. (mbajur, #2759)
44
+ * Add spec directories to `rails stats` on Rails main / 8.0.0. (Petrik de Heus, #2781)
45
+
46
+ ### 6.1.5 / 2024-09-02
47
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v6.1.4...v6.1.5)
48
+
49
+ Bug Fixes:
50
+
51
+ * Restore old order of requiring support files. (Franz Liedke, #2785)
52
+ * Prevent running `rake spec:statsetup` on Rails main / 8.0.0. (Petrik de Heus, #2781)
53
+
54
+ ### 6.1.4 / 2024-08-15
55
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v6.1.3...v6.1.4)
56
+
57
+ Bug Fixes:
58
+
59
+ * Prevent `have_http_status` matcher raising an error when encountering a raw `Rack::MockResponse`.
60
+ (Christophe Bliard, #2771)
61
+ * Move Rails version conditional from index scaffold generated file to template. (Matt Jankowski, #2777)
62
+
63
+ ### 6.1.3 / 2024-06-19
64
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v6.1.2...v6.1.3)
65
+
66
+ Bug Fixes:
67
+
68
+ * Reset `ActiveSupport::CurrentAttributes` between examples. (Javier Julio, #2752)
69
+ * Fix a broken link in generated mailer previews. (Chiara Núñez, #2764)
70
+ * Fix `have_status_code` behaviour with deprecated status names by delegating
71
+ to `Rack::Utils.status_code/1` to set the expected status code. (Darren Boyd, #2765)
72
+
73
+ ### 6.1.2 / 2024-03-19
74
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v6.1.1...v6.1.2)
75
+
76
+ Bug Fixes:
77
+
78
+ * Fix generated mailer paths to match Rails convention. (Patrício dos Santos, #2735)
79
+ * Fix class in template for generator specs. (Nicolas Buduroi, #2744)
80
+
81
+ ### 6.1.1 / 2024-01-25
82
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v6.1.0...v6.1.1)
83
+
84
+ Bug Fixes:
85
+
86
+ * Improved deprecation message for `RSpec::Rails::Configuration.fixture_paths`
87
+ (Benoit Tigeot, #2720)
88
+ * Fix support for namespaced fixtures in Rails 7.1. (Benedikt Deicke, #2716)
3
89
 
4
90
  ### 6.1.0 / 2023-11-21
5
91
  [Full Changelog](https://github.com/rspec/rspec-rails/compare/v6.0.4...v6.1.0)
@@ -172,7 +258,7 @@ Enhancements:
172
258
  (Eloy Espinaco, Luka Lüdicke, #2355, #2356, #2378)
173
259
  * Generated scaffold now includes engine route helpers when inside a mountable engine.
174
260
  (Andrew W. Lee, #2372)
175
- * Improve request spec "controller" scafold when no action is specified.
261
+ * Improve request spec "controller" scaffold when no action is specified.
176
262
  (Thomas Hareau, #2399)
177
263
  * Introduce testing snippets concept (Phil Pirozhkov, Benoit Tigeot, #2423)
178
264
  * Prevent collisions with `let(:name)` for Rails 6.1 and `let(:method_name)` on older
@@ -575,7 +661,7 @@ Enhancements:
575
661
  * Add support for PATCH to route specs created via scaffold. (Igor Zubkov, #1336)
576
662
  * Improve controller and routing spec calls to `routes` by using `yield`
577
663
  instead of `call`. (Anton Davydov, #1308)
578
- * Add support for `ActiveJob` specs as standard `RSpec::Rails::RailsExampleGoup`s
664
+ * Add support for `ActiveJob` specs as standard `RSpec::Rails::RailsExampleGroup`s
579
665
  via both `type: :job` and inferring type from spec directory `spec/jobs`.
580
666
  (Gabe Martin-Dempesy, #1361)
581
667
  * Include `RSpec::Rails::FixtureSupport` into example groups using metadata
data/README.md CHANGED
@@ -9,7 +9,8 @@ detailed explanations of how the application is supposed to behave,
9
9
  expressed in plain English.
10
10
 
11
11
  According to [RSpec Rails new versioning strategy][] use:
12
- * **[`rspec-rails` 6.x][]** for Rails 6.1 or 7.x.
12
+ * **[`rspec-rails` 7.x][]** for Rails 7.x.
13
+ * **[`rspec-rails` 6.x][]** for Rails 6.1, 7.0 or 7.1.
13
14
  * **[`rspec-rails` 5.x][]** for Rails 5.2 or 6.x.
14
15
  * **[`rspec-rails` 4.x][]** for Rails from 5.x or 6.x.
15
16
  * **[`rspec-rails` 3.x][]** for Rails earlier than 5.0.
@@ -26,11 +27,12 @@ According to [RSpec Rails new versioning strategy][] use:
26
27
  [`rspec-rails` 4.x]: https://github.com/rspec/rspec-rails/tree/4-1-maintenance
27
28
  [`rspec-rails` 5.x]: https://github.com/rspec/rspec-rails/tree/5-1-maintenance
28
29
  [`rspec-rails` 6.x]: https://github.com/rspec/rspec-rails/tree/6-1-maintenance
30
+ [`rspec-rails` 7.x]: https://github.com/rspec/rspec-rails/tree/7-0-maintenance
29
31
  [RSpec Rails new versioning strategy]: https://github.com/rspec/rspec-rails/blob/main/rfcs/versioning-strategy.md
30
32
 
31
33
  ## Installation
32
34
 
33
- **IMPORTANT** This README / branch refers to the 6.1.x stable release series, only bugfixes from this series will
35
+ **IMPORTANT** This README / branch refers to the 7.1.x stable release series, only bugfixes from this series will
34
36
  be added here. See the [`main` branch on Github](https://github.com/rspec/rspec-rails/tree/main) if you want or
35
37
  require the latest unstable features.
36
38
 
@@ -40,7 +42,7 @@ require the latest unstable features.
40
42
  ```ruby
41
43
  # Run against this stable release
42
44
  group :development, :test do
43
- gem 'rspec-rails', '~> 6.1.0'
45
+ gem 'rspec-rails', '~> 7.0.0'
44
46
  end
45
47
 
46
48
  # Or, run against the main branch
@@ -87,7 +89,7 @@ read the [`rspec-rails` upgrade notes][] to find out what to watch out for.
87
89
 
88
90
  Be sure to check the general [RSpec upgrade notes][] as well.
89
91
 
90
- [`rspec-rails` upgrade notes]: https://rspec.info/features/6-0/rspec-rails/upgrade
92
+ [`rspec-rails` upgrade notes]: https://rspec.info/features/7-0/rspec-rails/upgrade
91
93
  [RSpec upgrade notes]: https://rspec.info/upgrading-from-rspec-2/
92
94
 
93
95
  ## Usage
@@ -209,22 +211,22 @@ to test the various parts of a Rails system:
209
211
  Follow the links above for examples of how each matcher is used.
210
212
 
211
213
  [the matchers that come standard in RSpec]: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers
212
- [`be_a_new`]: https://rspec.info/features/6-0/rspec-rails/matchers/new-record-matcher
213
- [`render_template`]: https://rspec.info/features/6-0/rspec-rails/matchers/render-template-matcher
214
- [`redirect_to`]: https://rspec.info/features/6-0/rspec-rails/matchers/redirect-to-matcher
215
- [`route_to`]: https://rspec.info/features/6-0/rspec-rails/routing-specs/route-to-matcher
216
- [`be_routable`]: https://rspec.info/features/6-0/rspec-rails/routing-specs/be-routable-matcher
217
- [`have_http_status`]: https://rspec.info/features/6-0/rspec-rails/matchers/have-http-status-matcher
218
- [`match_array`]: https://rspec.info/features/6-0/rspec-rails/matchers/relation-match-array
219
- [`have_been_enqueued`]: https://rspec.info/features/6-0/rspec-rails/matchers/have-been-enqueued-matcher
220
- [`have_enqueued_job`]: https://rspec.info/features/6-0/rspec-rails/matchers/have-enqueued-job-matcher
214
+ [`be_a_new`]: https://rspec.info/features/7-0/rspec-rails/matchers/new-record-matcher
215
+ [`render_template`]: https://rspec.info/features/7-0/rspec-rails/matchers/render-template-matcher
216
+ [`redirect_to`]: https://rspec.info/features/7-0/rspec-rails/matchers/redirect-to-matcher
217
+ [`route_to`]: https://rspec.info/features/7-0/rspec-rails/routing-specs/route-to-matcher
218
+ [`be_routable`]: https://rspec.info/features/7-0/rspec-rails/routing-specs/be-routable-matcher
219
+ [`have_http_status`]: https://rspec.info/features/7-0/rspec-rails/matchers/have-http-status-matcher
220
+ [`match_array`]: https://rspec.info/features/7-0/rspec-rails/matchers/relation-match-array
221
+ [`have_been_enqueued`]: https://rspec.info/features/7-0/rspec-rails/matchers/have-been-enqueued-matcher
222
+ [`have_enqueued_job`]: https://rspec.info/features/7-0/rspec-rails/matchers/have-enqueued-job-matcher
221
223
 
222
224
  ### What else does RSpec Rails add?
223
225
 
224
226
  For a comprehensive look at RSpec Rails’ features,
225
227
  read the [official Cucumber documentation][].
226
228
 
227
- [official Cucumber documentation]: https://rspec.info/features/6-0/rspec-rails
229
+ [official Cucumber documentation]: https://rspec.info/features/7-0/rspec-rails
228
230
 
229
231
  ## What tests should I write?
230
232
 
@@ -269,20 +271,20 @@ RSpec.describe User, type: :model do
269
271
  ...
270
272
  ```
271
273
 
272
- [request]: https://rspec.info/features/6-0/rspec-rails/request-specs/request-spec
273
- [feature]: https://rspec.info/features/6-0/rspec-rails/feature-specs/feature-spec
274
- [system]: https://rspec.info/features/6-0/rspec-rails/system-specs/system-specs
275
- [model]: https://rspec.info/features/6-0/rspec-rails/model-specs
276
- [controller]: https://rspec.info/features/6-0/rspec-rails/controller-specs
277
- [mailer]: https://rspec.info/features/6-0/rspec-rails/mailer-specs
278
- [job]: https://rspec.info/features/6-0/rspec-rails/job-specs/job-spec
279
- [view]: https://rspec.info/features/6-0/rspec-rails/view-specs/view-spec
280
- [routing]: https://rspec.info/features/6-0/rspec-rails/routing-specs
281
- [helper]: https://rspec.info/features/6-0/rspec-rails/helper-specs/helper-spec
274
+ [request]: https://rspec.info/features/7-0/rspec-rails/request-specs/request-spec
275
+ [feature]: https://rspec.info/features/7-0/rspec-rails/feature-specs/feature-spec
276
+ [system]: https://rspec.info/features/7-0/rspec-rails/system-specs/system-specs
277
+ [model]: https://rspec.info/features/7-0/rspec-rails/model-specs
278
+ [controller]: https://rspec.info/features/7-0/rspec-rails/controller-specs
279
+ [mailer]: https://rspec.info/features/7-0/rspec-rails/mailer-specs
280
+ [job]: https://rspec.info/features/7-0/rspec-rails/job-specs/job-spec
281
+ [view]: https://rspec.info/features/7-0/rspec-rails/view-specs/view-spec
282
+ [routing]: https://rspec.info/features/7-0/rspec-rails/routing-specs
283
+ [helper]: https://rspec.info/features/7-0/rspec-rails/helper-specs/helper-spec
282
284
  [`ActionDispatch::IntegrationTest`]: https://api.rubyonrails.org/classes/ActionDispatch/IntegrationTest.html
283
285
  [`ActionDispatch::SystemTestCase`]: https://api.rubyonrails.org/classes/ActionDispatch/SystemTestCase.html
284
286
  [`ActionController::TestCase`]: https://api.rubyonrails.org/classes/ActionController/TestCase.html
285
- [in the appropriate folder]: https://rspec.info/features/6-0/rspec-rails/directory-structure
287
+ [in the appropriate folder]: https://rspec.info/features/7-0/rspec-rails/directory-structure
286
288
 
287
289
  ### System specs, feature specs, request specs–what’s the difference?
288
290
 
@@ -4,7 +4,7 @@ module Rspec
4
4
  module Generators
5
5
  # @private
6
6
  class GeneratorGenerator < Base
7
- class_option :generator_specs, type: :boolean, default: true, desc: "Generate generator specs"
7
+ class_option :generator_specs, type: :boolean, default: true, desc: 'Generate generator specs'
8
8
 
9
9
  def generate_generator_spec
10
10
  return unless options[:generator_specs]
@@ -17,7 +17,7 @@ module Rspec
17
17
  end
18
18
 
19
19
  def filename
20
- "#{table_name}_generator_spec.rb"
20
+ "#{file_name}_generator_spec.rb"
21
21
  end
22
22
  end
23
23
  end
@@ -1,6 +1,5 @@
1
1
  require 'rails_helper'
2
2
 
3
- RSpec.describe "<%= class_name.pluralize %>", <%= type_metatag(:generator) %> do
4
-
3
+ RSpec.describe "<%= class_name %>Generator", <%= type_metatag(:generator) %> do
5
4
  pending "add some scenarios (or delete) #{__FILE__}"
6
5
  end
@@ -4,6 +4,11 @@ ENV['RAILS_ENV'] ||= 'test'
4
4
  require_relative '../config/environment'
5
5
  # Prevent database truncation if the environment is production
6
6
  abort("The Rails environment is running in production mode!") if Rails.env.production?
7
+ <% if RSpec::Rails::FeatureCheck.has_active_record_migration? -%>
8
+ # Uncomment the line below in case you have `--require rails_helper` in the `.rspec` file
9
+ # that will avoid rails generators crashing because migrations haven't been run yet
10
+ # return unless Rails.env.test?
11
+ <% end -%>
7
12
  require 'rspec/rails'
8
13
  # Add additional requires below this line. Rails is not loaded until this point!
9
14
 
@@ -20,7 +25,7 @@ require 'rspec/rails'
20
25
  # directory. Alternatively, in the individual `*_spec.rb` files, manually
21
26
  # require only the support files necessary.
22
27
  #
23
- # Rails.root.glob('spec/support/**/*.rb').sort.each { |f| require f }
28
+ # Rails.root.glob('spec/support/**/*.rb').sort_by(&:to_s).each { |f| require f }
24
29
 
25
30
  <% if RSpec::Rails::FeatureCheck.has_active_record_migration? -%>
26
31
  # Checks for pending migrations and applies them before tests are run.
@@ -62,20 +67,22 @@ RSpec.configure do |config|
62
67
  # config.use_transactional_fixtures = true
63
68
 
64
69
  <% end -%>
65
- # RSpec Rails can automatically mix in different behaviours to your tests
66
- # based on their file location, for example enabling you to call `get` and
67
- # `post` in specs under `spec/controllers`.
68
- #
69
- # You can disable this behaviour by removing the line below, and instead
70
- # explicitly tag your specs with their type, e.g.:
70
+ # RSpec Rails uses metadata to mix in different behaviours to your tests,
71
+ # for example enabling you to call `get` and `post` in request specs. e.g.:
71
72
  #
72
- # RSpec.describe UsersController, type: :controller do
73
+ # RSpec.describe UsersController, type: :request do
73
74
  # # ...
74
75
  # end
75
76
  #
76
77
  # The different available types are documented in the features, such as in
77
- # https://rspec.info/features/6-0/rspec-rails
78
- config.infer_spec_type_from_file_location!
78
+ # https://rspec.info/features/7-0/rspec-rails
79
+ #
80
+ # You can also this infer these behaviours automatically by location, e.g.
81
+ # /spec/models would pull in the same behaviour as `type: :model` but this
82
+ # behaviour is considered legacy and will be removed in a future version.
83
+ #
84
+ # To enable this behaviour uncomment the line below.
85
+ # config.infer_spec_type_from_file_location!
79
86
 
80
87
  # Filter lines from Rails gems in backtraces.
81
88
  config.filter_rails_from_backtrace!
@@ -8,7 +8,8 @@ module Rspec
8
8
  argument :actions, type: :array, default: [], banner: "method method"
9
9
 
10
10
  def generate_mailer_spec
11
- template "mailer_spec.rb", target_path('mailers', class_path, "#{file_name}_spec.rb")
11
+ file_suffix = file_name.end_with?('mailer') ? 'spec.rb' : 'mailer_spec.rb'
12
+ template "mailer_spec.rb", target_path('mailers', class_path, [file_name, file_suffix].join('_'))
12
13
  end
13
14
 
14
15
  def generate_fixtures_files
@@ -21,7 +22,8 @@ module Rspec
21
22
  def generate_preview_files
22
23
  return unless RSpec::Rails::FeatureCheck.has_action_mailer_preview?
23
24
 
24
- template "preview.rb", target_path("mailers/previews", class_path, "#{file_name}_preview.rb")
25
+ file_suffix = file_name.end_with?('mailer') ? 'preview.rb' : 'mailer_preview.rb'
26
+ template "preview.rb", target_path("mailers/previews", class_path, [file_name, file_suffix].join('_'))
25
27
  end
26
28
  end
27
29
  end
@@ -1,9 +1,9 @@
1
1
  <% module_namespacing do -%>
2
- # Preview all emails at http://localhost:3000/rails/mailers/<%= file_path %>
3
- class <%= class_name %>Preview < ActionMailer::Preview
2
+ # Preview all emails at http://localhost:3000/rails/mailers/<%= file_path %>_mailer
3
+ class <%= class_name %><%= 'Mailer' unless class_name.end_with?('Mailer') %>Preview < ActionMailer::Preview
4
4
  <% actions.each do |action| -%>
5
5
 
6
- # Preview this email at http://localhost:3000/rails/mailers/<%= file_path %>/<%= action %>
6
+ # Preview this email at http://localhost:3000/rails/mailers/<%= file_path %>_mailer/<%= action %>
7
7
  def <%= action %>
8
8
  <%= class_name.sub(/(Mailer)?$/, 'Mailer') %>.<%= action %>
9
9
  end
@@ -90,17 +90,10 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
90
90
  end
91
91
 
92
92
  context "with invalid params" do
93
- <% if Rails.version.to_f < 7.0 %>
94
- it "returns a success response (i.e. to display the 'new' template)" do
95
- post :create, params: {<%= singular_table_name %>: invalid_attributes}, session: valid_session
96
- expect(response).to be_successful
97
- end
98
- <% else %>
99
93
  it "renders a response with 422 status (i.e. to display the 'new' template)" do
100
94
  post :create, params: {<%= singular_table_name %>: invalid_attributes}, session: valid_session
101
95
  expect(response).to have_http_status(:unprocessable_entity)
102
96
  end
103
- <% end %>
104
97
  end
105
98
  end
106
99
 
@@ -125,19 +118,11 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
125
118
  end
126
119
 
127
120
  context "with invalid params" do
128
- <% if Rails.version.to_f < 7.0 %>
129
- it "returns a success response (i.e. to display the 'edit' template)" do
130
- <%= file_name %> = <%= class_name %>.create! valid_attributes
131
- put :update, params: {id: <%= file_name %>.to_param, <%= singular_table_name %>: invalid_attributes}, session: valid_session
132
- expect(response).to be_successful
133
- end
134
- <% else %>
135
121
  it "renders a response with 422 status (i.e. to display the 'edit' template)" do
136
122
  <%= file_name %> = <%= class_name %>.create! valid_attributes
137
123
  put :update, params: {id: <%= file_name %>.to_param, <%= singular_table_name %>: invalid_attributes}, session: valid_session
138
124
  expect(response).to have_http_status(:unprocessable_entity)
139
125
  end
140
- <% end %>
141
126
  end
142
127
  end
143
128
 
@@ -18,7 +18,7 @@ RSpec.describe "<%= ns_table_name %>/index", <%= type_metatag(:view) %> do
18
18
 
19
19
  it "renders a list of <%= ns_table_name %>" do
20
20
  render
21
- cell_selector = Rails::VERSION::STRING >= '7' ? 'div>p' : 'tr>td'
21
+ cell_selector = 'div>p'
22
22
  <% for attribute in output_attributes -%>
23
23
  assert_select cell_selector, text: Regexp.new(<%= value_for(attribute) %>.to_s), count: 2
24
24
  <% end -%>
@@ -83,17 +83,10 @@ RSpec.describe "/<%= name.underscore.pluralize %>", <%= type_metatag(:request) %
83
83
  }.to change(<%= class_name %>, :count).by(0)
84
84
  end
85
85
 
86
- <% if Rails.version.to_f < 7.0 %>
87
- it "renders a successful response (i.e. to display the 'new' template)" do
88
- post <%= index_helper %>_url, params: { <%= singular_table_name %>: invalid_attributes }
89
- expect(response).to be_successful
90
- end
91
- <% else %>
92
86
  it "renders a response with 422 status (i.e. to display the 'new' template)" do
93
87
  post <%= index_helper %>_url, params: { <%= singular_table_name %>: invalid_attributes }
94
88
  expect(response).to have_http_status(:unprocessable_entity)
95
89
  end
96
- <% end %>
97
90
  end
98
91
  end
99
92
 
@@ -119,19 +112,11 @@ RSpec.describe "/<%= name.underscore.pluralize %>", <%= type_metatag(:request) %
119
112
  end
120
113
 
121
114
  context "with invalid parameters" do
122
- <% if Rails.version.to_f < 7.0 %>
123
- it "renders a successful response (i.e. to display the 'edit' template)" do
124
- <%= file_name %> = <%= class_name %>.create! valid_attributes
125
- patch <%= show_helper %>, params: { <%= singular_table_name %>: invalid_attributes }
126
- expect(response).to be_successful
127
- end
128
- <% else %>
129
115
  it "renders a response with 422 status (i.e. to display the 'edit' template)" do
130
116
  <%= file_name %> = <%= class_name %>.create! valid_attributes
131
117
  patch <%= show_helper %>, params: { <%= singular_table_name %>: invalid_attributes }
132
118
  expect(response).to have_http_status(:unprocessable_entity)
133
119
  end
134
- <% end %>
135
120
  end
136
121
  end
137
122
 
@@ -170,7 +170,8 @@ module RSpec
170
170
  RSpec.deprecate(
171
171
  "config.fixture_path",
172
172
  replacement: "config.fixture_paths",
173
- message: "Rails 7.1 has deprecated the singular fixture_path in favour of an array"
173
+ message: "Rails 7.1 has deprecated the singular fixture_path in favour of an array." \
174
+ "You should migrate to plural:"
174
175
  )
175
176
  fixture_paths&.first
176
177
  end
@@ -179,7 +180,8 @@ module RSpec
179
180
  RSpec.deprecate(
180
181
  "config.fixture_path = #{path.inspect}",
181
182
  replacement: "config.fixture_paths = [#{path.inspect}]",
182
- message: "Rails 7.1 has deprecated the singular fixture_path in favour of an array"
183
+ message: "Rails 7.1 has deprecated the singular fixture_path in favour of an array." \
184
+ "You should migrate to plural:"
183
185
  )
184
186
  self.fixture_paths = Array(path)
185
187
  end
@@ -69,7 +69,7 @@ module RSpec
69
69
  #
70
70
  # @param message [Hash, Mail::Message] a mail message or hash of
71
71
  # attributes used to build one
72
- # @return [ActionMaibox::InboundMessage]
72
+ # @return [ActionMailbox::InboundMessage]
73
73
  def process(message)
74
74
  MailboxExampleGroup.create_inbound_email(message).tap do |mail|
75
75
  self.class.mailbox_class.receive(mail)
@@ -2,9 +2,8 @@
2
2
  # suite and ammeter.
3
3
  require 'rspec/rails/matchers'
4
4
 
5
- if ::Rails::VERSION::MAJOR >= 7
6
- require 'active_support/execution_context/test_helper'
7
- end
5
+ require 'active_support/current_attributes/test_helper'
6
+ require 'active_support/execution_context/test_helper'
8
7
 
9
8
  module RSpec
10
9
  module Rails
@@ -16,10 +15,9 @@ module RSpec
16
15
  include RSpec::Rails::MinitestLifecycleAdapter
17
16
  include RSpec::Rails::MinitestAssertionAdapter
18
17
  include RSpec::Rails::FixtureSupport
19
- if ::Rails::VERSION::MAJOR >= 7
20
- include RSpec::Rails::TaggedLoggingAdapter
21
- include ActiveSupport::ExecutionContext::TestHelper
22
- end
18
+ include RSpec::Rails::TaggedLoggingAdapter
19
+ include ActiveSupport::CurrentAttributes::TestHelper
20
+ include ActiveSupport::ExecutionContext::TestHelper
23
21
  end
24
22
  end
25
23
  end
@@ -1,5 +1,3 @@
1
- require "action_dispatch/testing/assertions/routing"
2
-
3
1
  module RSpec
4
2
  module Rails
5
3
  # @private
@@ -95,6 +95,14 @@ module RSpec
95
95
  ::Rails.application
96
96
  end
97
97
 
98
+ # Default driver to assign if none specified.
99
+ DEFAULT_DRIVER =
100
+ if ::Rails::VERSION::STRING.to_f >= 7.2
101
+ :selenium_chrome_headless
102
+ else
103
+ :selenium
104
+ end
105
+
98
106
  included do |other|
99
107
  ActiveSupport.on_load(:action_dispatch_system_test_case) do
100
108
  ActionDispatch::SystemTesting::Server.silence_puma = true
@@ -137,7 +145,7 @@ module RSpec
137
145
  self.class.before do
138
146
  # A user may have already set the driver, so only default if driver
139
147
  # is not set
140
- driven_by(:selenium) unless @driver
148
+ driven_by(DEFAULT_DRIVER) unless @driver
141
149
  end
142
150
  end
143
151
 
@@ -10,8 +10,7 @@ module RSpec
10
10
  include ActiveRecord::TestFixtures
11
11
 
12
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.
13
+ # Monkey patched to avoid collisions with 'let(:name)' since Rails 6.1
15
14
  def run_in_transaction?
16
15
  current_example_name = (RSpec.current_example && RSpec.current_example.metadata[:description])
17
16
  use_transactional_tests && !self.class.uses_transaction?(current_example_name)
@@ -43,14 +42,14 @@ module RSpec
43
42
  if ::Rails.version.to_f >= 7.1
44
43
  def fixtures(*args)
45
44
  super.tap do
46
- fixture_sets.each_key do |fixture_name|
47
- proxy_method_warning_if_called_in_before_context_scope(fixture_name)
45
+ fixture_sets.each_pair do |method_name, fixture_name|
46
+ proxy_method_warning_if_called_in_before_context_scope(method_name, fixture_name)
48
47
  end
49
48
  end
50
49
  end
51
50
 
52
- def proxy_method_warning_if_called_in_before_context_scope(fixture_name)
53
- define_method(fixture_name) do |*args, **kwargs, &blk|
51
+ def proxy_method_warning_if_called_in_before_context_scope(method_name, fixture_name)
52
+ define_method(method_name) do |*args, **kwargs, &blk|
54
53
  if RSpec.current_scope == :before_context_hook
55
54
  RSpec.warn_with("Calling fixture method in before :context ")
56
55
  else
@@ -51,6 +51,10 @@ module RSpec
51
51
  exactly(:thrice)
52
52
  end
53
53
 
54
+ def description
55
+ "have broadcasted #{base_description}"
56
+ end
57
+
54
58
  def failure_message
55
59
  "expected to broadcast #{base_message}".tap do |msg|
56
60
  if @unmatching_msgs.any?
@@ -140,18 +144,21 @@ module RSpec
140
144
  end
141
145
  end
142
146
 
143
- def base_message
147
+ def base_description
144
148
  "#{message_expectation_modifier} #{@expected_number} messages to #{stream}".tap do |msg|
145
149
  msg << " with #{data_description(@data)}" unless @data.nil?
146
- msg << ", but broadcast #{@matching_msgs_count}"
147
150
  end
148
151
  end
149
152
 
153
+ def base_message
154
+ "#{base_description}, but broadcast #{@matching_msgs_count}"
155
+ end
156
+
150
157
  def data_description(data)
151
158
  if data.is_a?(RSpec::Matchers::Composable)
152
159
  data.description
153
160
  else
154
- data
161
+ data.inspect
155
162
  end
156
163
  end
157
164
 
@@ -3,6 +3,8 @@ require "rspec/rails/matchers/action_cable/have_broadcasted_to"
3
3
  module RSpec
4
4
  module Rails
5
5
  module Matchers
6
+ extend RSpec::Matchers::DSL
7
+
6
8
  # Namespace for various implementations of ActionCable features
7
9
  #
8
10
  # @api private
@@ -50,7 +52,10 @@ module RSpec
50
52
 
51
53
  ActionCable::HaveBroadcastedTo.new(target, channel: described_class)
52
54
  end
53
- alias_method :broadcast_to, :have_broadcasted_to
55
+
56
+ alias_matcher :broadcast_to, :have_broadcasted_to do |desc|
57
+ desc.gsub("have broadcasted", "broadcast")
58
+ end
54
59
 
55
60
  private
56
61
 
@@ -14,6 +14,7 @@ module RSpec
14
14
  def initialize
15
15
  @args = []
16
16
  @queue = nil
17
+ @priority = nil
17
18
  @at = nil
18
19
  @block = proc { }
19
20
  set_expected_number(:exactly, 1)
@@ -30,6 +31,11 @@ module RSpec
30
31
  self
31
32
  end
32
33
 
34
+ def at_priority(priority)
35
+ @priority = priority.to_i
36
+ self
37
+ end
38
+
33
39
  def at(time_or_date)
34
40
  case time_or_date
35
41
  when Time then @at = Time.at(time_or_date.to_f)
@@ -71,6 +77,8 @@ module RSpec
71
77
  end
72
78
 
73
79
  def failure_message
80
+ return @failure_message if defined?(@failure_message)
81
+
74
82
  "expected to #{self.class::FAILURE_MESSAGE_EXPECTATION_ACTION} #{base_message}".tap do |msg|
75
83
  if @unmatching_jobs.any?
76
84
  msg << "\nQueued jobs:"
@@ -101,7 +109,7 @@ module RSpec
101
109
 
102
110
  def check(jobs)
103
111
  @matching_jobs, @unmatching_jobs = jobs.partition do |job|
104
- if job_match?(job) && arguments_match?(job) && queue_match?(job) && at_match?(job)
112
+ if matches_constraints?(job)
105
113
  args = deserialize_arguments(job)
106
114
  @block.call(*args)
107
115
  true
@@ -109,6 +117,12 @@ module RSpec
109
117
  false
110
118
  end
111
119
  end
120
+
121
+ if (signature_mismatch = detect_args_signature_mismatch(@matching_jobs))
122
+ @failure_message = signature_mismatch
123
+ return false
124
+ end
125
+
112
126
  @matching_jobs_count = @matching_jobs.size
113
127
 
114
128
  case @expectation_type
@@ -123,6 +137,7 @@ module RSpec
123
137
  msg << " with #{@args}," if @args.any?
124
138
  msg << " on queue #{@queue}," if @queue
125
139
  msg << " at #{@at.inspect}," if @at
140
+ msg << " with priority #{@priority}," if @priority
126
141
  msg << " but #{self.class::MESSAGE_EXPECTATION_ACTION} #{@matching_jobs_count}"
127
142
  end
128
143
  end
@@ -132,13 +147,23 @@ module RSpec
132
147
  msg_parts << "with #{deserialize_arguments(job)}" if job[:args].any?
133
148
  msg_parts << "on queue #{job[:queue]}" if job[:queue]
134
149
  msg_parts << "at #{Time.at(job[:at])}" if job[:at]
150
+ msg_parts <<
151
+ if job[:priority]
152
+ "with priority #{job[:priority]}"
153
+ else
154
+ "with no priority specified"
155
+ end
135
156
 
136
157
  "#{job[:job].name} job".tap do |msg|
137
158
  msg << " #{msg_parts.join(', ')}" if msg_parts.any?
138
159
  end
139
160
  end
140
161
 
141
- def job_match?(job)
162
+ def matches_constraints?(job)
163
+ job_matches?(job) && arguments_match?(job) && queue_match?(job) && at_match?(job) && priority_match?(job)
164
+ end
165
+
166
+ def job_matches?(job)
142
167
  @job ? @job == job[:job] : true
143
168
  end
144
169
 
@@ -152,12 +177,46 @@ module RSpec
152
177
  end
153
178
  end
154
179
 
180
+ def detect_args_signature_mismatch(jobs)
181
+ return if skip_signature_verification?
182
+
183
+ jobs.each do |job|
184
+ args = deserialize_arguments(job)
185
+
186
+ if (signature_mismatch = check_args_signature_mismatch(job.fetch(:job), :perform, args))
187
+ return signature_mismatch
188
+ end
189
+ end
190
+
191
+ nil
192
+ end
193
+
194
+ def skip_signature_verification?
195
+ !RSpec::Mocks.configuration.verify_partial_doubles? ||
196
+ RSpec::Mocks.configuration.temporarily_suppress_partial_double_verification
197
+ end
198
+
199
+ def check_args_signature_mismatch(job_class, job_method, args)
200
+ signature = Support::MethodSignature.new(job_class.public_instance_method(job_method))
201
+ verifier = Support::StrictSignatureVerifier.new(signature, args)
202
+
203
+ unless verifier.valid?
204
+ "Incorrect arguments passed to #{job_class.name}: #{verifier.error_message}"
205
+ end
206
+ end
207
+
155
208
  def queue_match?(job)
156
209
  return true unless @queue
157
210
 
158
211
  @queue == job[:queue]
159
212
  end
160
213
 
214
+ def priority_match?(job)
215
+ return true unless @priority
216
+
217
+ @priority == job[:priority]
218
+ end
219
+
161
220
  def at_match?(job)
162
221
  return true unless @at
163
222
  return job[:at].nil? if @at == :no_wait
@@ -384,33 +443,33 @@ module RSpec
384
443
  #
385
444
  # @example
386
445
  # expect {
387
- # perform_jobs { HeavyLiftingJob.perform_later }
446
+ # perform_enqueued_jobs { HeavyLiftingJob.perform_later }
388
447
  # }.to have_performed_job
389
448
  #
390
449
  # expect {
391
- # perform_jobs {
450
+ # perform_enqueued_jobs {
392
451
  # HelloJob.perform_later
393
452
  # HeavyLiftingJob.perform_later
394
453
  # }
395
454
  # }.to have_performed_job(HelloJob).exactly(:once)
396
455
  #
397
456
  # expect {
398
- # perform_jobs { 3.times { HelloJob.perform_later } }
457
+ # perform_enqueued_jobs { 3.times { HelloJob.perform_later } }
399
458
  # }.to have_performed_job(HelloJob).at_least(2).times
400
459
  #
401
460
  # expect {
402
- # perform_jobs { HelloJob.perform_later }
461
+ # perform_enqueued_jobs { HelloJob.perform_later }
403
462
  # }.to have_performed_job(HelloJob).at_most(:twice)
404
463
  #
405
464
  # expect {
406
- # perform_jobs {
465
+ # perform_enqueued_jobs {
407
466
  # HelloJob.perform_later
408
467
  # HeavyLiftingJob.perform_later
409
468
  # }
410
469
  # }.to have_performed_job(HelloJob).and have_performed_job(HeavyLiftingJob)
411
470
  #
412
471
  # expect {
413
- # perform_jobs {
472
+ # perform_enqueued_jobs {
414
473
  # HelloJob.set(wait_until: Date.tomorrow.noon, queue: "low").perform_later(42)
415
474
  # }
416
475
  # }.to have_performed_job.with(42).on_queue("low").at(Date.tomorrow.noon)
@@ -41,6 +41,8 @@ module RSpec
41
41
  end
42
42
 
43
43
  def failure_message
44
+ return @failure_message if defined?(@failure_message)
45
+
44
46
  "expected to enqueue #{base_message}".tap do |msg|
45
47
  msg << "\n#{unmatching_mail_jobs_message}" if unmatching_mail_jobs.any?
46
48
  end
@@ -70,7 +72,7 @@ module RSpec
70
72
  @mailer_class ? @mailer_class.name : 'ActionMailer::Base'
71
73
  end
72
74
 
73
- def job_match?(job)
75
+ def job_matches?(job)
74
76
  legacy_mail?(job) || parameterized_mail?(job) || unified_mail?(job)
75
77
  end
76
78
 
@@ -89,6 +91,23 @@ module RSpec
89
91
  super(job)
90
92
  end
91
93
 
94
+ def detect_args_signature_mismatch(jobs)
95
+ return if @method_name.nil?
96
+ return if skip_signature_verification?
97
+
98
+ mailer_class = mailer_class_name.constantize
99
+
100
+ jobs.each do |job|
101
+ mailer_args = extract_args_without_parameterized_params(job)
102
+
103
+ if (signature_mismatch = check_args_signature_mismatch(mailer_class, @method_name, mailer_args))
104
+ return signature_mismatch
105
+ end
106
+ end
107
+
108
+ nil
109
+ end
110
+
92
111
  def base_mailer_args
93
112
  [mailer_class_name, @method_name.to_s, MAILER_JOB_METHOD]
94
113
  end
@@ -105,7 +124,7 @@ module RSpec
105
124
 
106
125
  def unmatching_mail_jobs
107
126
  @unmatching_jobs.select do |job|
108
- job_match?(job)
127
+ job_matches?(job)
109
128
  end
110
129
  end
111
130
 
@@ -157,6 +176,19 @@ module RSpec
157
176
  end
158
177
  end
159
178
 
179
+ def extract_args_without_parameterized_params(job)
180
+ args = deserialize_arguments(job)
181
+ mailer_args = args - base_mailer_args
182
+
183
+ if parameterized_mail?(job)
184
+ mailer_args = mailer_args[1..-1] # ignore parameterized params
185
+ elsif mailer_args.last.is_a?(Hash) && mailer_args.last.key?(:args)
186
+ mailer_args = args.last[:args]
187
+ end
188
+
189
+ mailer_args
190
+ end
191
+
160
192
  def legacy_mail?(job)
161
193
  RSpec::Rails::FeatureCheck.has_action_mailer_legacy_delivery_job? && job[:job] <= ActionMailer::DeliveryJob
162
194
  end
@@ -33,7 +33,7 @@ module RSpec
33
33
  # @param obj [Object] object to convert to a response
34
34
  # @return [ActionDispatch::TestResponse]
35
35
  def as_test_response(obj)
36
- if ::ActionDispatch::Response === obj
36
+ if ::ActionDispatch::Response === obj || ::Rack::MockResponse === obj
37
37
  ::ActionDispatch::TestResponse.from_response(obj)
38
38
  elsif ::ActionDispatch::TestResponse === obj
39
39
  obj
@@ -216,11 +216,7 @@ module RSpec
216
216
  # @see Rack::Utils::SYMBOL_TO_STATUS_CODE
217
217
  # @raise [ArgumentError] if an associated code could not be found
218
218
  def set_expected_code!
219
- @expected ||=
220
- Rack::Utils::SYMBOL_TO_STATUS_CODE.fetch(expected_status) do
221
- raise ArgumentError,
222
- "Invalid HTTP status: #{expected_status.inspect}"
223
- end
219
+ @expected ||= Rack::Utils.status_code(expected_status)
224
220
  end
225
221
  end
226
222
 
@@ -237,7 +233,7 @@ module RSpec
237
233
  # expect(response).to have_http_status(:redirect)
238
234
  #
239
235
  # @see RSpec::Rails::Matchers#have_http_status
240
- # @see https://github.com/rails/rails/blob/6-0-stable/actionpack/lib/action_dispatch/testing/test_response.rb `ActionDispatch::TestResponse`
236
+ # @see https://github.com/rails/rails/blob/7-2-stable/actionpack/lib/action_dispatch/testing/test_response.rb `ActionDispatch::TestResponse`
241
237
  class GenericStatus < RSpec::Rails::Matchers::BaseMatcher
242
238
  include HaveHttpStatus
243
239
 
@@ -5,7 +5,9 @@ end
5
5
 
6
6
  task default: :spec
7
7
 
8
- task stats: "spec:statsetup"
8
+ if ::Rails::VERSION::STRING < "8.0.0"
9
+ task stats: "spec:statsetup"
10
+ end
9
11
 
10
12
  desc "Run all specs in spec directory (excluding plugin specs)"
11
13
  RSpec::Core::RakeTask.new(spec: "spec:prepare")
@@ -3,7 +3,7 @@ module RSpec
3
3
  # Version information for RSpec Rails.
4
4
  module Version
5
5
  # Current version of RSpec Rails, in semantic versioning format.
6
- STRING = '6.1.0'
6
+ STRING = '7.1.0'
7
7
  end
8
8
  end
9
9
  end
data/lib/rspec-rails.rb CHANGED
@@ -9,6 +9,23 @@ module RSpec
9
9
  # As of Rails 5.1.0 you can register directories to work with `rake notes`
10
10
  require 'rails/source_annotation_extractor'
11
11
  ::Rails::SourceAnnotationExtractor::Annotation.register_directories("spec")
12
+
13
+ # As of Rails 8.0.0 you can register directories to work with `rails stats`
14
+ if ::Rails::VERSION::STRING >= "8.0.0"
15
+ require 'rails/code_statistics'
16
+
17
+ dirs = Dir['./spec/**/*_spec.rb']
18
+ .map { |f| f.sub(/^\.\/(spec\/\w+)\/.*/, '\\1') }
19
+ .uniq
20
+ .select { |f| File.directory?(f) }
21
+
22
+ Hash[dirs.map { |d| [d.split('/').last, d] }].each do |type, dir|
23
+ name = type.singularize.capitalize
24
+
25
+ ::Rails::CodeStatistics.register_directory "#{name} specs", dir, test_directory: true
26
+ end
27
+ end
28
+
12
29
  generators = config.app_generators
13
30
  generators.integration_tool :rspec
14
31
  generators.test_framework :rspec
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.0
4
+ version: 7.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Chelimsky
@@ -44,7 +44,7 @@ cert_chain:
44
44
  ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
45
45
  F3MdtaDehhjC
46
46
  -----END CERTIFICATE-----
47
- date: 2023-11-21 00:00:00.000000000 Z
47
+ date: 2024-11-09 00:00:00.000000000 Z
48
48
  dependencies:
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: actionpack
@@ -52,98 +52,98 @@ dependencies:
52
52
  requirements:
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: '6.1'
55
+ version: '7.0'
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: '6.1'
62
+ version: '7.0'
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: '6.1'
69
+ version: '7.0'
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: '6.1'
76
+ version: '7.0'
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: '6.1'
83
+ version: '7.0'
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: '6.1'
90
+ version: '7.0'
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.12'
97
+ version: '3.13'
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.12'
104
+ version: '3.13'
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.12'
111
+ version: '3.13'
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.12'
118
+ version: '3.13'
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.12'
125
+ version: '3.13'
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.12'
132
+ version: '3.13'
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.12'
139
+ version: '3.13'
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.12'
146
+ version: '3.13'
147
147
  - !ruby/object:Gem::Dependency
148
148
  name: ammeter
149
149
  requirement: !ruby/object:Gem::Requirement
@@ -186,7 +186,7 @@ dependencies:
186
186
  - - "~>"
187
187
  - !ruby/object:Gem::Version
188
188
  version: '7.0'
189
- description: rspec-rails is a testing framework for Rails 5+.
189
+ description: rspec-rails integrates the Rails testing helpers into RSpec.
190
190
  email: rspec@googlegroups.com
191
191
  executables: []
192
192
  extensions: []
@@ -215,7 +215,6 @@ files:
215
215
  - lib/generators/rspec/helper/templates/helper_spec.rb
216
216
  - lib/generators/rspec/install/install_generator.rb
217
217
  - lib/generators/rspec/install/templates/spec/rails_helper.rb
218
- - lib/generators/rspec/integration/integration_generator.rb
219
218
  - lib/generators/rspec/job/job_generator.rb
220
219
  - lib/generators/rspec/job/templates/job_spec.rb.erb
221
220
  - lib/generators/rspec/mailbox/mailbox_generator.rb
@@ -297,7 +296,7 @@ licenses:
297
296
  - MIT
298
297
  metadata:
299
298
  bug_tracker_uri: https://github.com/rspec/rspec-rails/issues
300
- changelog_uri: https://github.com/rspec/rspec-rails/blob/v6.1.0/Changelog.md
299
+ changelog_uri: https://github.com/rspec/rspec-rails/blob/v7.1.0/Changelog.md
301
300
  documentation_uri: https://rspec.info/documentation/
302
301
  mailing_list_uri: https://groups.google.com/forum/#!forum/rspec
303
302
  source_code_uri: https://github.com/rspec/rspec-rails
@@ -310,14 +309,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
310
309
  requirements:
311
310
  - - ">="
312
311
  - !ruby/object:Gem::Version
313
- version: 2.5.0
312
+ version: 2.7.0
314
313
  required_rubygems_version: !ruby/object:Gem::Requirement
315
314
  requirements:
316
315
  - - ">="
317
316
  - !ruby/object:Gem::Version
318
317
  version: '0'
319
318
  requirements: []
320
- rubygems_version: 3.4.10
319
+ rubygems_version: 3.5.22
321
320
  signing_key:
322
321
  specification_version: 4
323
322
  summary: RSpec for Rails
metadata.gz.sig CHANGED
Binary file
@@ -1,29 +0,0 @@
1
- require 'generators/rspec'
2
- require 'rspec/core/warnings'
3
-
4
- module Rspec
5
- module Generators
6
- # @private
7
- class IntegrationGenerator < Base
8
- class_option :request_specs,
9
- type: :boolean,
10
- default: true,
11
- desc: "Generate request specs"
12
-
13
- source_paths << File.expand_path('../request/templates', __dir__)
14
-
15
- def generate_request_spec
16
- return unless options[:request_specs]
17
-
18
- RSpec.warn_deprecation <<-WARNING.gsub(/\s*\|/, ' ')
19
- |The integration generator is deprecated
20
- |and will be deleted in RSpec-Rails 7.
21
- |Please use the request generator instead.
22
- WARNING
23
-
24
- template 'request_spec.rb',
25
- target_path('requests', "#{name.underscore.pluralize}_spec.rb")
26
- end
27
- end
28
- end
29
- end