rspec-sidekiq 3.1.0 → 4.0.1

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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +24 -0
  3. data/LICENSE +12 -0
  4. data/README.md +198 -81
  5. data/lib/rspec/sidekiq/batch.rb +20 -2
  6. data/lib/rspec/sidekiq/configuration.rb +13 -2
  7. data/lib/rspec/sidekiq/matchers/base.rb +256 -0
  8. data/lib/rspec/sidekiq/matchers/be_delayed.rb +17 -3
  9. data/lib/rspec/sidekiq/matchers/enqueue_sidekiq_job.rb +87 -0
  10. data/lib/rspec/sidekiq/matchers/have_enqueued_sidekiq_job.rb +25 -0
  11. data/lib/rspec/sidekiq/matchers.rb +13 -8
  12. data/lib/rspec/sidekiq/sidekiq.rb +1 -1
  13. data/lib/rspec/sidekiq/version.rb +1 -1
  14. metadata +89 -39
  15. data/.gitattributes +0 -22
  16. data/.gitignore +0 -2
  17. data/.rspec +0 -4
  18. data/.simplecov +0 -5
  19. data/Gemfile +0 -9
  20. data/lib/rspec/sidekiq/matchers/have_enqueued_job.rb +0 -183
  21. data/rspec-sidekiq.gemspec +0 -39
  22. data/spec/rspec/sidekiq/batch_spec.rb +0 -83
  23. data/spec/rspec/sidekiq/helpers/retries_exhausted_spec.rb +0 -40
  24. data/spec/rspec/sidekiq/matchers/be_delayed_spec.rb +0 -238
  25. data/spec/rspec/sidekiq/matchers/be_expired_in_spec.rb +0 -57
  26. data/spec/rspec/sidekiq/matchers/be_processed_in_spec.rb +0 -114
  27. data/spec/rspec/sidekiq/matchers/be_retryable_spec.rb +0 -129
  28. data/spec/rspec/sidekiq/matchers/be_unique_spec.rb +0 -115
  29. data/spec/rspec/sidekiq/matchers/have_enqueued_job_spec.rb +0 -229
  30. data/spec/rspec/sidekiq/matchers/save_backtrace_spec.rb +0 -136
  31. data/spec/rspec/sidekiq/sidekiq_spec.rb +0 -15
  32. data/spec/spec_helper.rb +0 -29
  33. data/spec/support/factories.rb +0 -33
  34. data/spec/support/init.rb +0 -6
  35. data/spec/support/test_action_mailer.rb +0 -6
  36. data/spec/support/test_job.rb +0 -6
  37. data/spec/support/test_resource.rb +0 -10
  38. data/spec/support/test_worker.rb +0 -8
  39. data/spec/support/test_worker_alternative.rb +0 -8
@@ -0,0 +1,256 @@
1
+ module RSpec
2
+ module Sidekiq
3
+ module Matchers
4
+ # @api private
5
+ class JobOptionParser
6
+ attr_reader :job
7
+
8
+ def initialize(job)
9
+ @job = job
10
+ end
11
+
12
+ def matches?(options)
13
+ with_context(**options)
14
+ end
15
+
16
+ private
17
+
18
+ def at_evaluator(value)
19
+ return false if job["at"].to_s.empty?
20
+ value == Time.at(job["at"]).to_i
21
+ end
22
+
23
+ def with_context(**expected_context)
24
+ expected_context.all? do |key, value|
25
+ if key == "at"
26
+ # send to custom evaluator
27
+ at_evaluator(value)
28
+ else
29
+ job.context.has_key?(key) && job.context[key] == value
30
+ end
31
+ end
32
+ end
33
+ end
34
+
35
+ # @api private
36
+ class JobArguments
37
+ include RSpec::Mocks::ArgumentMatchers
38
+
39
+ def initialize(job)
40
+ self.job = job
41
+ end
42
+ attr_accessor :job
43
+
44
+ def matches?(expected_args)
45
+ matcher = RSpec::Mocks::ArgumentListMatcher.new(*expected_args)
46
+
47
+ matcher.args_match?(*unwrapped_arguments)
48
+ end
49
+
50
+ def unwrapped_arguments
51
+ args = job["args"]
52
+
53
+ return deserialized_active_job_args if active_job?
54
+
55
+ args
56
+ end
57
+
58
+ private
59
+
60
+ def active_job?
61
+ job["class"] == "ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper"
62
+ end
63
+
64
+ def deserialized_active_job_args
65
+ active_job_args = ActiveJob::Arguments.deserialize(active_job_original_args)
66
+
67
+ # ActiveJob 7 (aj7) changed deserialization structure, adding passed arguments
68
+ # in an aj-specific hash under the :args key
69
+ aj7_args_hash = active_job_args.detect { |arg| arg.respond_to?(:key) && arg.key?(:args) }
70
+
71
+ return active_job_args if aj7_args_hash.nil?
72
+
73
+ active_job_args.delete(aj7_args_hash)
74
+ active_job_args.concat(aj7_args_hash[:args])
75
+ end
76
+
77
+ def active_job_original_args
78
+ active_job_args = job["args"].detect { |arg| arg.is_a?(Hash) && arg.key?("arguments") }
79
+ active_job_args ||= {}
80
+ active_job_args["arguments"] || []
81
+ end
82
+ end
83
+
84
+ class EnqueuedJob
85
+ extend Forwardable
86
+ attr_reader :job
87
+ delegate :[] => :@job
88
+
89
+ def initialize(job)
90
+ @job = job
91
+ end
92
+
93
+ def jid
94
+ job["jid"]
95
+ end
96
+
97
+ def args
98
+ @args ||= JobArguments.new(job).unwrapped_arguments
99
+ end
100
+
101
+ def context
102
+ @context ||= job.except("args")
103
+ end
104
+
105
+ def ==(other)
106
+ super(other) unless other.is_a?(EnqueuedJob)
107
+
108
+ jid == other.jid
109
+ end
110
+ alias_method :eql?, :==
111
+ end
112
+
113
+ class EnqueuedJobs
114
+ include Enumerable
115
+ attr_reader :jobs
116
+
117
+ def initialize(klass)
118
+ @jobs = unwrap_jobs(klass.jobs).map { |job| EnqueuedJob.new(job) }
119
+ end
120
+
121
+ def includes?(arguments, options)
122
+ !!jobs.find { |job| matches?(job, arguments, options) }
123
+ end
124
+
125
+ def each(&block)
126
+ jobs.each(&block)
127
+ end
128
+
129
+ def minus!(other)
130
+ self unless other.is_a?(EnqueuedJobs)
131
+
132
+ @jobs -= other.jobs
133
+
134
+ self
135
+ end
136
+
137
+ private
138
+
139
+ def matches?(job, arguments, options)
140
+ arguments_matches?(job, arguments) &&
141
+ options_matches?(job, options)
142
+ end
143
+
144
+ def arguments_matches?(job, arguments)
145
+ job_arguments = JobArguments.new(job)
146
+
147
+ job_arguments.matches?(arguments)
148
+ end
149
+
150
+ def options_matches?(job, options)
151
+ parser = JobOptionParser.new(job)
152
+
153
+ parser.matches?(options)
154
+ end
155
+
156
+ def unwrap_jobs(jobs)
157
+ return jobs if jobs.is_a?(Array)
158
+ jobs.values.flatten
159
+ end
160
+ end
161
+
162
+ # @api private
163
+ class Base
164
+ include RSpec::Mocks::ArgumentMatchers
165
+
166
+ attr_reader :expected_arguments, :expected_options, :klass, :actual_jobs
167
+
168
+ def initialize
169
+ @expected_arguments = [any_args]
170
+ @expected_options = {}
171
+ end
172
+
173
+ def with(*expected_arguments)
174
+ @expected_arguments = normalize_arguments(expected_arguments)
175
+ self
176
+ end
177
+
178
+ def at(timestamp)
179
+ @expected_options["at"] = timestamp.to_time.to_i
180
+ self
181
+ end
182
+
183
+ def in(interval)
184
+ @expected_options["at"] = (Time.now.to_f + interval.to_f).to_i
185
+ self
186
+ end
187
+
188
+ def on(queue)
189
+ @expected_options["queue"] = queue
190
+ self
191
+ end
192
+
193
+ def description
194
+ "have an enqueued #{klass} job with arguments #{expected_arguments}"
195
+ end
196
+
197
+ def failure_message
198
+ message = ["expected to have an enqueued #{klass} job"]
199
+ if expected_arguments
200
+ message << " with arguments:"
201
+ message << " -#{formatted(expected_arguments)}"
202
+ end
203
+
204
+ if expected_options.any?
205
+ message << " with context:"
206
+ message << " -#{formatted(expected_options)}"
207
+ end
208
+
209
+ if actual_jobs.any?
210
+ message << "but have enqueued only jobs"
211
+ if expected_arguments
212
+ job_messages = actual_jobs.map do |job|
213
+ base = " -JID:#{job.jid} with arguments:"
214
+ base << "\n -#{formatted(job.args)}"
215
+ if expected_options.any?
216
+ base << "\n with context: #{formatted(job.context)}"
217
+ end
218
+
219
+ base
220
+ end
221
+
222
+ message << job_messages.join("\n")
223
+ end
224
+ end
225
+
226
+ message.join("\n")
227
+ end
228
+
229
+ def failure_message_when_negated
230
+ message = ["expected not to have an enqueued #{klass} job"]
231
+ message << " arguments: #{expected_arguments}" if expected_arguments.any?
232
+ message << " options: #{expected_options}" if expected_options.any?
233
+ message.join("\n")
234
+ end
235
+
236
+ def formatted(thing)
237
+ RSpec::Support::ObjectFormatter.format(thing)
238
+ end
239
+
240
+ def normalize_arguments(args)
241
+ if args.is_a?(Array)
242
+ args.map{ |x| normalize_arguments(x) }
243
+ elsif args.is_a?(Hash)
244
+ args.each_with_object({}) do |(key, value), hash|
245
+ hash[key.to_s] = normalize_arguments(value)
246
+ end
247
+ elsif args.is_a?(Symbol)
248
+ args.to_s
249
+ else
250
+ args
251
+ end
252
+ end
253
+ end
254
+ end
255
+ end
256
+ end
@@ -1,12 +1,18 @@
1
1
  module RSpec
2
2
  module Sidekiq
3
3
  module Matchers
4
+ include RSpec::Mocks::ArgumentMatchers
5
+
4
6
  def be_delayed(*expected_arguments)
5
7
  BeDelayed.new(*expected_arguments)
6
8
  end
7
9
 
8
10
  class BeDelayed
9
11
  def initialize(*expected_arguments)
12
+ raise <<~MSG if RSpec::Sidekiq.configuration.sidekiq_gte_7?
13
+ Use of the be_delayed matcher with Sidekiq 7+ is not possible. Try refactoring to a Sidekiq Job with `perform_at` or `perform_in` and the `have_enqueued_sidekiq_job` matcher
14
+ MSG
15
+
10
16
  @expected_arguments = expected_arguments
11
17
  end
12
18
 
@@ -34,7 +40,7 @@ module RSpec
34
40
  find_job @expected_method, @expected_arguments do |job|
35
41
  if @expected_interval
36
42
  created_enqueued_at = job['enqueued_at'] || job['created_at']
37
- return job['at'].to_i == created_enqueued_at.to_i + @expected_interval
43
+ return job['at'].to_i == Time.at(created_enqueued_at.to_f + @expected_interval.to_f).to_i
38
44
  elsif @expected_time
39
45
  return job['at'].to_i == @expected_time.to_i
40
46
  else
@@ -58,8 +64,16 @@ module RSpec
58
64
 
59
65
  def find_job(method, arguments, &block)
60
66
  job = (::Sidekiq::Extensions::DelayedClass.jobs + ::Sidekiq::Extensions::DelayedModel.jobs + ::Sidekiq::Extensions::DelayedMailer.jobs).find do |job|
61
- yaml = YAML.load(job['args'].first)
62
- @expected_method_receiver == yaml[0] && @expected_method.name == yaml[1] && (@expected_arguments <=> yaml[2]) == 0
67
+ arg = job['args'].first
68
+ yaml = begin
69
+ YAML.load(arg, aliases: true) # Psych 4 required syntax
70
+ rescue ArgumentError
71
+ YAML.load(arg) # Pysch < 4 syntax
72
+ end
73
+
74
+ @expected_method_receiver == yaml[0] &&
75
+ method.name == yaml[1] &&
76
+ (arguments.empty? || RSpec::Mocks::ArgumentListMatcher.new(*arguments).args_match?(*yaml[2]))
63
77
  end
64
78
 
65
79
  yield job if block && job
@@ -0,0 +1,87 @@
1
+ module RSpec
2
+ module Sidekiq
3
+ module Matchers
4
+ # @api private
5
+ class EnqueueSidekiqJob < Base
6
+ attr_reader :original_jobs # Plus that from Base
7
+
8
+ def initialize(job_class)
9
+ super()
10
+ default = if RSpec::Sidekiq.configuration.sidekiq_gte_7?
11
+ ::Sidekiq::Job
12
+ else
13
+ ::Sidekiq::Worker
14
+ end
15
+
16
+ @klass = job_class || default
17
+ end
18
+
19
+ def matches?(proc)
20
+ raise ArgumentError, "Only block syntax supported for enqueue_sidekiq_job" unless Proc === proc
21
+
22
+ @original_jobs = EnqueuedJobs.new(@klass)
23
+ proc.call
24
+ @actual_jobs = EnqueuedJobs.new(@klass).minus!(original_jobs)
25
+
26
+ if @actual_jobs.none?
27
+ return false
28
+ end
29
+
30
+ @actual_jobs.includes?(expected_arguments, expected_options)
31
+ end
32
+
33
+ def failure_message
34
+ if @actual_jobs.none?
35
+ "expected to enqueue a job but enqueued 0"
36
+ else
37
+ super
38
+ end
39
+ end
40
+
41
+ def failure_message_when_negated
42
+ messages = ["expected not to enqueue a #{@klass} job but enqueued #{actual_jobs.count}"]
43
+
44
+ messages << " with arguments #{formatted(expected_arguments)}" if expected_arguments
45
+ messages << " with context #{formatted(expected_options)}" if expected_options
46
+
47
+ messages.join("\n")
48
+ end
49
+
50
+ def supports_block_expectations?
51
+ true
52
+ end
53
+ end
54
+
55
+ # @api public
56
+ #
57
+ # Passes if a Job is enqueued as the result of a block. Chainable `with`
58
+ # for arguments, `on` for queue, `at` for queued for a specific time, and
59
+ # `in` for a specific interval delay to being queued
60
+ #
61
+ # @example
62
+ #
63
+ # expect { AwesomeJob.perform_async }.to enqueue_sidekiq_job
64
+ #
65
+ # # A specific job class
66
+ # expect { AwesomeJob.perform_async }.to enqueue_sidekiq_job(AwesomeJob)
67
+ #
68
+ # # with specific arguments
69
+ # expect { AwesomeJob.perform_async "Awesome!" }.to enqueue_sidekiq_job.with("Awesome!")
70
+ #
71
+ # # On a specific queue
72
+ # expect { AwesomeJob.set(queue: "high").perform_async }.to enqueue_sidekiq_job.on("high")
73
+ #
74
+ # # At a specific datetime
75
+ # specific_time = 1.hour.from_now
76
+ # expect { AwesomeJob.perform_at(specific_time) }.to enqueue_sidekiq_job.at(specific_time)
77
+ #
78
+ # # In a specific interval (be mindful of freezing or managing time here)
79
+ # freeze_time do
80
+ # expect { AwesomeJob.perform_in(1.hour) }.to enqueue_sidekiq_job.in(1.hour)
81
+ # end
82
+ def enqueue_sidekiq_job(job_class = nil)
83
+ EnqueueSidekiqJob.new(job_class)
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,25 @@
1
+ module RSpec
2
+ module Sidekiq
3
+ module Matchers
4
+ def have_enqueued_sidekiq_job(*expected_arguments)
5
+ HaveEnqueuedSidekiqJob.new expected_arguments
6
+ end
7
+
8
+ # @api private
9
+ class HaveEnqueuedSidekiqJob < Base
10
+ def initialize(expected_arguments)
11
+ super()
12
+ @expected_arguments = normalize_arguments(expected_arguments)
13
+ end
14
+
15
+ def matches?(job_class)
16
+ @klass = job_class
17
+
18
+ @actual_jobs = EnqueuedJobs.new(klass)
19
+
20
+ actual_jobs.includes?(expected_arguments, expected_options)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,11 +1,16 @@
1
- require 'rspec/core'
2
- require 'rspec/sidekiq/matchers/be_delayed'
3
- require 'rspec/sidekiq/matchers/be_expired_in'
4
- require 'rspec/sidekiq/matchers/be_processed_in'
5
- require 'rspec/sidekiq/matchers/be_retryable'
6
- require 'rspec/sidekiq/matchers/be_unique'
7
- require 'rspec/sidekiq/matchers/have_enqueued_job'
8
- require 'rspec/sidekiq/matchers/save_backtrace'
1
+ require "rspec/core"
2
+ require "rspec/mocks/argument_list_matcher"
3
+ require "rspec/mocks/argument_matchers"
4
+
5
+ require "rspec/sidekiq/matchers/base"
6
+ require "rspec/sidekiq/matchers/be_delayed"
7
+ require "rspec/sidekiq/matchers/be_expired_in"
8
+ require "rspec/sidekiq/matchers/be_processed_in"
9
+ require "rspec/sidekiq/matchers/be_retryable"
10
+ require "rspec/sidekiq/matchers/be_unique"
11
+ require "rspec/sidekiq/matchers/have_enqueued_sidekiq_job"
12
+ require "rspec/sidekiq/matchers/save_backtrace"
13
+ require "rspec/sidekiq/matchers/enqueue_sidekiq_job"
9
14
 
10
15
  RSpec.configure do |config|
11
16
  config.include RSpec::Sidekiq::Matchers
@@ -14,7 +14,7 @@ end
14
14
 
15
15
  RSpec.configure do |config|
16
16
  config.before(:suite) do
17
- message = '[rspec-sidekiq] WARNING! Sidekiq will *NOT* process jobs in this environment. See https://github.com/philostler/rspec-sidekiq/wiki/FAQ-&-Troubleshooting'
17
+ message = '[rspec-sidekiq] WARNING! Sidekiq will *NOT* process jobs in this environment. See https://github.com/wspurgin/rspec-sidekiq/wiki/FAQ-&-Troubleshooting'
18
18
  message = "\e[33m#{message}\e[0m" if RSpec::Sidekiq.configuration.enable_terminal_colours
19
19
  puts message if RSpec::Sidekiq.configuration.warn_when_jobs_not_processed_by_sidekiq
20
20
  end
@@ -1,5 +1,5 @@
1
1
  module RSpec
2
2
  module Sidekiq
3
- VERSION = '3.1.0'
3
+ VERSION = "4.0.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,22 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 4.0.1
5
5
  platform: ruby
6
6
  authors:
7
+ - Aidan Coyle
7
8
  - Phil Ostler
8
- autorequire:
9
+ - Will Spurgin
10
+ autorequire:
9
11
  bindir: bin
10
12
  cert_chain: []
11
- date: 2020-06-21 00:00:00.000000000 Z
13
+ date: 2023-08-23 00:00:00.000000000 Z
12
14
  dependencies:
13
15
  - !ruby/object:Gem::Dependency
14
16
  name: rspec-core
15
17
  requirement: !ruby/object:Gem::Requirement
16
18
  requirements:
17
- - - ">="
19
+ - - "~>"
18
20
  - !ruby/object:Gem::Version
19
- version: 3.0.0
21
+ version: '3.0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '3.0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: rspec-mocks
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
20
33
  - - "~>"
21
34
  - !ruby/object:Gem::Version
22
35
  version: '3.0'
@@ -24,9 +37,20 @@ dependencies:
24
37
  prerelease: false
25
38
  version_requirements: !ruby/object:Gem::Requirement
26
39
  requirements:
27
- - - ">="
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '3.0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rspec-expectations
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
28
48
  - !ruby/object:Gem::Version
29
- version: 3.0.0
49
+ version: '3.0'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
30
54
  - - "~>"
31
55
  - !ruby/object:Gem::Version
32
56
  version: '3.0'
@@ -36,14 +60,62 @@ dependencies:
36
60
  requirements:
37
61
  - - ">="
38
62
  - !ruby/object:Gem::Version
39
- version: 2.4.0
63
+ version: '5'
64
+ - - "<"
65
+ - !ruby/object:Gem::Version
66
+ version: '8'
40
67
  type: :runtime
41
68
  prerelease: false
42
69
  version_requirements: !ruby/object:Gem::Requirement
43
70
  requirements:
44
71
  - - ">="
45
72
  - !ruby/object:Gem::Version
46
- version: 2.4.0
73
+ version: '5'
74
+ - - "<"
75
+ - !ruby/object:Gem::Version
76
+ version: '8'
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'
47
119
  - !ruby/object:Gem::Dependency
48
120
  name: rspec
49
121
  requirement: !ruby/object:Gem::Requirement
@@ -157,17 +229,12 @@ dependencies:
157
229
  - !ruby/object:Gem::Version
158
230
  version: '0'
159
231
  description: Simple testing of Sidekiq jobs via a collection of matchers and helpers
160
- email: github@philostler.com
232
+ email:
161
233
  executables: []
162
234
  extensions: []
163
235
  extra_rdoc_files: []
164
236
  files:
165
- - ".gitattributes"
166
- - ".gitignore"
167
- - ".rspec"
168
- - ".simplecov"
169
237
  - CHANGES.md
