rspec-rails 4.0.0.beta4 → 4.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Capybara.md +5 -54
- data/Changelog.md +72 -37
- data/README.md +23 -18
- data/lib/generators/rspec/controller/controller_generator.rb +1 -1
- data/lib/generators/rspec/controller/templates/request_spec.rb +6 -1
- data/lib/generators/rspec/{generators → generator}/generator_generator.rb +2 -2
- data/lib/generators/rspec/{generators → generator}/templates/generator_spec.rb +0 -0
- data/lib/generators/rspec/install/templates/spec/rails_helper.rb +15 -1
- data/lib/generators/rspec/scaffold/scaffold_generator.rb +18 -10
- data/lib/generators/rspec/scaffold/templates/api_request_spec.rb +131 -0
- data/lib/generators/rspec/scaffold/templates/request_spec.rb +137 -0
- data/lib/rspec-rails.rb +2 -2
- data/lib/rspec/rails/adapters.rb +3 -3
- data/lib/rspec/rails/configuration.rb +40 -4
- data/lib/rspec/rails/example/channel_example_group.rb +2 -2
- data/lib/rspec/rails/example/feature_example_group.rb +5 -23
- 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 -4
- data/lib/rspec/rails/example/view_example_group.rb +1 -1
- 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 +38 -27
- data/lib/rspec/rails/matchers/action_cable/have_broadcasted_to.rb +3 -3
- data/lib/rspec/rails/matchers/active_job.rb +31 -5
- data/lib/rspec/rails/matchers/have_enqueued_mail.rb +4 -4
- data/lib/rspec/rails/matchers/relation_match_array.rb +1 -1
- data/lib/rspec/rails/matchers/routing_matchers.rb +2 -2
- data/lib/rspec/rails/tasks/rspec.rake +4 -4
- data/lib/rspec/rails/vendor/capybara.rb +0 -5
- data/lib/rspec/rails/version.rb +1 -1
- metadata +30 -28
- 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: 4cfb82b177fd4c881bb331fe78d7c0c7e974d8e886050b67db824aa4e4a93ab2
|
4
|
+
data.tar.gz: 1c55d80deaeab9a57af17b7b4c219490be2141c55d04fef428daa4a09fc3fd4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 346b1d7428910e9b79881fa6a5ad616521fe6615c058ba559aa11136929e9f3ec7601d76e8a200123c74708f147d49c665b0fc649cf76a10f8b4ae55e734c6c0
|
7
|
+
data.tar.gz: 10478159e4622f40869d46fb36ab8a4472d469b2547bb54238164244511326393a3b66f7568787d0419aeac70fcb24942352f1f3fcdaede273070aa609b12cfc
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/Capybara.md
CHANGED
@@ -1,58 +1,19 @@
|
|
1
1
|
rspec-rails supports integration with Capybara out of the box by adding
|
2
2
|
its Capybara::DSL (visit/page) and Capybara::RSpecMatchers to the
|
3
|
-
examples in the applicable directories
|
4
|
-
Capybara 1.x and Capybara >= 2.x.
|
3
|
+
examples in the applicable directories.
|
5
4
|
|
6
5
|
## Capybara::DSL
|
7
6
|
|
8
7
|
Adds the `visit` and `page` methods, which work together to simulate a
|
9
8
|
GET request and provide access to the result (via `page`).
|
10
9
|
|
11
|
-
## Capybara::RSpecMatchers
|
12
|
-
|
13
|
-
Exposes matchers used to specify expected HTML content (e.g. `should_not have_selector` will work correctly).
|
14
|
-
|
15
|
-
## Capybara 1.x
|
16
|
-
|
17
|
-
Capybara::DSL is added to examples in:
|
18
|
-
|
19
|
-
* spec/requests # included by Capybara
|
20
|
-
* spec/controllers
|
21
|
-
|
22
|
-
Capybara::RSpecMatchers is added to examples in:
|
23
|
-
|
24
|
-
* spec/requests # included by Capybara
|
25
|
-
* spec/controllers
|
26
|
-
* spec/views
|
27
|
-
* spec/helpers
|
28
|
-
* spec/mailers
|
29
|
-
|
30
|
-
## Capybara 2.0
|
31
|
-
|
32
|
-
To use Capybara 2.0, you need rspec-rails-2.11.1 or greater.
|
33
|
-
|
34
10
|
Capybara::DSL is added to examples in:
|
35
11
|
|
36
12
|
* spec/features
|
37
13
|
|
38
|
-
Capybara::RSpecMatchers
|
39
|
-
|
40
|
-
* spec/features
|
41
|
-
* spec/controllers
|
42
|
-
* spec/views
|
43
|
-
* spec/helpers
|
44
|
-
* spec/mailers
|
45
|
-
|
46
|
-
## Upgrading to Capybara-2.0
|
47
|
-
|
48
|
-
Many users have been confused by the co-existence of the the
|
49
|
-
Capybara::DSL (visit/page) alongside the rack-test DSL
|
50
|
-
(get|post|put|delete|head/response.body) in examples in spec/requests
|
51
|
-
and spec/controllers. As of rspec-rails-2.11.1 and capybara-2.0.0.beta2, these
|
52
|
-
are separated as follows:
|
14
|
+
## Capybara::RSpecMatchers
|
53
15
|
|
54
|
-
|
55
|
-
* rack-test DSL is included in `spec/requests` and `spec/controllers`
|
16
|
+
Exposes matchers used to specify expected HTML content (e.g. `should_not have_selector` will work correctly).
|
56
17
|
|
57
18
|
Capybara::RSpecMatchers is added to examples in:
|
58
19
|
|
@@ -62,16 +23,6 @@ Capybara::RSpecMatchers is added to examples in:
|
|
62
23
|
* spec/helpers
|
63
24
|
* spec/mailers
|
64
25
|
|
65
|
-
|
66
|
-
spec/requests you'll want to move those examples to spec/features and
|
67
|
-
they should just work.
|
68
|
-
|
69
|
-
If you want to leave those examples in spec/requests, you can include
|
70
|
-
Capybara::DSL in those examples yourself as follows, but this is
|
71
|
-
absolutely not recommended as you will be overriding the intended
|
72
|
-
behavior and accepting the risks associated with doing so:
|
26
|
+
## Upgrading to Capybara-3.x
|
73
27
|
|
74
|
-
|
75
|
-
RSpec.configure do |c|
|
76
|
-
c.include Capybara::DSL, file_path: "spec/requests"
|
77
|
-
end
|
28
|
+
Consult the official [Upgrading from Capybara 2.x to 3.x](https://github.com/teamcapybara/capybara/blob/master/UPGRADING.md#upgrading-from-capybara-2x-to-3x) guide.
|
data/Changelog.md
CHANGED
@@ -1,28 +1,50 @@
|
|
1
|
-
### 4.
|
2
|
-
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.
|
1
|
+
### 4.1.0 / 2021-03-06
|
2
|
+
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.2...v4.1.0)
|
3
3
|
|
4
4
|
Enhancements:
|
5
5
|
|
6
|
-
*
|
7
|
-
|
8
|
-
*
|
9
|
-
|
10
|
-
*
|
11
|
-
|
6
|
+
* Issue a warning when using job matchers with `#at` mis-match on `usec` precision.
|
7
|
+
(Jon Rowe, #2350)
|
8
|
+
* Generated request specs now have a bare `_spec` suffix instead of `request_spec`.
|
9
|
+
(Eloy Espinaco, Luka Lüdicke, #2355, #2356, #2378)
|
10
|
+
* Generated scaffold now includes engine route helpers when inside a mountable engine.
|
11
|
+
(Andrew W. Lee, #2372)
|
12
|
+
* Improve request spec "controller" scafold when no action is specified.
|
13
|
+
(Thomas Hareau, #2399)
|
14
|
+
* Introduce testing snippets concept (Phil Pirozhkov, Benoit Tigeot, #2423)
|
15
|
+
* Prevent collisions with `let(:name)` for Rails 6.1 and `let(:method_name)` on older
|
16
|
+
Rails. (Benoit Tigeot, #2461)
|
17
|
+
|
18
|
+
### 4.0.2 / 2020-12-26
|
19
|
+
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.1...v4.0.2)
|
12
20
|
|
13
21
|
Bug Fixes:
|
14
22
|
|
15
|
-
*
|
16
|
-
|
17
|
-
*
|
18
|
-
|
19
|
-
*
|
23
|
+
* Indent all extra failure lines output from system specs. (Alex Robbin, #2321)
|
24
|
+
* Generated request spec for update now uses the correct let. (Paul Hanyzewski, #2344)
|
25
|
+
* Return `true`/`false` from predicate methods in config rather than raw values.
|
26
|
+
(Phil Pirozhkov, Jon Rowe, #2353, #2354)
|
27
|
+
* Remove old #fixture_path feature detection code which broke under newer Rails.
|
28
|
+
(Koen Punt, Jon Rowe, #2370)
|
29
|
+
|
30
|
+
### 4.0.1 / 2020-05-16
|
31
|
+
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v4.0.0...v4.0.1)
|
32
|
+
|
33
|
+
Bug Fixes:
|
34
|
+
|
35
|
+
* Remove warning when calling `driven_by` in system specs. (Aubin Lorieux, #2302)
|
36
|
+
* Fix comparison of times for `#at` in job matchers. (Jon Rowe, Markus Doits, #2304)
|
37
|
+
* Allow `have_enqueued_mail` to match when a sub class of `ActionMailer::DeliveryJob`
|
38
|
+
is set using `<Class>.delivery_job=`. (Atsushi Yoshida #2305)
|
39
|
+
* Restore Ruby 2.2.x compatibility. (Jon Rowe, #2332)
|
40
|
+
* Add `required_ruby_version` to gem spec. (Marc-André Lafortune, #2319, #2338)
|
20
41
|
|
21
|
-
### 4.0.0
|
22
|
-
[Full Changelog](https://github.com/rspec/rspec-rails/compare/
|
42
|
+
### 4.0.0 / 2020-03-24
|
43
|
+
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v3.9.1...v4.0.0)
|
23
44
|
|
24
45
|
Enhancements:
|
25
46
|
|
47
|
+
* Adds support for Rails 6. (Penelope Phippen, Benoit Tigeot, Jon Rowe, #2071)
|
26
48
|
* Adds support for JRuby on Rails 5.2 and 6
|
27
49
|
* Add support for parameterised mailers (Ignatius Reza, #2125)
|
28
50
|
* Add ActionMailbox spec helpers and test type (James Dabbs, #2119)
|
@@ -33,28 +55,18 @@ Enhancements:
|
|
33
55
|
* Improve path parsing in view specs render options. (John Hawthorn, #2115)
|
34
56
|
* Add routing spec template as an option for generating controller specs.
|
35
57
|
(David Revelo, #2134)
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
*
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
Bug Fixes:
|
49
|
-
|
50
|
-
* Fix version dependencies in gemspec.
|
51
|
-
|
52
|
-
### 4.0.0.beta1
|
53
|
-
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v3.9.0...v4.0.0.beta1)
|
54
|
-
|
55
|
-
Enhancements:
|
56
|
-
|
57
|
-
* Adds support for Rails 6. (Penelope Phippen, Benoit Tigeot, Jon Rowe, #2071)
|
58
|
+
* Add argument matcher support to `have_enqueued_*` matchers. (Phil Pirozhkov, #2206)
|
59
|
+
* Switch generated templates to use ruby 1.9 hash keys. (Tanbir Hasan, #2224)
|
60
|
+
* Add `have_been_performed`/`have_performed_job`/`perform_job` ActiveJob
|
61
|
+
matchers (Isaac Seymour, #1785)
|
62
|
+
* Default to generating request specs rather than controller specs when
|
63
|
+
generating a controller (Luka Lüdicke, #2222)
|
64
|
+
* Allow `ActiveJob` matchers `#on_queue` modifier to take symbolic queue names. (Nils Sommer, #2283)
|
65
|
+
* The scaffold generator now generates request specs in preference to controller specs.
|
66
|
+
(Luka Lüdicke, #2288)
|
67
|
+
* Add configuration option to disable ActiveRecord. (Jon Rowe, Phil Pirozhkov, Hermann Mayer, #2266)
|
68
|
+
* Set `ActionDispatch::SystemTesting::Server.silence_puma = true` when running system specs.
|
69
|
+
(ta1kt0me, Benoit Tigeot, #2289)
|
58
70
|
|
59
71
|
Bug Fixes:
|
60
72
|
|
@@ -64,12 +76,35 @@ Bug Fixes:
|
|
64
76
|
deprecated. (Pavel Rosický, #2092)
|
65
77
|
* `ActionView::Template#formats` has been deprecated and replaced by
|
66
78
|
`ActionView::Template#format`(Seb Jacobs, #2100)
|
79
|
+
* Replace `before_teardown` as well as `after_teardown` to ensure screenshots
|
80
|
+
are generated correctly. (Jon Rowe, #2164)
|
81
|
+
* `ActionView::FixtureResolver#hash` has been renamed to `ActionView::FixtureResolver#data`.
|
82
|
+
(Penelope Phippen, #2076)
|
83
|
+
* Prevent `driven_by(:selenium)` being called due to hook precedence.
|
84
|
+
(Takumi Shotoku, #2188)
|
85
|
+
* Prevent a `WrongScopeError` being thrown during loading fixtures on Rails
|
86
|
+
6.1 development version. (Edouard Chin, #2215)
|
87
|
+
* Fix Mocha mocking support with `should`. (Phil Pirozhkov, #2256)
|
88
|
+
* Restore previous conditional check for setting `default_url_options` in feature
|
89
|
+
specs, prevents a `NoMethodError` in some scenarios. (Eugene Kenny, #2277)
|
90
|
+
* Allow changing `ActiveJob::Base.queue_adapter` inside a system spec.
|
91
|
+
(Jonathan Rochkind, #2242)
|
92
|
+
* `rails generate generator` command now creates related spec file (Joel Azemar, #2217)
|
93
|
+
* Relax upper `capybara` version constraint to allow for Capybara 3.x (Phil Pirozhkov, #2281)
|
94
|
+
* Clear ActionMailer test mailbox after each example (Benoit Tigeot, #2293)
|
67
95
|
|
68
96
|
Breaking Changes:
|
69
97
|
|
70
98
|
* Drops support for Rails below 5.0
|
71
99
|
* Drops support for Ruby below 2.3
|
72
100
|
|
101
|
+
### 3.9.1 / 2020-03-10
|
102
|
+
[Full Changelog](http://github.com/rspec/rspec-rails/compare/v3.9.0...v3.9.1)
|
103
|
+
|
104
|
+
Bug Fixes:
|
105
|
+
|
106
|
+
* Add missing require for have_enqueued_mail matcher. (Ignatius Reza, #2117)
|
107
|
+
|
73
108
|
### 3.9.0 / 2019-10-08
|
74
109
|
[Full Changelog](https://github.com/rspec/rspec-rails/compare/v3.8.3...v3.9.0)
|
75
110
|
|
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
|
|
@@ -361,7 +366,7 @@ you can run the specs and Cucumber features, or submit a pull request.
|
|
361
366
|
### Recommended third-party extensions
|
362
367
|
|
363
368
|
* [FactoryBot](https://github.com/thoughtbot/factory_bot)
|
364
|
-
* [Capybara](https://github.com/
|
369
|
+
* [Capybara](https://github.com/teamcapybara/capybara)
|
365
370
|
(Included by default in Rails 5.1+.
|
366
371
|
Note that [additional configuration is required][] to use the Capybara DSL
|
367
372
|
anywhere other than system specs and feature specs.)
|
@@ -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
|
@@ -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
|
@@ -3,8 +3,8 @@ require 'generators/rspec'
|
|
3
3
|
module Rspec
|
4
4
|
module Generators
|
5
5
|
# @private
|
6
|
-
class
|
7
|
-
class_option :generator_specs, type: :boolean, default:
|
6
|
+
class GeneratorGenerator < Base
|
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]
|
File without changes
|
@@ -20,7 +20,7 @@ require 'rspec/rails'
|
|
20
20
|
# directory. Alternatively, in the individual `*_spec.rb` files, manually
|
21
21
|
# require only the support files necessary.
|
22
22
|
#
|
23
|
-
# Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f }
|
23
|
+
# Dir[Rails.root.join('spec', 'support', '**', '*.rb')].sort.each { |f| require f }
|
24
24
|
|
25
25
|
<% if RSpec::Rails::FeatureCheck.has_active_record_migration? -%>
|
26
26
|
# Checks for pending migrations and applies them before tests are run.
|
@@ -42,6 +42,20 @@ RSpec.configure do |config|
|
|
42
42
|
# instead of true.
|
43
43
|
config.use_transactional_fixtures = true
|
44
44
|
|
45
|
+
# You can uncomment this line to turn off ActiveRecord support entirely.
|
46
|
+
# config.use_active_record = false
|
47
|
+
|
48
|
+
<% else -%>
|
49
|
+
# Remove this line to enable support for ActiveRecord
|
50
|
+
config.use_active_record = false
|
51
|
+
|
52
|
+
# If you enable ActiveRecord support you should unncomment these lines,
|
53
|
+
# note if you'd prefer not to run each example within a transaction, you
|
54
|
+
# should set use_transactional_fixtures to false.
|
55
|
+
#
|
56
|
+
# config.fixture_path = "#{::Rails.root}/spec/fixtures"
|
57
|
+
# config.use_transactional_fixtures = true
|
58
|
+
|
45
59
|
<% end -%>
|
46
60
|
# RSpec Rails can automatically mix in different behaviours to your tests
|
47
61
|
# based on their file location, for example enabling you to call `get` and
|
@@ -14,7 +14,8 @@ module Rspec
|
|
14
14
|
class_option :singleton, type: :boolean, desc: "Supply to create a singleton controller"
|
15
15
|
class_option :api, type: :boolean, desc: "Skip specs unnecessary for API-only apps"
|
16
16
|
|
17
|
-
class_option :controller_specs, type: :boolean, default:
|
17
|
+
class_option :controller_specs, type: :boolean, default: false, desc: "Generate controller specs"
|
18
|
+
class_option :request_specs, type: :boolean, default: true, desc: "Generate request specs"
|
18
19
|
class_option :view_specs, type: :boolean, default: true, desc: "Generate view specs"
|
19
20
|
class_option :helper_specs, type: :boolean, default: true, desc: "Generate helper specs"
|
20
21
|
class_option :routing_specs, type: :boolean, default: true, desc: "Generate routing specs"
|
@@ -27,15 +28,20 @@ module Rspec
|
|
27
28
|
def generate_controller_spec
|
28
29
|
return unless options[:controller_specs]
|
29
30
|
|
30
|
-
template_file = File.join(
|
31
|
-
'spec/controllers',
|
32
|
-
controller_class_path,
|
33
|
-
"#{controller_file_name}_controller_spec.rb"
|
34
|
-
)
|
35
31
|
if options[:api]
|
36
|
-
template 'api_controller_spec.rb', template_file
|
32
|
+
template 'api_controller_spec.rb', template_file(folder: 'controllers', suffix: '_controller')
|
33
|
+
else
|
34
|
+
template 'controller_spec.rb', template_file(folder: 'controllers', suffix: '_controller')
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def generate_request_spec
|
39
|
+
return unless options[:request_specs]
|
40
|
+
|
41
|
+
if options[:api]
|
42
|
+
template 'api_request_spec.rb', template_file(folder: 'requests')
|
37
43
|
else
|
38
|
-
template '
|
44
|
+
template 'request_spec.rb', template_file(folder: 'requests')
|
39
45
|
end
|
40
46
|
end
|
41
47
|
|
@@ -60,8 +66,6 @@ module Rspec
|
|
60
66
|
template 'routing_spec.rb', template_file
|
61
67
|
end
|
62
68
|
|
63
|
-
hook_for :integration_tool, as: :integration
|
64
|
-
|
65
69
|
protected
|
66
70
|
|
67
71
|
attr_reader :generator_args
|
@@ -116,6 +120,10 @@ module Rspec
|
|
116
120
|
end
|
117
121
|
end
|
118
122
|
|
123
|
+
def template_file(folder:, suffix: '')
|
124
|
+
File.join('spec', folder, controller_class_path, "#{controller_file_name}#{suffix}_spec.rb")
|
125
|
+
end
|
126
|
+
|
119
127
|
def banner
|
120
128
|
self.class.banner
|
121
129
|
end
|