rspec-sidekiq_pro 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c0209fc3fe2a82f7cd7355cd0514da771926c8557b68fd4ea23680d0b5cc95e6
4
- data.tar.gz: bea903392cd28942099eb2b70e6ee0111df93842c569d7a5ccba113e4e9fdb4f
3
+ metadata.gz: 2cd253da9eb5bb4e1bbb68a9bf9c2453f200e2743120b1730f82bc9c51c346ab
4
+ data.tar.gz: 63e909c970b1f4d29d1334f14b721a9c12478ca02cfef5d829d5046cea1ba733
5
5
  SHA512:
6
- metadata.gz: fddfe519ba229d75f3c6bcd1f1a68eade0e7c23babb04ebe377484a3704857bb47feb12d6f9de213cdf0fe9a037b874bfb78692c5a69359f5cf270bb0a28f020
7
- data.tar.gz: f1177195cf806d86619f027255619fdd5b47f370aba696a4d3931cccf8498197f758895c7fb7cee1a10320fe5cea94d48cc7e044a7250d9a767bcfd5252c0d2a
6
+ metadata.gz: ec44fdba876447f815815d3f9bf510876aca1be41fe0324102fff0828285d3a9b214825c9c79966b342e42e4d109c2487052d33aa1cd99c0fff69c34253a5dc0
7
+ data.tar.gz: c2692d557e4d997d3c17b895b7db57ca841b729bb643bbd2e1b8dfe3af410a80f959aee8db786e81d3787d282ec2f5a04a3f9dc5ac401bacf29fee08b3352d6a
data/README.md CHANGED
@@ -1,8 +1,9 @@
1
- # Rspec for Sidekiq Pro
1
+ # RSpec for Sidekiq Pro
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/rspec-sidekiq_pro.svg)](https://rubygems.org/gems/rspec-sidekiq_pro)
4
4
  [![CI Status](https://github.com/inkstak/rspec-sidekiq_pro/actions/workflows/ci.yml/badge.svg)](https://github.com/inkstak/rspec-sidekiq_pro/actions/workflows/ci.yml)
5
- [![Maintainability](https://api.codeclimate.com/v1/badges/9bb8b75ea8c66b1a9c94/maintainability)](https://codeclimate.com/github/inkstak/rspec-sidekiq_pro/maintainability)
5
+ [![Ruby Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://github.com/testdouble/standard)
6
+ [![Maintainability](https://api.codeclimate.com/v1/badges/3de8ad4b1787cdb9ca20/maintainability)](https://codeclimate.com/github/inkstak/rspec-sidekiq_pro/maintainability)
6
7
  [![Test Coverage](https://api.codeclimate.com/v1/badges/3de8ad4b1787cdb9ca20/test_coverage)](https://codeclimate.com/github/inkstak/rspec-sidekiq_pro/test_coverage)
7
8
 
8
9
  ### Installation
@@ -191,9 +192,10 @@ end
191
192
  ```bash
192
193
  bundle exec rspec
193
194
  bundle exec rubocop
195
+ bundle exec standardrb
194
196
  ```
195
197
 
196
- Both can be run with:
198
+ All of them can be run with:
197
199
 
198
200
  ```bash
199
201
  bundle exec rake
@@ -86,15 +86,15 @@ module Sidekiq
86
86
  if Sidekiq::Testing.disabled?
87
87
  super
88
88
  else
89
- @bid = bid || SecureRandom.urlsafe_base64(10)
89
+ @bid = bid || SecureRandom.urlsafe_base64(10)
90
90
  props = RSpec::SidekiqPro::Batches::Props.fetch(bid, {})
91
91
 
92
- @created_at = props.fetch("created_at", Time.now.utc).to_f
92
+ @created_at = props.fetch("created_at", Time.now.utc).to_f
93
93
  @description = props["description"]
94
- @parent_bid = props["parent"]
95
- @callbacks = props.fetch("callbacks", {})
96
- @jids = props.fetch("jids", [])
97
- @mutable = props.empty?
94
+ @parent_bid = props["parent"]
95
+ @callbacks = props.fetch("callbacks", {})
96
+ @jids = props.fetch("jids", [])
97
+ @mutable = props.empty?
98
98
  end
99
99
  end
100
100
 
@@ -179,8 +179,8 @@ module Sidekiq
179
179
  callback.each do |target, options|
180
180
  klass_name, method = target.to_s.split("#")
181
181
  klass = klass_name.constantize
182
- meth = method || "on_#{event}"
183
- inst = klass.new
182
+ meth = method || "on_#{event}"
183
+ inst = klass.new
184
184
  inst.jid = SecureRandom.hex(12) if inst.respond_to?(:jid)
185
185
  inst.send(meth, status, options)
186
186
  end
@@ -192,11 +192,11 @@ module Sidekiq
192
192
  if Sidekiq::Testing.disabled?
193
193
  super
194
194
  else
195
- @bid = bid
196
- @props = RSpec::SidekiqPro::Batches::Props.fetch(bid, {})
197
- @pending = 0
195
+ @bid = bid
196
+ @props = RSpec::SidekiqPro::Batches::Props.fetch(bid, {})
197
+ @pending = 0
198
198
  @failures = 0
199
- @total = @props.fetch("jids", []).size
199
+ @total = @props.fetch("jids", []).size
200
200
  end
201
201
  end
202
202
  end
@@ -20,7 +20,6 @@ module RSpec
20
20
  if block
21
21
  raise ArgumentError, "setting block to `with` is not supported for this matcher" if supports_value_expectations?
22
22
  raise ArgumentError, "setting arguments and block together in `with` is not supported" if expected_arguments.any?
23
-
24
23
  @expected_arguments = block
25
24
  else
26
25
  @expected_arguments = normalize_arguments(expected_arguments)
@@ -41,7 +40,7 @@ module RSpec
41
40
  raise "setting expecations with both `at` and `in` is not supported" if @expected_interval
42
41
 
43
42
  @expected_timestamp = timestamp
44
- @expected_schedule = timestamp.to_i
43
+ @expected_schedule = timestamp.to_i
45
44
  self
46
45
  end
47
46
 
@@ -85,7 +84,7 @@ module RSpec
85
84
  end
86
85
 
87
86
  def matches?(jobs)
88
- @actual_jobs = jobs
87
+ @actual_jobs = jobs
89
88
  filtered_jobs = filter_jobs(actual_jobs)
90
89
 
91
90
  if expected_count
@@ -96,7 +95,7 @@ module RSpec
96
95
  end
97
96
 
98
97
  def does_not_match?(jobs)
99
- @actual_jobs = jobs
98
+ @actual_jobs = jobs
100
99
  filtered_jobs = filter_jobs(actual_jobs)
101
100
 
102
101
  if expected_count
@@ -135,45 +134,66 @@ module RSpec
135
134
  end
136
135
 
137
136
  def failure_message_diff
138
- diff = []
139
- diff << " exactly: #{expected_count} time(s)" if expected_count
140
- diff << " arguments: #{expected_arguments}" if expected_arguments
141
- diff << " in: #{expected_interval_output}" if expected_interval
142
- diff << " at: #{expected_timestamp}" if expected_timestamp
143
- diff << " batch: #{output_batch(expected_batch)}" if expected_batch
144
- diff << " batch: no batch" if expected_without_batch
145
- diff << "" if diff.any?
137
+ message = []
138
+ message += expectations_in_failure_message
139
+ message << "" if message.any?
140
+ message << actual_jobs_size_in_failure_message
141
+
142
+ if expected_arguments || expected_schedule || expected_without_batch || expected_batch
143
+ message[-1] = "#{message[-1]}:"
144
+ message += actual_jobs_details_in_failure_message
145
+ end
146
+
147
+ message.join("\n")
148
+ end
146
149
 
150
+ def actual_jobs_size_in_failure_message
147
151
  if actual_jobs.empty?
148
- diff << "no #{worker_class} found"
149
- elsif !expected_arguments && !expected_schedule && !expected_without_batch && !expected_batch
150
- diff << "found #{actual_jobs.size} #{worker_class}"
152
+ "no #{worker_class} found"
151
153
  else
152
- diff << "found #{actual_jobs.size} #{worker_class}:"
153
-
154
- actual_jobs.each do |job|
155
- job_message = []
156
- job_message << "arguments: #{job["args"]}" if expected_arguments
157
- job_message << "at: #{output_schedule(job["at"])}" if expected_schedule && job["at"]
158
- job_message << "at: no schedule" if expected_schedule && !job["at"]
159
- job_message << "batch: #{output_batch(job["bid"])}" if (expected_without_batch || expected_batch) && job["bid"]
160
- job_message << "batch: no batch" if (expected_without_batch || expected_batch) && !job["bid"]
161
-
162
- diff += job_message.map.with_index do |line, index|
163
- if actual_jobs.size == 1
164
- " #{line}"
165
- elsif index.zero?
166
- " - #{line}"
167
- else
168
- " #{line}"
169
- end
154
+ "found #{actual_jobs.size} #{worker_class}"
155
+ end
156
+ end
157
+
158
+ # rubocop:disable Layout/ExtraSpacing
159
+ # It becomes unreadable when not allowing alignement
160
+ def expectations_in_failure_message
161
+ message = []
162
+ message << " exactly: #{expected_count} time(s)" if expected_count
163
+ message << " arguments: #{expected_arguments}" if expected_arguments
164
+ message << " in: #{expected_interval_output}" if expected_interval
165
+ message << " at: #{expected_timestamp}" if expected_timestamp
166
+ message << " batch: #{output_batch(expected_batch)}" if expected_batch
167
+ message << " batch: no batch" if expected_without_batch
168
+ message
169
+ end
170
+
171
+ def job_details_in_failure_message(job)
172
+ message = []
173
+ message << " arguments: #{job["args"]}" if expected_arguments
174
+ message << " at: #{output_schedule(job["at"])}" if expected_schedule && job["at"]
175
+ message << " at: no schedule" if expected_schedule && !job["at"]
176
+ message << " batch: #{output_batch(job["bid"])}" if (expected_without_batch || expected_batch) && job["bid"]
177
+ message << " batch: no batch" if (expected_without_batch || expected_batch) && !job["bid"]
178
+ message
179
+ end
180
+
181
+ def actual_jobs_details_in_failure_message
182
+ actual_jobs.flat_map do |job|
183
+ job_details_in_failure_message(job).map.with_index do |line, index|
184
+ if actual_jobs.size > 1
185
+ indent = " "
186
+ indent = " - " if index.zero?
187
+ line = "#{indent}#{line[2..]}"
170
188
  end
189
+
190
+ line
171
191
  end
172
192
  end
173
-
174
- diff.join("\n")
175
193
  end
176
194
 
195
+ # rubocop:enable Layout/ExtraSpacing
196
+
177
197
  def expected_interval_output
178
198
  "#{expected_interval.inspect} (#{output_schedule(expected_schedule)})"
179
199
  end
@@ -184,9 +204,12 @@ module RSpec
184
204
 
185
205
  def output_batch(value)
186
206
  case value
187
- when :__undef__ then "to be present"
188
- when String then "<Sidekiq::Batch bid: #{value.inspect}>"
189
- when Sidekiq::Batch then "<Sidekiq::Batch bid: #{value.bid.inspect}>"
207
+ when :__undef__
208
+ "to be present"
209
+ when String
210
+ "<Sidekiq::Batch bid: #{value.inspect}>"
211
+ when Sidekiq::Batch
212
+ "<Sidekiq::Batch bid: #{value.bid.inspect}>"
190
213
  else
191
214
  if value.respond_to?(:description)
192
215
  value.description
@@ -213,10 +236,8 @@ module RSpec
213
236
  !bid.nil?
214
237
  when String
215
238
  expected_batch == bid
216
-
217
239
  when ::Sidekiq::Batch
218
240
  expected_batch.bid == bid
219
-
220
241
  else
221
242
  return unless bid
222
243
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSpec
4
4
  module SidekiqPro
5
- VERSION = "1.0.0"
5
+ VERSION = "1.1.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-sidekiq_pro
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Savater Sebastien
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-22 00:00:00.000000000 Z
11
+ date: 2022-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -48,30 +48,56 @@ dependencies:
48
48
  name: sidekiq
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "~>"
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '6.5'
54
+ - - "<"
55
+ - !ruby/object:Gem::Version
56
+ version: '8'
54
57
  type: :runtime
55
58
  prerelease: false
56
59
  version_requirements: !ruby/object:Gem::Requirement
57
60
  requirements:
58
- - - "~>"
61
+ - - ">="
59
62
  - !ruby/object:Gem::Version
60
63
  version: '6.5'
64
+ - - "<"
65
+ - !ruby/object:Gem::Version
66
+ version: '8'
61
67
  - !ruby/object:Gem::Dependency
62
68
  name: sidekiq-pro
63
69
  requirement: !ruby/object:Gem::Requirement
64
70
  requirements:
65
- - - "~>"
71
+ - - ">="
66
72
  - !ruby/object:Gem::Version
67
73
  version: '5.5'
74
+ - - "<"
75
+ - !ruby/object:Gem::Version
76
+ version: '8'
68
77
  type: :runtime
69
78
  prerelease: false
70
79
  version_requirements: !ruby/object:Gem::Requirement
71
80
  requirements:
72
- - - "~>"
81
+ - - ">="
73
82
  - !ruby/object:Gem::Version
74
83
  version: '5.5'
84
+ - - "<"
85
+ - !ruby/object:Gem::Version
86
+ version: '8'
87
+ - !ruby/object:Gem::Dependency
88
+ name: zeitwerk
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '2.6'
94
+ type: :runtime
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '2.6'
75
101
  description:
76
102
  email: github.60k5k@simplelogin.co
77
103
  executables: []
@@ -106,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
132
  - !ruby/object:Gem::Version
107
133
  version: '0'
108
134
  requirements: []
109
- rubygems_version: 3.3.7
135
+ rubygems_version: 3.1.6
110
136
  signing_key:
111
137
  specification_version: 4
112
138
  summary: A collection of tools and matchers for Sidekiq Pro