rspec-sidekiq 4.0.2 → 4.2.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
- 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
|
- - ">="
|