rspec-sidekiq 5.1.0 → 5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 56ce84afbf67491fa24da1f527bced61c54afa3d62dbb50e6a09a89e8c0bc16c
4
- data.tar.gz: 5b4a368bbb098d580713009fb9381d66326c37eced31c91eaf85b43158a85db5
3
+ metadata.gz: 47fe73bb71c8962a243f7128bffe68ce0ec5a4c644f1e1bb597723980af806b0
4
+ data.tar.gz: 0fdfbac81db581526c48fb58741e56eaee011507235538df4a48a66584477c74
5
5
  SHA512:
6
- metadata.gz: 4ec18b3d6ceff7390807d7358259b44f236ca6d81b1b9175c069b6c4912041b914082042a5396c7cf1eb0b602a5448d9aacd9e23b3cee211ad7222c3ec3719af
7
- data.tar.gz: 4f0232e7b482f7c565a5cca98be9b7143e51adbe6015329f9d052e393fd857fe97e2449fb53f9e3d209ff6319c54e23e9e2919e7003a44bfc00834692039eed0
6
+ metadata.gz: 01a72c5aa64da2033f4efc53000fd52241d120d8c761dd095272b6111807d99ae50746428c5a222c670a8ff573b39a911faeb1a0b3e21b93bfedaa8068f60ec6
7
+ data.tar.gz: 6d052d8dd15a05a002cbc30a26e81aa61621cc9c8e8ec1789e4b6fdb7174cb74727c81baf9cdbf1727eed951f18b65397718800f90d5adfc067dc5a6d803844f
data/CHANGES.md CHANGED
@@ -1,5 +1,14 @@
1
1
  Unreleased
2
2
  ---