170
- - Gemfile
171
238
  - LICENSE
172
239
  - README.md
173
240
  - lib/rspec-sidekiq.rb
@@ -176,39 +243,22 @@ files:
176
243
  - lib/rspec/sidekiq/helpers.rb
177
244
  - lib/rspec/sidekiq/helpers/within_sidekiq_retries_exhausted_block.rb
178
245
  - lib/rspec/sidekiq/matchers.rb
246
+ - lib/rspec/sidekiq/matchers/base.rb
179
247
  - lib/rspec/sidekiq/matchers/be_delayed.rb
180
248
  - lib/rspec/sidekiq/matchers/be_expired_in.rb
181
249
  - lib/rspec/sidekiq/matchers/be_processed_in.rb
182
250
  - lib/rspec/sidekiq/matchers/be_retryable.rb
183
251
  - lib/rspec/sidekiq/matchers/be_unique.rb
184
- - lib/rspec/sidekiq/matchers/have_enqueued_job.rb
252
+ - lib/rspec/sidekiq/matchers/enqueue_sidekiq_job.rb
253
+ - lib/rspec/sidekiq/matchers/have_enqueued_sidekiq_job.rb
185
254
  - lib/rspec/sidekiq/matchers/save_backtrace.rb
186
255
  - lib/rspec/sidekiq/sidekiq.rb
187
256
  - lib/rspec/sidekiq/version.rb
188
- - rspec-sidekiq.gemspec
189
- - spec/rspec/sidekiq/batch_spec.rb
190
- - spec/rspec/sidekiq/helpers/retries_exhausted_spec.rb
191
- - spec/rspec/sidekiq/matchers/be_delayed_spec.rb
192
- - spec/rspec/sidekiq/matchers/be_expired_in_spec.rb
193
- - spec/rspec/sidekiq/matchers/be_processed_in_spec.rb
194
- - spec/rspec/sidekiq/matchers/be_retryable_spec.rb
195
- - spec/rspec/sidekiq/matchers/be_unique_spec.rb
196
- - spec/rspec/sidekiq/matchers/have_enqueued_job_spec.rb
197
- - spec/rspec/sidekiq/matchers/save_backtrace_spec.rb
198
- - spec/rspec/sidekiq/sidekiq_spec.rb
199
- - spec/spec_helper.rb
200
- - spec/support/factories.rb
201
- - spec/support/init.rb
202
- - spec/support/test_action_mailer.rb
203
- - spec/support/test_job.rb
204
- - spec/support/test_resource.rb
205
- - spec/support/test_worker.rb
206
- - spec/support/test_worker_alternative.rb
207
- homepage: http://github.com/philostler/rspec-sidekiq
257
+ homepage: http://github.com/wspurgin/rspec-sidekiq
208
258
  licenses:
209
259
  - MIT
210
260
  metadata: {}
211
- post_install_message:
261
+ post_install_message:
212
262
  rdoc_options: []
213
263
  require_paths:
214
264
  - lib
@@ -223,8 +273,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
273
  - !ruby/object:Gem::Version
224
274
  version: '0'
225
275
  requirements: []
226
- rubygems_version: 3.0.3
227
- signing_key:
276
+ rubygems_version: 3.3.26
277
+ signing_key:
228
278
  specification_version: 4
229
279
  summary: RSpec for Sidekiq
230
280
  test_files: []
data/.gitattributes DELETED
@@ -1,22 +0,0 @@
1
- # Auto detect text files and perform LF normalization
2
- * text=auto
3
-
4
- # Custom for Visual Studio
5
- *.cs diff=csharp
6
- *.sln merge=union
7
- *.csproj merge=union
8
- *.vbproj merge=union
9
- *.fsproj merge=union
10
- *.dbproj merge=union
11
-
12
- # Standard to msysgit
13
- *.doc diff=astextplain
14
- *.DOC diff=astextplain
15
- *.docx diff=astextplain
16
- *.DOCX diff=astextplain
17
- *.dot diff=astextplain
18
- *.DOT diff=astextplain
19
- *.pdf diff=astextplain
20
- *.PDF diff=astextplain
21
- *.rtf diff=astextplain
22
- *.RTF diff=astextplain
data/.gitignore DELETED
@@ -1,2 +0,0 @@
1
- Gemfile.lock
2
- tmp
data/.rspec DELETED
@@ -1,4 +0,0 @@
1
- --colour
2
- --tty
3
- --format Fuubar
4
- --format html --out tmp/spec_result/index.html