rspec-rails 3.6.0.beta1 → 3.6.0.beta2
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 +1 -1
- data/Changelog.md +8 -0
- data/README.md +31 -0
- data/lib/generators/rspec/mailer/templates/mailer_spec.rb +2 -2
- data/lib/rspec/rails/matchers/active_job.rb +35 -4
- data/lib/rspec/rails/version.rb +1 -1
- data/lib/rspec/rails/view_rendering.rb +14 -0
- metadata +11 -11
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 92a487b773b69d4298893756136ed2ec3bbc1082
|
4
|
+
data.tar.gz: 175a3d8803f8c795b0b01e5f47f486d4822a9abb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: caa44ae7581f7d2ed130b86ec3159c4e2d08c131373a2c293799bf160661e9cffc4efb59623265730eb4402ce27b1e9076c1a6dad844469e6475640ca3c934fb
|
7
|
+
data.tar.gz: f27164ec0efea4782a452ef0aab36b50147d22946a348b9b36aa36eb0ac24c9b2ae2e63b398b89af9eeee09337dc4d4ca109fe320a3d87ae963bef35f3ed3bdc
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/Capybara.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
rspec-rails supports integration with
|
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
3
|
examples in the applicable directories, which differ slightly between
|
4
4
|
Capybara 1.x and Capybara >= 2.x.
|
data/Changelog.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
### 3.6.0.beta2 / 2016-12-12
|
2
|
+
[Full Changelog](http://github.com/rspec/rspec-rails/compare/v3.6.0.beta1...v3.6.0.beta2)
|
3
|
+
|
4
|
+
Enhancements:
|
5
|
+
|
6
|
+
* Improve failure output of ActiveJob matchers by listing queued jobs.
|
7
|
+
(Wojciech Wnętrzak, #1722)
|
8
|
+
|
1
9
|
### 3.6.0.beta1 / 2016-10-09
|
2
10
|
[Full Changelog](http://github.com/rspec/rspec-rails/compare/v3.5.2...v3.6.0.beta1)
|
3
11
|
|
data/README.md
CHANGED
@@ -62,6 +62,9 @@ bundle exec rspec spec/models
|
|
62
62
|
|
63
63
|
# Run only specs for AccountsController
|
64
64
|
bundle exec rspec spec/controllers/accounts_controller_spec.rb
|
65
|
+
|
66
|
+
# Run only spec on line 8 of AccountsController
|
67
|
+
bundle exec rspec spec/controllers/accounts_controller_spec.rb:8
|
65
68
|
```
|
66
69
|
|
67
70
|
Specs can also be run via `rake spec`, though this command may be slower to
|
@@ -87,6 +90,12 @@ There are three particular `rspec-rails` specific changes to be aware of:
|
|
87
90
|
4. Extraction of `stub_model` and `mock_model` to
|
88
91
|
[`rspec-activemodel-mocks`](https://github.com/rspec/rspec-activemodel-mocks)
|
89
92
|
5. In Rails 5.x, controller testing has been moved to its own gem which is [rails-controller-testing](https://github.com/rails/rails-controller-testing). Using `assigns` in your controller specs without adding this gem will no longer work.
|
93
|
+
6. `rspec-rails` now includes two helpers, `spec_helper.rb` and `rails_helper.rb`.
|
94
|
+
`spec_helper.rb` is the conventional RSpec configuration helper, whilst the
|
95
|
+
Rails specific loading and bootstrapping has moved to the `rails_helper.rb`
|
96
|
+
file. Rails specs now need this file required beforehand either at the top
|
97
|
+
of the specific file (recommended) or a common configuration location such
|
98
|
+
as your `.rspec` file.
|
90
99
|
|
91
100
|
Please see the [RSpec Rails Upgrade
|
92
101
|
docs](https://www.relishapp.com/rspec/rspec-rails/docs/upgrade) for full
|
@@ -318,6 +327,28 @@ end
|
|
318
327
|
For more information, see the [cucumber scenarios for mailer specs
|
319
328
|
](https://relishapp.com/rspec/rspec-rails/v/3-4/docs/mailer-specs).
|
320
329
|
|
330
|
+
## Job specs
|
331
|
+
|
332
|
+
Tagging a context with the metadata `:type => :job` treats its examples as job
|
333
|
+
specs. Typically these specs will live in `spec/jobs`.
|
334
|
+
|
335
|
+
```ruby
|
336
|
+
require 'rails_helper'
|
337
|
+
|
338
|
+
RSpec.describe UploadBackupsJob, :type => :job do
|
339
|
+
describe "#perform_later" do
|
340
|
+
it "uploads a backup" do
|
341
|
+
ActiveJob::Base.queue_adapter = :test
|
342
|
+
UploadBackupsJob.perform_later('backup')
|
343
|
+
expect(UploadBackupsJob).to have_been_enqueued
|
344
|
+
end
|
345
|
+
end
|
346
|
+
end
|
347
|
+
```
|
348
|
+
|
349
|
+
For more information, see the [cucumber scenarios for job specs
|
350
|
+
](https://relishapp.com/rspec/rspec-rails/docs/job-specs).
|
351
|
+
|
321
352
|
## View specs
|
322
353
|
|
323
354
|
View specs default to residing in the `spec/views` folder. Tagging any context
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require "rails_helper"
|
2
2
|
|
3
3
|
<% module_namespacing do -%>
|
4
|
-
RSpec.describe <%=
|
4
|
+
RSpec.describe <%= Rails.version.to_f >= 5.0 ? class_name.sub(/(Mailer)?$/, 'Mailer') : class_name %>, <%= type_metatag(:mailer) %> do
|
5
5
|
<% for action in actions -%>
|
6
6
|
describe "<%= action %>" do
|
7
|
-
let(:mail) { <%=
|
7
|
+
let(:mail) { <%= Rails.version.to_f >= 5.0 ? class_name.sub(/(Mailer)?$/, 'Mailer') : class_name %>.<%= action %> }
|
8
8
|
|
9
9
|
it "renders the headers" do
|
10
10
|
expect(mail.subject).to eq(<%= action.to_s.humanize.inspect %>)
|
@@ -67,7 +67,14 @@ module RSpec
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def failure_message
|
70
|
-
"expected to enqueue #{base_message}"
|
70
|
+
"expected to enqueue #{base_message}".tap do |msg|
|
71
|
+
if @unmatching_jobs.any?
|
72
|
+
msg << "\nQueued jobs:"
|
73
|
+
@unmatching_jobs.each do |job|
|
74
|
+
msg << "\n #{base_job_message(job)}"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
71
78
|
end
|
72
79
|
|
73
80
|
def failure_message_when_negated
|
@@ -89,8 +96,8 @@ module RSpec
|
|
89
96
|
private
|
90
97
|
|
91
98
|
def check(jobs)
|
92
|
-
@
|
93
|
-
if
|
99
|
+
@matching_jobs, @unmatching_jobs = jobs.partition do |job|
|
100
|
+
if arguments_match?(job) && other_attributes_match?(job)
|
94
101
|
args = ::ActiveJob::Arguments.deserialize(job[:args])
|
95
102
|
@block.call(*args)
|
96
103
|
true
|
@@ -98,6 +105,7 @@ module RSpec
|
|
98
105
|
false
|
99
106
|
end
|
100
107
|
end
|
108
|
+
@matching_jobs_count = @matching_jobs.size
|
101
109
|
|
102
110
|
case @expectation_type
|
103
111
|
when :exactly then @expected_number == @matching_jobs_count
|
@@ -115,9 +123,32 @@ module RSpec
|
|
115
123
|
end
|
116
124
|
end
|
117
125
|
|
126
|
+
def base_job_message(job)
|
127
|
+
msg_parts = []
|
128
|
+
msg_parts << "with #{::ActiveJob::Arguments.deserialize(job[:args])}" if job[:args].any?
|
129
|
+
msg_parts << "on queue #{job[:queue]}" if job[:queue]
|
130
|
+
msg_parts << "at #{Time.at(job[:at])}" if job[:at]
|
131
|
+
|
132
|
+
"#{job[:job].class.name} job".tap do |msg|
|
133
|
+
msg << " #{msg_parts.join(', ')}" if msg_parts.any?
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def arguments_match?(job)
|
138
|
+
if @args.any?
|
139
|
+
deserialized_args = ::ActiveJob::Arguments.deserialize(job[:args])
|
140
|
+
RSpec::Mocks::ArgumentListMatcher.new(*@args).args_match?(*deserialized_args)
|
141
|
+
else
|
142
|
+
true
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
def other_attributes_match?(job)
|
147
|
+
serialized_attributes.all? { |key, value| value == job[key] }
|
148
|
+
end
|
149
|
+
|
118
150
|
def serialized_attributes
|
119
151
|
{}.tap do |attributes|
|
120
|
-
attributes[:args] = ::ActiveJob::Arguments.serialize(@args) if @args.any?
|
121
152
|
attributes[:at] = @at.to_f if @at
|
122
153
|
attributes[:queue] = @queue if @queue
|
123
154
|
attributes[:job] = @job if @job
|
data/lib/rspec/rails/version.rb
CHANGED
@@ -61,6 +61,20 @@ module RSpec
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
+
# @private
|
65
|
+
class LogSubscriber < ::ActiveSupport::LogSubscriber
|
66
|
+
def current_example_group
|
67
|
+
RSpec.current_example.example_group
|
68
|
+
end
|
69
|
+
|
70
|
+
def render_template(_event)
|
71
|
+
return if current_example_group.render_views?
|
72
|
+
info(" Template rendering was prevented by rspec-rails. Use `render_views` to verify rendered view contents if necessary.")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
LogSubscriber.attach_to(:action_view)
|
77
|
+
|
64
78
|
# Delegates all methods to the submitted resolver and for all methods
|
65
79
|
# that return a collection of `ActionView::Template` instances, return
|
66
80
|
# templates with modified source
|
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: 3.6.0.
|
4
|
+
version: 3.6.0.beta2
|
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: 2016-
|
47
|
+
date: 2016-12-12 00:00:00.000000000 Z
|
48
48
|
dependencies:
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: activesupport
|
@@ -94,56 +94,56 @@ dependencies:
|
|
94
94
|
requirements:
|
95
95
|
- - '='
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: 3.6.0.
|
97
|
+
version: 3.6.0.beta2
|
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.6.0.
|
104
|
+
version: 3.6.0.beta2
|
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.6.0.
|
111
|
+
version: 3.6.0.beta2
|
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.6.0.
|
118
|
+
version: 3.6.0.beta2
|
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.6.0.
|
125
|
+
version: 3.6.0.beta2
|
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.6.0.
|
132
|
+
version: 3.6.0.beta2
|
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.6.0.
|
139
|
+
version: 3.6.0.beta2
|
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.6.0.
|
146
|
+
version: 3.6.0.beta2
|
147
147
|
- !ruby/object:Gem::Dependency
|
148
148
|
name: cucumber
|
149
149
|
requirement: !ruby/object:Gem::Requirement
|
@@ -292,7 +292,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
292
292
|
version: 1.3.1
|
293
293
|
requirements: []
|
294
294
|
rubyforge_project:
|
295
|
-
rubygems_version: 2.
|
295
|
+
rubygems_version: 2.5.1
|
296
296
|
signing_key:
|
297
297
|
specification_version: 4
|
298
298
|
summary: RSpec for Rails
|
metadata.gz.sig
CHANGED
Binary file
|