rspec-sidekiq 4.0.2 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.md +14 -0
- data/README.md +19 -3
- data/lib/rspec/sidekiq/configuration.rb +10 -0
- data/lib/rspec/sidekiq/matchers/base.rb +7 -1
- data/lib/rspec/sidekiq/matchers/enqueue_sidekiq_job.rb +13 -1
- data/lib/rspec/sidekiq/matchers/have_enqueued_sidekiq_job.rb +10 -1
- data/lib/rspec/sidekiq/matchers.rb +1 -0
- data/lib/rspec/sidekiq/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 545725855a34595908bcd584dfcee30045ad1519fbd8295bf5fbf6aed7fdd254
|
4
|
+
data.tar.gz: 26905978185b4e101e0f3d40b2318c0c47143d92a4a762286e5951be92942824
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f9c854985b82b12fdcd32fa0a3ec68185e1ad22ebc554f3f1e7a4b0d29d1c399706e31eef4155de6805fe61628c670a91634386eb05cf9de6762693369f3276
|
7
|
+
data.tar.gz: a0033e0cd3b6a6e03f5042dd04931393e87806adca9f7e78cd3bf034c2018cf89da309826e78e7a067e5a5950e86ff3aef79a2e55bb6ede116a37392000123fa
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
Unreleased
|
2
|
+
---
|
3
|
+
|
4
|
+
4.2.0
|
5
|
+
---
|
6
|
+
* Add warning about `have_enqueued_sidekiq_job` with no arguments (default will
|
7
|
+
change in next major release) (#216, #217)
|
8
|
+
|
9
|
+
4.1.0
|
10
|
+
---
|
11
|
+
* Add Composable support to `enqueue_sidekiq_job` and
|
12
|
+
`have_enqueued_sidekiq_job` (#211)
|
13
|
+
* Add `immediately` to specify that a job should be enqueued without any delay (#210)
|
14
|
+
|
1
15
|
4.0.2
|
2
16
|
---
|
3
17
|
* Explicitly require forwardable (#204)
|
data/README.md
CHANGED
@@ -75,11 +75,17 @@ expect { AwesomeJob.perform_at(specific_time, "Awesome!") }.to(
|
|
75
75
|
.on("default")
|
76
76
|
.at(specific_time)
|
77
77
|
)
|
78
|
+
|
79
|
+
# Also composable
|
80
|
+
expect do
|
81
|
+
AwesomeJob.perform_async
|
82
|
+
OtherJob.perform_async
|
83
|
+
end.to enqueue_sidekiq_job(AwesomeJob).and enqueue_sidekiq_job(OtherJob)
|
78
84
|
```
|
79
85
|
|
80
86
|
### have_enqueued_sidekiq_job
|
81
|
-
|
82
|
-
arguments
|
87
|
+
|
88
|
+
Describes that there should be an enqueued job with the **specified arguments**
|
83
89
|
|
84
90
|
```ruby
|
85
91
|
AwesomeJob.perform_async 'Awesome', true
|
@@ -95,11 +101,14 @@ AwesomeJob.perform_async({"something" => "Awesome", "extra" => "stuff"})
|
|
95
101
|
expect(AwesomeJob).to have_enqueued_sidekiq_job(hash_including("something" => "Awesome"))
|
96
102
|
expect(AwesomeJob).to have_enqueued_sidekiq_job(any_args)
|
97
103
|
expect(AwesomeJob).to have_enqueued_sidekiq_job(hash_excluding("bad_stuff" => anything))
|
104
|
+
|
105
|
+
# composable as well
|
106
|
+
expect(AwesomeJob).to have_enqueued_sidekiq_job(any_args).and have_enqueued_sidekiq_job(hash_including("something" => "Awesome"))
|
98
107
|
```
|
99
108
|
|
100
109
|
#### Testing scheduled jobs
|
101
110
|
|
102
|
-
*Use chainable matchers `#at` and `#
|
111
|
+
*Use chainable matchers `#at`, `#in` and `#immediately`*
|
103
112
|
|
104
113
|
```ruby
|
105
114
|
time = 5.minutes.from_now
|
@@ -113,6 +122,13 @@ AwesomeJob.perform_in 5.minutes, 'Awesome', true
|
|
113
122
|
expect(AwesomeJob).to have_enqueued_sidekiq_job('Awesome', true).in(5.minutes)
|
114
123
|
```
|
115
124
|
|
125
|
+
```ruby
|
126
|
+
# Job scheduled for a date in the past are enqueued immediately.
|
127
|
+
AwesomeJob.perform_later 5.minutes.ago, 'Awesome', true # equivalent to: AwesomeJob.perform_async 'Awesome', true
|
128
|
+
# test with...
|
129
|
+
expect(AwesomeJob).to have_enqueued_sidekiq_job('Awesome', true).immediately
|
130
|
+
```
|
131
|
+
|
116
132
|
#### Testing queue set for job
|
117
133
|
|
118
134
|
Use the chainable `#on` matcher
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require "rubygems"
|
2
|
+
require "set"
|
2
3
|
|
3
4
|
module RSpec
|
4
5
|
module Sidekiq
|
@@ -14,11 +15,20 @@ module RSpec
|
|
14
15
|
# Functional settings defaults
|
15
16
|
@clear_all_enqueued_jobs = true
|
16
17
|
@warn_when_jobs_not_processed_by_sidekiq = true
|
18
|
+
@silence_warnings = Set.new
|
17
19
|
end
|
18
20
|
|
19
21
|
def sidekiq_gte_7?
|
20
22
|
Gem::Version.new(::Sidekiq::VERSION) >= Gem::Version.new("7.0.0")
|
21
23
|
end
|
24
|
+
|
25
|
+
def silence_warning(symbol)
|
26
|
+
@silence_warnings << symbol
|
27
|
+
end
|
28
|
+
|
29
|
+
def warn_for?(symbol)
|
30
|
+
!@silence_warnings.include?(symbol)
|
31
|
+
end
|
22
32
|
end
|
23
33
|
end
|
24
34
|
end
|
@@ -16,7 +16,7 @@ module RSpec
|
|
16
16
|
private
|
17
17
|
|
18
18
|
def at_evaluator(value)
|
19
|
-
return
|
19
|
+
return value.nil? if job["at"].to_s.empty?
|
20
20
|
value == Time.at(job["at"]).to_i
|
21
21
|
end
|
22
22
|
|
@@ -162,6 +162,7 @@ module RSpec
|
|
162
162
|
# @api private
|
163
163
|
class Base
|
164
164
|
include RSpec::Mocks::ArgumentMatchers
|
165
|
+
include RSpec::Matchers::Composable
|
165
166
|
|
166
167
|
attr_reader :expected_arguments, :expected_options, :klass, :actual_jobs
|
167
168
|
|
@@ -185,6 +186,11 @@ module RSpec
|
|
185
186
|
self
|
186
187
|
end
|
187
188
|
|
189
|
+
def immediately
|
190
|
+
@expected_options["at"] = nil
|
191
|
+
self
|
192
|
+
end
|
193
|
+
|
188
194
|
def on(queue)
|
189
195
|
@expected_options["queue"] = queue
|
190
196
|
self
|
@@ -56,7 +56,8 @@ module RSpec
|
|
56
56
|
#
|
57
57
|
# Passes if a Job is enqueued as the result of a block. Chainable `with`
|
58
58
|
# for arguments, `on` for queue, `at` for queued for a specific time, and
|
59
|
-
# `in` for a specific interval delay to being queued
|
59
|
+
# `in` for a specific interval delay to being queued, `immediately` for
|
60
|
+
# queued without delay.
|
60
61
|
#
|
61
62
|
# @example
|
62
63
|
#
|
@@ -79,6 +80,17 @@ module RSpec
|
|
79
80
|
# freeze_time do
|
80
81
|
# expect { AwesomeJob.perform_in(1.hour) }.to enqueue_sidekiq_job.in(1.hour)
|
81
82
|
# end
|
83
|
+
#
|
84
|
+
# # Without any delay
|
85
|
+
# expect { AwesomeJob.perform_async }.to enqueue_sidekiq_job.immediately
|
86
|
+
# expect { AwesomeJob.perform_at(1.hour.ago) }.to enqueue_sidekiq_job.immediately
|
87
|
+
#
|
88
|
+
# ## Composable
|
89
|
+
#
|
90
|
+
# expect do
|
91
|
+
# AwesomeJob.perform_async
|
92
|
+
# OtherJob.perform_async
|
93
|
+
# end.to enqueue_sidekiq_job(AwesomeJob).and enqueue_sidekiq_job(OtherJob)
|
82
94
|
def enqueue_sidekiq_job(job_class = nil)
|
83
95
|
EnqueueSidekiqJob.new(job_class)
|
84
96
|
end
|
@@ -7,8 +7,18 @@ module RSpec
|
|
7
7
|
|
8
8
|
# @api private
|
9
9
|
class HaveEnqueuedSidekiqJob < Base
|
10
|
+
DEPRECATION = [
|
11
|
+
"[WARNING] `have_enqueued_sidekiq_job()` without arguments default behavior will change in next major release.",
|
12
|
+
"Use `have_enqueued_sidekiq_job(no_args)` to maintain legacy behavior.",
|
13
|
+
"More available here: https://github.com/wspurgin/rspec-sidekiq/wiki/have_enqueued_sidekiq_job-without-argument-default-behavior"
|
14
|
+
].join(" ").freeze
|
15
|
+
|
10
16
|
def initialize(expected_arguments)
|
11
17
|
super()
|
18
|
+
|
19
|
+
if expected_arguments == [] && RSpec::Sidekiq.configuration.warn_for?(:have_enqueued_sidekiq_job_default)
|
20
|
+
Kernel.warn(DEPRECATION, uplevel: 3)
|
21
|
+
end
|
12
22
|
@expected_arguments = normalize_arguments(expected_arguments)
|
13
23
|
end
|
14
24
|
|
@@ -16,7 +26,6 @@ module RSpec
|
|
16
26
|
@klass = job_class
|
17
27
|
|
18
28
|
@actual_jobs = EnqueuedJobs.new(klass)
|
19
|
-
|
20
29
|
actual_jobs.includes?(expected_arguments, expected_options)
|
21
30
|
end
|
22
31
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-sidekiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0
|
4
|
+
version: 4.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aidan Coyle
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2024-04-16 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec-core
|
@@ -266,7 +266,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
266
266
|
requirements:
|
267
267
|
- - ">="
|
268
268
|
- !ruby/object:Gem::Version
|
269
|
-
version: '
|
269
|
+
version: '2.7'
|
270
270
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
271
271
|
requirements:
|
272
272
|
- - ">="
|