3
+
4
+ 5.2.0
5
+ ---
6
+ * Add `never` matcher for aliasing `exactly(0)` (#256)
7
+ * Fix BeProcessedIn matcher behavior for Rails 8 (#237)
8
+ * Fix `exactly(0)` to not fail when nothing is enqueued (#238)
9
+
10
+ 5.1.0
11
+ ---
3
12
  * Add `until` matcher for Sidekiq Enterprise unique jobs (#232, #147)
4
13
  * Add `with_context` matcher for matching against job contexts (#222)
5
14
  * Support for Sidekiq 8 (#233)
data/README.md CHANGED
@@ -70,6 +70,9 @@ end
70
70
 
71
71
  # A specific number of times
72
72
 
73
+ expect { AwesomeJob.perform_async }.to enqueue_sidekiq_job.never
74
+ expect { AwesomeJob.perform_async }.to enqueue_sidekiq_job.exactly(0)
75
+ expect { AwesomeJob.perform_async }.to enqueue_sidekiq_job.exactly(0).time
73
76
  expect { AwesomeJob.perform_async }.to enqueue_sidekiq_job.once
74
77
  expect { AwesomeJob.perform_async }.to enqueue_sidekiq_job.exactly(1).time
75
78
  expect { AwesomeJob.perform_async }.to enqueue_sidekiq_job.exactly(:once)
@@ -384,26 +387,31 @@ FooClass.within_sidekiq_retries_exhausted_block {
384
387
 
385
388
  ## Testing
386
389
  ```
387
- bundle exec rspec spec
390
+ bundle exec rspec
388
391
  ```
389
392
 
390
393
  ## Maintainers
391
- * @wspurgin
394
+ * [@wspurgin]
395
+ * [@ydah]
392
396
 
393
397
  ### Alumni
394
398
 
395
- * @packrat386
396
- * @philostler
399
+ * [@packrat386]
400
+ * [@philostler]
397
401
 
398
402
  ## Contribute
399
403
  Please do! If there's a feature missing that you'd love to see then get in on the action!
400
404
 
401
405
  Issues/Pull Requests/Comments all welcome...
402
406
 
403
- [github]: http://github.com/wspurgin/rspec-sidekiq
404
407
  [github_actions]: https://github.com/wspurgin/rspec-sidekiq/actions
405
408
  [github_actions_badge]: https://github.com/wspurgin/rspec-sidekiq/actions/workflows/main.yml/badge.svg
406
409
 
407
410
  [rspec_sidekiq_wiki_faq_&_troubleshooting]: https://github.com/wspurgin/rspec-sidekiq/wiki/FAQ-&-Troubleshooting
408
411
  [sidekiq_wiki_batches]: https://github.com/sidekiq/sidekiq/wiki/Batches
409
412
  [sidekiq_wiki_delayed_extensions]: https://github.com/sidekiq/sidekiq/wiki/Delayed-Extensions
413
+
414
+ [@wspurgin]: https://github.com/wspurgin
415
+ [@ydah]: https://github.com/ydah
416
+ [@packrat386]: https://github.com/packrat386
417
+ [@philostler]: https://github.com/philostler
@@ -14,7 +14,7 @@ if defined? Sidekiq::Batch
14
14
 
15
15
  ##
16
16
  # Sidekiq::Batch is a Sidekiq::Pro feature. However the general consensus is
17
- # that, by defeault, you can't test without redis. RSpec::Sidekiq includes
17
+ # that, by default, you can't test without redis. RSpec::Sidekiq includes
18
18
  # a "null object" pattern implementation to mock Batches. This will mock
19
19
  # Sidekiq::Batch and prevent it from using Redis.
20
20
  #
@@ -97,8 +97,8 @@ if defined? Sidekiq::Batch
97
97
  if mocked_with_mocha?
98
98
  Sidekiq::Batch.stubs(:new) { RSpec::Sidekiq::NullBatch.new }
99
99
  else
100
- allow(Sidekiq::Batch).to receive(:new) { RSpec::Sidekiq::NullBatch.new }
101
- allow(Sidekiq::Batch::Status).to receive(:new) { RSpec::Sidekiq::NullStatus.new }
100
+ allow(Sidekiq::Batch).to receive(:new) { RSpec::Sidekiq::NullBatch.new }
101
+ allow(Sidekiq::Batch::Status).to receive(:new) { RSpec::Sidekiq::NullStatus.new }
102
102
  end
103
103
  end
104
104
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'rspec/core'
4
- require 'rspec/sidekiq/helpers/within_sidekiq_retries_exhausted_block'
4
+ require_relative 'helpers/within_sidekiq_retries_exhausted_block'
@@ -144,7 +144,7 @@ module RSpec
144
144
  end
145
145
 
146
146
  def minus!(other)
147
- self unless other.is_a?(EnqueuedJobs)
147
+ return self unless other.is_a?(EnqueuedJobs)
148
148
 
149
149
  @jobs -= other.jobs
150
150
 
@@ -214,6 +214,11 @@ module RSpec
214
214
  self
215
215
  end
216
216
 
217
+ def never
218
+ set_expected_count :exactly, 0
219
+ self
220
+ end
221
+
217
222
  def once
218
223
  set_expected_count :exactly, 1
219
224
  self
@@ -32,4 +32,4 @@ module RSpec
32
32
  end
33
33
  end
34
34
  end
35
- end
35
+ end
@@ -25,10 +25,10 @@ module RSpec
25
25
 
26
26
  def failure_message
27
27
  if !interval_matches? && @expected_interval
28
- "expected #{@klass} to be unique for #{@expected_interval} seconds, "\
28
+ "expected #{@klass} to be unique for #{@expected_interval} seconds, " \
29
29
  "but its interval was #{actual_interval} seconds"
30
30
  elsif !expiration_matches?
31
- "expected #{@klass} to be unique until #{@expected_expiration}, "\
31
+ "expected #{@klass} to be unique until #{@expected_expiration}, " \
32
32
  "but its unique_until was #{actual_expiration || 'not specified'}"
33
33
  else
34
34
  "expected #{@klass} to be unique in the queue"
@@ -38,7 +38,7 @@ module RSpec
38
38
  def matches?(job)
39
39
  @klass = job.is_a?(Class) ? job : job.class
40
40
  @actual = @klass.get_sidekiq_options[unique_key]
41
- !!(value_matches? && interval_matches? && expiration_matches?)
41
+ value_matches? && interval_matches? && expiration_matches?
42
42
  end
43
43
 
44
44
  def for(interval)
@@ -60,7 +60,7 @@ module RSpec
60
60
  end
61
61
 
62
62
  def expiration_matches?
63
- @expected_expiration.nil? || actual_expiration == @expected_expiration
63
+ @expected_expiration.nil? || actual_expiration == @expected_expiration
64
64
  end
65
65
 
66
66
  def failure_message_when_negated
@@ -96,7 +96,11 @@ module RSpec
96
96
  end
97
97
 
98
98
  def value_matches?
99
- @actual && @actual > 0
99
+ unless @actual
100
+ false
101
+ else
102
+ @actual > 0
103
+ end
100
104
  end
101
105
 
102
106
  def unique_key
@@ -25,10 +25,6 @@ module RSpec
25
25
  proc.call
26
26
  @actual_jobs = EnqueuedJobs.new(@klass).minus!(original_jobs)
27
27
 
28
- if @actual_jobs.none?
29
- return false
30
- end
31
-
32
28
  @actual_jobs.includes?(expected_arguments, expected_options, expected_count)
33
29
  end
34
30
 
@@ -5,15 +5,15 @@ require "rspec/matchers"
5
5
  require "rspec/mocks/argument_list_matcher"
6
6
  require "rspec/mocks/argument_matchers"
7
7
 
8
- require "rspec/sidekiq/matchers/base"
9
- require "rspec/sidekiq/matchers/be_delayed"
10
- require "rspec/sidekiq/matchers/be_expired_in"
11
- require "rspec/sidekiq/matchers/be_processed_in"
12
- require "rspec/sidekiq/matchers/be_retryable"
13
- require "rspec/sidekiq/matchers/be_unique"
14
- require "rspec/sidekiq/matchers/have_enqueued_sidekiq_job"
15
- require "rspec/sidekiq/matchers/save_backtrace"
16
- require "rspec/sidekiq/matchers/enqueue_sidekiq_job"
8
+ require_relative "matchers/base"
9
+ require_relative "matchers/be_delayed"
10
+ require_relative "matchers/be_expired_in"
11
+ require_relative "matchers/be_processed_in"
12
+ require_relative "matchers/be_retryable"
13
+ require_relative "matchers/be_unique"
14
+ require_relative "matchers/have_enqueued_sidekiq_job"
15
+ require_relative "matchers/save_backtrace"
16
+ require_relative "matchers/enqueue_sidekiq_job"
17
17
 
18
18
  RSpec.configure do |config|
19
19
  config.include RSpec::Sidekiq::Matchers
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module Sidekiq
5
- VERSION = "5.1.0"
5
+ VERSION = "5.2.0"
6
6
  end
7
7
  end
data/lib/rspec-sidekiq.rb CHANGED
@@ -5,8 +5,8 @@ require 'forwardable'
5
5
  require 'sidekiq'
6
6
  require 'sidekiq/testing'
7
7
 
8
- require 'rspec/sidekiq/batch'
9
- require 'rspec/sidekiq/configuration'
10
- require 'rspec/sidekiq/helpers'
11
- require 'rspec/sidekiq/matchers'
12
- require 'rspec/sidekiq/sidekiq'
8
+ require_relative 'rspec/sidekiq/batch'
9
+ require_relative 'rspec/sidekiq/configuration'
10
+ require_relative 'rspec/sidekiq/helpers'
11
+ require_relative 'rspec/sidekiq/matchers'
12
+ require_relative 'rspec/sidekiq/sidekiq'
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: 5.1.0
4
+ version: 5.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: 2025-03-07 00:00:00.000000000 Z
13
+ date: 2025-07-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec-core
@@ -27,7 +27,7 @@ dependencies:
27
27
  - !ruby/object:Gem::Version
28
28
  version: '3.0'
29
29
  - !ruby/object:Gem::Dependency
30
- name: rspec-mocks
30
+ name: rspec-expectations
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - "~>"
@@ -41,7 +41,7 @@ dependencies:
41
41
  - !ruby/object:Gem::Version
42
42
  version: '3.0'
43
43
  - !ruby/object:Gem::Dependency
44
- name: rspec-expectations
44
+ name: rspec-mocks
45
45
  requirement: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
@@ -75,49 +75,7 @@ dependencies:
75
75
  - !ruby/object:Gem::Version
76
76
  version: '9'
77
77
  - !ruby/object:Gem::Dependency
78
- name: pry
79
- requirement: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: '0'
84
- type: :development
85
- prerelease: false
86
- version_requirements: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: '0'
91
- - !ruby/object:Gem::Dependency
92
- name: pry-doc
93
- requirement: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- version: '0'
98
- type: :development
99
- prerelease: false
100
- version_requirements: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- version: '0'
105
- - !ruby/object:Gem::Dependency
106
- name: pry-nav
107
- requirement: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: '0'
112
- type: :development
113
- prerelease: false
114
- version_requirements: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: '0'
119
- - !ruby/object:Gem::Dependency
120
- name: rspec
78
+ name: actionmailer
121
79
  requirement: !ruby/object:Gem::Requirement
122
80
  requirements:
123
81
  - - ">="
@@ -131,7 +89,7 @@ dependencies:
131
89
  - !ruby/object:Gem::Version
132
90
  version: '0'
133
91
  - !ruby/object:Gem::Dependency
134
- name: coveralls
92
+ name: activejob
135
93
  requirement: !ruby/object:Gem::Requirement
136
94
  requirements:
137
95
  - - ">="
@@ -145,7 +103,7 @@ dependencies:
145
103
  - !ruby/object:Gem::Version
146
104
  version: '0'
147
105
  - !ruby/object:Gem::Dependency
148
- name: fuubar
106
+ name: activemodel
149
107
  requirement: !ruby/object:Gem::Requirement
150
108
  requirements:
151
109
  - - ">="
@@ -159,7 +117,7 @@ dependencies:
159
117
  - !ruby/object:Gem::Version
160
118
  version: '0'
161
119
  - !ruby/object:Gem::Dependency
162
- name: activejob
120
+ name: activerecord
163
121
  requirement: !ruby/object:Gem::Requirement
164
122
  requirements:
165
123
  - - ">="
@@ -173,7 +131,7 @@ dependencies:
173
131
  - !ruby/object:Gem::Version
174
132
  version: '0'
175
133
  - !ruby/object:Gem::Dependency
176
- name: actionmailer
134
+ name: activesupport
177
135
  requirement: !ruby/object:Gem::Requirement
178
136
  requirements:
179
137
  - - ">="
@@ -187,7 +145,7 @@ dependencies:
187
145
  - !ruby/object:Gem::Version
188
146
  version: '0'
189
147
  - !ruby/object:Gem::Dependency
190
- name: activerecord
148
+ name: debug
191
149
  requirement: !ruby/object:Gem::Requirement
192
150
  requirements:
193
151
  - - ">="
@@ -201,7 +159,7 @@ dependencies:
201
159
  - !ruby/object:Gem::Version
202
160
  version: '0'
203
161
  - !ruby/object:Gem::Dependency
204
- name: activemodel
162
+ name: ostruct
205
163
  requirement: !ruby/object:Gem::Requirement
206
164
  requirements:
207
165
  - - ">="
@@ -215,7 +173,7 @@ dependencies:
215
173
  - !ruby/object:Gem::Version
216
174
  version: '0'
217
175
  - !ruby/object:Gem::Dependency
218
- name: activesupport
176
+ name: railties
219
177
  requirement: !ruby/object:Gem::Requirement
220
178
  requirements:
221
179
  - - ">="
@@ -229,7 +187,7 @@ dependencies:
229
187
  - !ruby/object:Gem::Version
230
188
  version: '0'
231
189
  - !ruby/object:Gem::Dependency
232
- name: railties
190
+ name: rspec
233
191
  requirement: !ruby/object:Gem::Requirement
234
192
  requirements:
235
193
  - - ">="
@@ -272,7 +230,10 @@ homepage: http://github.com/wspurgin/rspec-sidekiq
272
230
  licenses:
273
231
  - MIT
274
232
  metadata:
275
- changelog_uri: https://github.com/wspurgin/rspec-sidekiq/blob/main/CHANGES.md
233
+ homepage_uri: http://github.com/wspurgin/rspec-sidekiq
234
+ source_code_uri: http://github.com/wspurgin/rspec-sidekiq
235
+ changelog_uri: http://github.com/wspurgin/rspec-sidekiq/blob/main/CHANGES.md
236
+ bug_tracker_uri: http://github.com/wspurgin/rspec-sidekiq/issues
276
237
  post_install_message:
277
238
  rdoc_options: []
278
239
  require_paths: