rspec-rails 4.0.0 → 5.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/Changelog.md +139 -50
  4. data/README.md +42 -31
  5. data/lib/generators/rspec/controller/controller_generator.rb +2 -2
  6. data/lib/generators/rspec/controller/templates/request_spec.rb +6 -1
  7. data/lib/generators/rspec/install/templates/spec/rails_helper.rb +1 -1
  8. data/lib/generators/rspec/job/job_generator.rb +2 -1
  9. data/lib/generators/rspec/job/templates/job_spec.rb.erb +1 -1
  10. data/lib/generators/rspec/mailer/templates/mailer_spec.rb +2 -2
  11. data/lib/generators/rspec/mailer/templates/preview.rb +1 -1
  12. data/lib/generators/rspec/scaffold/scaffold_generator.rb +4 -0
  13. data/lib/generators/rspec/scaffold/templates/api_controller_spec.rb +13 -13
  14. data/lib/generators/rspec/scaffold/templates/api_request_spec.rb +20 -20
  15. data/lib/generators/rspec/scaffold/templates/controller_spec.rb +10 -58
  16. data/lib/generators/rspec/scaffold/templates/edit_spec.rb +0 -4
  17. data/lib/generators/rspec/scaffold/templates/new_spec.rb +0 -4
  18. data/lib/generators/rspec/scaffold/templates/request_spec.rb +23 -18
  19. data/lib/generators/rspec/system/system_generator.rb +14 -16
  20. data/lib/rspec/rails/configuration.rb +41 -6
  21. data/lib/rspec/rails/example/controller_example_group.rb +1 -0
  22. data/lib/rspec/rails/example/mailbox_example_group.rb +1 -1
  23. data/lib/rspec/rails/example/mailer_example_group.rb +2 -2
  24. data/lib/rspec/rails/example/request_example_group.rb +1 -4
  25. data/lib/rspec/rails/example/system_example_group.rb +5 -4
  26. data/lib/rspec/rails/extensions/active_record/proxy.rb +4 -1
  27. data/lib/rspec/rails/file_fixture_support.rb +9 -11
  28. data/lib/rspec/rails/fixture_file_upload_support.rb +32 -16
  29. data/lib/rspec/rails/fixture_support.rb +9 -12
  30. data/lib/rspec/rails/matchers/action_mailbox.rb +14 -5
  31. data/lib/rspec/rails/matchers/active_job.rb +29 -3
  32. data/lib/rspec/rails/matchers/have_enqueued_mail.rb +33 -5
  33. data/lib/rspec/rails/matchers/have_http_status.rb +4 -4
  34. data/lib/rspec/rails/matchers/relation_match_array.rb +1 -1
  35. data/lib/rspec/rails/version.rb +1 -1
  36. data/lib/rspec-rails.rb +5 -7
  37. data.tar.gz.sig +0 -0
  38. metadata +37 -25
  39. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8e8f5dabd4f5335dc409c77670d7aef552636874486111f105613d54e4270375
4
- data.tar.gz: 72f211f8667a1d6faedaa8e02877958ccd742c5591107ed568a620fc38999c55
3
+ metadata.gz: be221e5df3386cb55e14f8047e02628bc11098596dcce06749701ac0b7497782
4
+ data.tar.gz: 56b12531541ff18599c13618ba2937859bb4cd860cc814b3350046ec4949e870
5
5
  SHA512:
6
- metadata.gz: a4125a040fcc9d7b1e9d8ee802f2d9ad75bc581a3e9263c329db8ddaccfd49988ccaab066c0aebad50e3b78a99d0ebe22e04a9648e44f6e1284325ea112e4c63
7
- data.tar.gz: e08c9439828c7f1b2f3ec543ea72d554f92d79adde6cb01e19d8486c3fc64887432239d1159d4aea7a6b8811cd4f3aaff811b777b3dff80569facfaa38ede625
6
+ metadata.gz: a1786502c478ab9de29fbd59ce16371178776a7283698ba048b203f62aa614fc6c28e4c72b5064595f4eacd2cf309443de8d0d6803ac604e9d11a641c6f86c4b
7
+ data.tar.gz: 5860654b1926c2f2cdd998d2b84ac075167f7107bd687b74dae5bb9e17d7e76ef6b0c96dd022ec7a9be5dc0fe008e845808187080e97b400bec18b35d1872e76
checksums.yaml.gz.sig CHANGED
Binary file
data/Changelog.md CHANGED
@@ -1,82 +1,148 @@
1
- ### 4.0.0.rc1 / 2020-03-13
2
- [Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.0.beta4...v4.0.0.rc1)
1
+ ### Development
2
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v5.1.1...5-1-maintenance)
3
+
4
+ Bug Fixes:
5
+
6
+ * Fix controller scaffold templates parameter name. (Taketo Takashima, #2591)
7
+ * Include generator specs in the inferred list of specs. (Jason Karns, #2597)
8
+
9
+ ### 5.1.1 / 2022-03-07
10
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v5.1.0...v5.1.1)
11
+
12
+ Bug Fixes:
13
+
14
+ * Properly handle global id serialised arguments in `have_enqueued_mail`.
15
+ (Jon Rowe, #2578)
16
+
17
+ ### 5.1.0 / 2022-01-26
18
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v5.0.3...v5.1.0)
3
19
 
4
20
  Enhancements:
5
21
 
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)
10
- * Set `ActionDispatch::SystemTesting::Server.silence_puma = true` when running system specs.
11
- (ta1kt0me, Benoit Tigeot, #2289)
22
+ * Make the API request scaffold template more consistent and compatible with
23
+ Rails 6.1. (Naoto Hamada, #2484)
24
+ * Change the scaffold `rails_helper.rb` template to use `require_relative`.
25
+ (Jon Dufresne, #2528)
26
+
27
+ ### 5.0.3 / 2022-01-26
28
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v5.0.2...v5.0.3)
12
29
 
13
30
  Bug Fixes:
14
31
 
15
- * Restore previous conditional check for setting `default_url_options` in feature
16
- specs, prevents a `NoMethodError` in some scenarios. (Eugene Kenny, #2277)
17
- * Allow changing `ActiveJob::Base.queue_adapter` inside a system spec.
18
- (Jonathan Rochkind, #2242)
19
- * `rails generate generator` command now creates related spec file (Joel Azemar, #2217)
20
- * Relax upper `capybara` version constraint to allow for Capybara 3.x (Phil Pirozhkov, #2281)
21
- * Clear ActionMailer test mailbox after each example (Benoit Tigeot, #2293)
32
+ * Properly name params in controller and request spec templates when
33
+ using the `--model-name` parameter. (@kenzo-tanaka, #2534)
34
+ * Fix support for `have_enqueued_mail` on Ruby 3.1 with Rails 6.1.
35
+ (Fabio Napoleoni, Mikael Henriksson, Phil Pirozhkov, Jon Rowe, #2566)
36
+
37
+ ### 5.0.2 / 2021-08-14
38
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v5.0.1...v5.0.2)
39
+
40
+ Bug Fixes:
41
+
42
+ * Prevent generated job specs from duplicating `_job` in filenames.
43
+ (Nick Flückiger, #2496)
44
+ * Fix `ActiveRecord::TestFixture#uses_transaction` by using example description
45
+ to replace example name rather than example in our monkey patched
46
+ `run_in_transaction?` method. (Stan Lo, #2495)
47
+ * Prevent keyword arguments being lost when methods are invoked dynamically
48
+ in controller specs. (Josh Cheek, #2509, #2514)
22
49
 
23
- ### 4.0.0.beta4
24
- [Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.0.beta3...v4.0.0.beta4)
50
+ ### 5.0.1 / 2021-03-18
51
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v5.0.0...v5.0.1)
52
+
53
+ Bug Fixes:
54
+
55
+ * Limit multibyte example descriptions when used in system tests for #method_name
56
+ which ends up as screenshot names etc. (@y-yagi, #2405, #2487)
57
+
58
+ ### 5.0.0 / 2021-03-09
59
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.1.1...v5.0.0)
25
60
 
26
61
  Enhancements:
27
62
 
28
- * Add argument matcher support to `have_enqueued_*` matchers. (Phil Pirozhkov, #2206)
29
- * Switch generated templates to use ruby 1.9 hash keys. (Tanbir Hasan, #2224)
30
- * Add `have_been_performed`/`have_performed_job`/`perform_job` ActiveJob
31
- matchers (Isaac Seymour, #1785)
32
- * Default to generating request specs rather than controller specs when
33
- generating a controller (Luka Lüdicke, #2222)
63
+ * Support new #file_fixture_path and new fixture test support code. (Jon Rowe, #2398)
64
+ * Support for Rails 6.1. (Benoit Tigeot, Jon Rowe, Phil Pirozhkov, and more #2398)
65
+
66
+ Breaking Changes:
67
+
68
+ * Drop support for Rails below 5.2.
69
+
70
+ ### 4.1.1 / 2021-03-09
34
71
 
35
72
  Bug Fixes:
36
73
 
37
- * Prevent `driven_by(:selenium)` being called due to hook precedence.
38
- (Takumi Shotoku, #2188)
39
- * Prevent a `WrongScopeError` being thrown during loading fixtures on Rails
40
- 6.1 development version. (Edouard Chin, #2215)
41
- * Fix Mocha mocking support with `should`. (Phil Pirozhkov, #2256)
74
+ * Remove generated specs when destroying a generated controller.
75
+ (@Naokimi, #2475)
42
76
 
43
- ### 4.0.0.beta3
44
- [Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.0.beta2...v4.0.0.beta3)
77
+ ### 4.1.0 / 2021-03-06
45
78
 
46
79
  Enhancements:
47
80
 
48
- * Adds support for JRuby on Rails 5.2 and 6
49
- * Add support for parameterised mailers (Ignatius Reza, #2125)
50
- * Add ActionMailbox spec helpers and test type (James Dabbs, #2119)
51
- * Add ActionCable spec helpers and test type (Vladimir Dementyev, #2113)
52
- * Add support for partial args when using `have_enqueued_mail`
53
- (Ignatius Reza, #2118, #2125)
54
- * Add support for time arguments for `have_enqueued_job` (@alpaca-tc, #2157)
55
- * Improve path parsing in view specs render options. (John Hawthorn, #2115)
56
- * Add routing spec template as an option for generating controller specs.
57
- (David Revelo, #2134)
81
+ * Issue a warning when using job matchers with `#at` mis-match on `usec` precision.
82
+ (Jon Rowe, #2350)
83
+ * Generated request specs now have a bare `_spec` suffix instead of `request_spec`.
84
+ (Eloy Espinaco, Luka Lüdicke, #2355, #2356, #2378)
85
+ * Generated scaffold now includes engine route helpers when inside a mountable engine.
86
+ (Andrew W. Lee, #2372)
87
+ * Improve request spec "controller" scafold when no action is specified.
88
+ (Thomas Hareau, #2399)
89
+ * Introduce testing snippets concept (Phil Pirozhkov, Benoit Tigeot, #2423)
90
+ * Prevent collisions with `let(:name)` for Rails 6.1 and `let(:method_name)` on older
91
+ Rails. (Benoit Tigeot, #2461)
92
+
93
+ ### 4.0.2 / 2020-12-26
94
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.1...v4.0.2)
58
95
 
59
96
  Bug Fixes:
60
97
 
61
- * Replace `before_teardown` as well as `after_teardown` to ensure screenshots
62
- are generated correctly. (Jon Rowe, #2164)
63
- * `ActionView::FixtureResolver#hash` has been renamed to `ActionView::FixtureResolver#data`.
64
- (Penelope Phippen, #2076)
65
- * Add missing require for `have_enqueued_mail` matcher. (Ignatius Reza, #2117)
98
+ * Indent all extra failure lines output from system specs. (Alex Robbin, #2321)
99
+ * Generated request spec for update now uses the correct let. (Paul Hanyzewski, #2344)
100
+ * Return `true`/`false` from predicate methods in config rather than raw values.
101
+ (Phil Pirozhkov, Jon Rowe, #2353, #2354)
102
+ * Remove old #fixture_path feature detection code which broke under newer Rails.
103
+ (Koen Punt, Jon Rowe, #2370)
104
+ * Fix an error when `use_active_record` is `false` (Phil Pirozhkov, #2423)
66
105
 
67
- ### 4.0.0.beta2
68
- [Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.0.beta1...v4.0.0.beta2)
106
+ ### 4.0.1 / 2020-05-16
107
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.0...v4.0.1)
69
108
 
70
109
  Bug Fixes:
71
110
 
72
- * Fix version dependencies in gemspec.
111
+ * Remove warning when calling `driven_by` in system specs. (Aubin Lorieux, #2302)
112
+ * Fix comparison of times for `#at` in job matchers. (Jon Rowe, Markus Doits, #2304)
113
+ * Allow `have_enqueued_mail` to match when a sub class of `ActionMailer::DeliveryJob`
114
+ is set using `<Class>.delivery_job=`. (Atsushi Yoshida #2305)
115
+ * Restore Ruby 2.2.x compatibility. (Jon Rowe, #2332)
116
+ * Add `required_ruby_version` to gem spec. (Marc-André Lafortune, #2319, #2338)
73
117
 
74
- ### 4.0.0.beta1
75
- [Full Changelog](https://github.com/rspec/rspec-rails/compare/v3.9.0...v4.0.0.beta1)
118
+ ### 4.0.0 / 2020-03-24
119
+ [Full Changelog](https://github.com/rspec/rspec-rails/compare/v3.9.1...v4.0.0)
76
120
 
77
121
  Enhancements:
78
122
 
79
123
  * Adds support for Rails 6. (Penelope Phippen, Benoit Tigeot, Jon Rowe, #2071)
124
+ * Adds support for JRuby on Rails 5.2 and 6
125
+ * Add support for parameterised mailers (Ignatius Reza, #2125)
126
+ * Add ActionMailbox spec helpers and test type (James Dabbs, #2119)
127
+ * Add ActionCable spec helpers and test type (Vladimir Dementyev, #2113)
128
+ * Add support for partial args when using `have_enqueued_mail`
129
+ (Ignatius Reza, #2118, #2125)
130
+ * Add support for time arguments for `have_enqueued_job` (@alpaca-tc, #2157)
131
+ * Improve path parsing in view specs render options. (John Hawthorn, #2115)
132
+ * Add routing spec template as an option for generating controller specs.
133
+ (David Revelo, #2134)
134
+ * Add argument matcher support to `have_enqueued_*` matchers. (Phil Pirozhkov, #2206)
135
+ * Switch generated templates to use ruby 1.9 hash keys. (Tanbir Hasan, #2224)
136
+ * Add `have_been_performed`/`have_performed_job`/`perform_job` ActiveJob
137
+ matchers (Isaac Seymour, #1785)
138
+ * Default to generating request specs rather than controller specs when
139
+ generating a controller (Luka Lüdicke, #2222)
140
+ * Allow `ActiveJob` matchers `#on_queue` modifier to take symbolic queue names. (Nils Sommer, #2283)
141
+ * The scaffold generator now generates request specs in preference to controller specs.
142
+ (Luka Lüdicke, #2288)
143
+ * Add configuration option to disable ActiveRecord. (Jon Rowe, Phil Pirozhkov, Hermann Mayer, #2266)
144
+ * Set `ActionDispatch::SystemTesting::Server.silence_puma = true` when running system specs.
145
+ (ta1kt0me, Benoit Tigeot, #2289)
80
146
 
81
147
  Bug Fixes:
82
148
 
@@ -86,12 +152,35 @@ Bug Fixes:
86
152
  deprecated. (Pavel Rosický, #2092)
87
153
  * `ActionView::Template#formats` has been deprecated and replaced by
88
154
  `ActionView::Template#format`(Seb Jacobs, #2100)
155
+ * Replace `before_teardown` as well as `after_teardown` to ensure screenshots
156
+ are generated correctly. (Jon Rowe, #2164)
157
+ * `ActionView::FixtureResolver#hash` has been renamed to `ActionView::FixtureResolver#data`.
158
+ (Penelope Phippen, #2076)
159
+ * Prevent `driven_by(:selenium)` being called due to hook precedence.
160
+ (Takumi Shotoku, #2188)
161
+ * Prevent a `WrongScopeError` being thrown during loading fixtures on Rails
162
+ 6.1 development version. (Edouard Chin, #2215)
163
+ * Fix Mocha mocking support with `should`. (Phil Pirozhkov, #2256)
164
+ * Restore previous conditional check for setting `default_url_options` in feature
165
+ specs, prevents a `NoMethodError` in some scenarios. (Eugene Kenny, #2277)
166
+ * Allow changing `ActiveJob::Base.queue_adapter` inside a system spec.
167
+ (Jonathan Rochkind, #2242)
168
+ * `rails generate generator` command now creates related spec file (Joel Azemar, #2217)
169
+ * Relax upper `capybara` version constraint to allow for Capybara 3.x (Phil Pirozhkov, #2281)
170
+ * Clear ActionMailer test mailbox after each example (Benoit Tigeot, #2293)
89
171
 
90
172
  Breaking Changes:
91
173
 
92
174
  * Drops support for Rails below 5.0
93
175
  * Drops support for Ruby below 2.3
94
176
 
177
+ ### 3.9.1 / 2020-03-10
178
+ [Full Changelog](http://github.com/rspec/rspec-rails/compare/v3.9.0...v3.9.1)
179
+
180
+ Bug Fixes:
181
+
182
+ * Add missing require for have_enqueued_mail matcher. (Ignatius Reza, #2117)
183
+
95
184
  ### 3.9.0 / 2019-10-08
96
185
  [Full Changelog](https://github.com/rspec/rspec-rails/compare/v3.8.3...v3.9.0)
97
186
 
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # rspec-rails [![Build Status][]][travis-ci] [![Code Climate][]][code-climate] [![Gem Version][]](gem-version)
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,13 @@ 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` 1.x][]** for Rails 2.x.
11
+ According to [RSpec Rails new versioning strategy][] use:
12
+ * **[`rspec-rails` 5.x][]** for Rails 6.x.
13
+ * **[`rspec-rails` 4.x][]** for Rails from 5.x or 6.x.
14
+ * **[`rspec-rails` 3.x][]** for Rails earlier than 5.0.
15
+ * **[`rspec-rails` 1.x][]** for Rails 2.x.
12
16
 
13
- [Build Status]: https://secure.travis-ci.org/rspec/rspec-rails.svg?branch=master
17
+ [Build Status]: https://secure.travis-ci.org/rspec/rspec-rails.svg?branch=main
14
18
  [travis-ci]: https://travis-ci.org/rspec/rspec-rails
15
19
  [Code Climate]: https://codeclimate.com/github/rspec/rspec-rails.svg
16
20
  [code-climate]: https://codeclimate.com/github/rspec/rspec-rails
@@ -19,23 +23,30 @@ Use **[`rspec-rails` 1.x][]** for Rails 2.x.
19
23
  [RSpec]: https://rspec.info/
20
24
  [Ruby on Rails]: https://rubyonrails.org/
21
25
  [`rspec-rails` 1.x]: https://github.com/dchelimsky/rspec-rails
26
+ [`rspec-rails` 3.x]: https://github.com/rspec/rspec-rails/tree/3-9-maintenance
27
+ [`rspec-rails` 4.x]: https://github.com/rspec/rspec-rails/tree/4-1-maintenance
28
+ [`rspec-rails` 5.x]: https://github.com/rspec/rspec-rails/tree/5-0-maintenance
29
+ [RSpec Rails new versioning strategy]: https://github.com/rspec/rspec-rails/blob/main/rfcs/versioning-strategy.md
22
30
 
23
31
  ## Installation
24
32
 
33
+ **IMPORTANT** This README / branch refers to the current development build.
34
+ See the [`5-0-maintenance` branch on Github](https://github.com/rspec/rspec-rails/tree/5-0-maintenance) if you want or require the latest stable release.
35
+
25
36
  1. Add `rspec-rails` to **both** the `:development` and `:test` groups
26
37
  of your app’s `Gemfile`:
27
38
 
28
39
  ```ruby
29
- # Run against the latest stable release
40
+ # Run against this stable release
30
41
  group :development, :test do
31
- gem 'rspec-rails', '~> 4.0'
42
+ gem 'rspec-rails', '~> 5.0.0'
32
43
  end
33
44
 
34
- # Or, run against the master branch
35
- # (requires master-branch versions of all related RSpec libraries)
45
+ # Or, run against the main branch
46
+ # (requires main-branch versions of all related RSpec libraries)
36
47
  group :development, :test do
37
48
  %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: 'master'
49
+ gem lib, git: "https://github.com/rspec/#{lib}.git", branch: 'main'
39
50
  end
40
51
  end
41
52
  ```
@@ -182,17 +193,17 @@ In addition to [the matchers that come standard in RSpec][],
182
193
  here are some extras that make it easier
183
194
  to test the various parts of a Rails system:
184
195
 
185
- | RSpec matcher | Delegates to | Available in | Notes |
186
- | ------------------------ | ----------------- | ------------------------------- | -------------------------------------------------------- |
187
- | [`be_a_new`][] | | all | primarily intended for controller specs |
188
- | [`render_template`][] | `assert_template` | request / controller / view | use with `expect(response).to` |
189
- | [`redirect_to`][] | `assert_redirect` | request / controller | use with `expect(response).to` |
190
- | [`route_to`] | `assert_routing` | routing / controller | replaces `route_for` from version 1.x |
191
- | [`be_routable`] | | routing / controller | usu. for `expect(...).not_to be_routable` |
192
- | [`have_http_status`][] | | request / controller / feature | |
193
- | [`match_array`][] | | all | for comparing arrays of ActiveRecord objects |
194
- | [`have_been_enqueued`][] | | all | requires config: `ActiveJob::Base.queue_adapter = :test` |
195
- | [`have_enqueued_job`][] | | all | requires config: `ActiveJob::Base.queue_adapter = :test` |
196
+ | RSpec matcher | Delegates to | Available in | Notes |
197
+ | ------------------------ | ------------------- | ------------------------------- | -------------------------------------------------------- |
198
+ | [`be_a_new`][] | | all | primarily intended for controller specs |
199
+ | [`render_template`][] | `assert_template` | request / controller / view | use with `expect(response).to` |
200
+ | [`redirect_to`][] | `assert_redirect` | request / controller | use with `expect(response).to` |
201
+ | [`route_to`] | `assert_recognizes` | routing / controller | use with `expect(...).to route_to` |
202
+ | [`be_routable`] | | routing / controller | use with `expect(...).not_to be_routable` |
203
+ | [`have_http_status`][] | | request / controller / feature | |
204
+ | [`match_array`][] | | all | for comparing arrays of ActiveRecord objects |
205
+ | [`have_been_enqueued`][] | | all | requires config: `ActiveJob::Base.queue_adapter = :test` |
206
+ | [`have_enqueued_job`][] | | all | requires config: `ActiveJob::Base.queue_adapter = :test` |
196
207
 
197
208
  Follow the links above for examples of how each matcher is used.
198
209
 
@@ -222,18 +233,18 @@ Each one inherits from one of Rails’ built-in `TestCase` classes,
222
233
  meaning the helper methods provided by default in Rails tests
223
234
  are available in RSpec, as well.
224
235
 
225
- | Spec type | Corresponding Rails test class |
226
- | -------------- | -------------------------------- |
227
- | [model][] | |
228
- | [controller][] | [`ActionController::TestCase`][] |
229
- | [mailer][] | `ActionMailer::TestCase` |
230
- | [job][] | |
231
- | [view][] | `ActionView::TestCase` |
232
- | [routing][] | |
233
- | [helper][] | `ActionView::TestCase` |
234
- | [request][] | [`ActionDispatch::IntegrationTest`][] |
235
- | [feature][] | |
236
- | [system][] | [`ActionDispatch::SystemTestCase`][] |
236
+ | Spec type | Corresponding Rails test class |
237
+ | -------------- | -------------------------------- |
238
+ | [model][] | |
239
+ | [controller][] | [`ActionController::TestCase`][] |
240
+ | [mailer][] | `ActionMailer::TestCase` |
241
+ | [job][] | |
242
+ | [view][] | `ActionView::TestCase` |
243
+ | [routing][] | |
244
+ | [helper][] | `ActionView::TestCase` |
245
+ | [request][] | [`ActionDispatch::IntegrationTest`][] |
246
+ | [feature][] | |
247
+ | [system][] | [`ActionDispatch::SystemTestCase`][] |
237
248
 
238
249
  Follow the links above to see examples of each spec type,
239
250
  or for official Rails API documentation on the given `TestCase` class.
@@ -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}_request_spec.rb")
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
@@ -1,7 +1,7 @@
1
1
  # This file is copied to spec/ when you run 'rails generate rspec:install'
2
2
  require 'spec_helper'
3
3
  ENV['RAILS_ENV'] ||= 'test'
4
- require File.expand_path('../config/environment', __dir__)
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
7
  require 'rspec/rails'
@@ -5,7 +5,8 @@ module Rspec
5
5
  # @private
6
6
  class JobGenerator < Base
7
7
  def create_job_spec
8
- template 'job_spec.rb.erb', File.join('spec/jobs', class_path, "#{file_name}_job_spec.rb")
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 %>Job, <%= type_metatag(:job) %> do
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 <%= Rails.version.to_f >= 5.0 ? class_name.sub(/(Mailer)?$/, 'Mailer') : class_name %>, <%= type_metatag(:mailer) %> do
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) { <%= Rails.version.to_f >= 5.0 ? class_name.sub(/(Mailer)?$/, 'Mailer') : class_name %>.<%= action %> }
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
- <%= Rails.version.to_f >= 5.0 ? class_name.sub(/(Mailer)?$/, 'Mailer') : class_name %>.<%= action %>
8
+ <%= class_name.sub(/(Mailer)?$/, 'Mailer') %>.<%= action %>
9
9
  end
10
10
  <% end -%>
11
11
 
@@ -127,6 +127,10 @@ module Rspec
127
127
  def banner
128
128
  self.class.banner
129
129
  end
130
+
131
+ def show_helper(resource_name = file_name)
132
+ "#{singular_route_name}_url(#{resource_name})"
133
+ end
130
134
  end
131
135
  end
132
136
  end
@@ -64,21 +64,21 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
64
64
  context "with valid params" do
65
65
  it "creates a new <%= class_name %>" do
66
66
  expect {
67
- post :create, params: {<%= ns_file_name %>: valid_attributes}, session: valid_session
67
+ post :create, params: {<%= singular_table_name %>: valid_attributes}, session: valid_session
68
68
  }.to change(<%= class_name %>, :count).by(1)
69
69
  end
70
70
 
71
- it "renders a JSON response with the new <%= ns_file_name %>" do
72
- post :create, params: {<%= ns_file_name %>: valid_attributes}, session: valid_session
71
+ it "renders a JSON response with the new <%= singular_table_name %>" do
72
+ post :create, params: {<%= singular_table_name %>: valid_attributes}, session: valid_session
73
73
  expect(response).to have_http_status(:created)
74
74
  expect(response.content_type).to eq('application/json')
75
- expect(response.location).to eq(<%= ns_file_name %>_url(<%= class_name %>.last))
75
+ expect(response.location).to eq(<%= singular_table_name %>_url(<%= class_name %>.last))
76
76
  end
77
77
  end
78
78
 
79
79
  context "with invalid params" do
80
- it "renders a JSON response with errors for the new <%= ns_file_name %>" do
81
- post :create, params: {<%= ns_file_name %>: invalid_attributes}, session: valid_session
80
+ it "renders a JSON response with errors for the new <%= singular_table_name %>" do
81
+ post :create, params: {<%= singular_table_name %>: invalid_attributes}, session: valid_session
82
82
  expect(response).to have_http_status(:unprocessable_entity)
83
83
  expect(response.content_type).to eq('application/json')
84
84
  end
@@ -91,25 +91,25 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
91
91
  skip("Add a hash of attributes valid for your model")
92
92
  }
93
93
 
94
- it "updates the requested <%= ns_file_name %>" do
94
+ it "updates the requested <%= singular_table_name %>" do
95
95
  <%= file_name %> = <%= class_name %>.create! valid_attributes
96
- put :update, params: {id: <%= file_name %>.to_param, <%= ns_file_name %>: new_attributes}, session: valid_session
96
+ put :update, params: {id: <%= file_name %>.to_param, <%= singular_table_name %>: new_attributes}, session: valid_session
97
97
  <%= file_name %>.reload
98
98
  skip("Add assertions for updated state")
99
99
  end
100
100
 
101
- it "renders a JSON response with the <%= ns_file_name %>" do
101
+ it "renders a JSON response with the <%= singular_table_name %>" do
102
102
  <%= file_name %> = <%= class_name %>.create! valid_attributes
103
- put :update, params: {id: <%= file_name %>.to_param, <%= ns_file_name %>: valid_attributes}, session: valid_session
103
+ put :update, params: {id: <%= file_name %>.to_param, <%= singular_table_name %>: new_attributes}, session: valid_session
104
104
  expect(response).to have_http_status(:ok)
105
105
  expect(response.content_type).to eq('application/json')
106
106
  end
107
107
  end
108
108
 
109
109
  context "with invalid params" do
110
- it "renders a JSON response with errors for the <%= ns_file_name %>" do
110
+ it "renders a JSON response with errors for the <%= singular_table_name %>" do
111
111
  <%= file_name %> = <%= class_name %>.create! valid_attributes
112
- put :update, params: {id: <%= file_name %>.to_param, <%= ns_file_name %>: invalid_attributes}, session: valid_session
112
+ put :update, params: {id: <%= file_name %>.to_param, <%= singular_table_name %>: invalid_attributes}, session: valid_session
113
113
  expect(response).to have_http_status(:unprocessable_entity)
114
114
  expect(response.content_type).to eq('application/json')
115
115
  end
@@ -117,7 +117,7 @@ RSpec.describe <%= controller_class_name %>Controller, <%= type_metatag(:control
117
117
  end
118
118
 
119
119
  describe "DELETE #destroy" do
120
- it "destroys the requested <%= ns_file_name %>" do
120
+ it "destroys the requested <%= singular_table_name %>" do
121
121
  <%= file_name %> = <%= class_name %>.create! valid_attributes
122
122
  expect {
123
123
  delete :destroy, params: {id: <%= file_name %>.to_param}, session: valid_session