sidekiq-undertaker 1.0.0.rc04 → 1.1.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.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +9 -2
  3. data/.github/dependabot.yml +8 -0
  4. data/.github/workflows/ruby-build.yml +51 -0
  5. data/.gitignore +1 -0
  6. data/.rspec +2 -0
  7. data/.rubocop.yml +4 -0
  8. data/.rubocop_codeclimate.yml +5 -0
  9. data/.rubocop_todo.yml +5 -5
  10. data/.travis.yml +22 -17
  11. data/README.md +3 -2
  12. data/Rakefile +2 -0
  13. data/lib/sidekiq/undertaker/dead_job.rb +1 -1
  14. data/lib/sidekiq/undertaker/version.rb +1 -1
  15. data/lib/sidekiq/undertaker/web_extension/api_helpers.rb +5 -1
  16. data/lib/sidekiq/undertaker/web_extension.rb +2 -0
  17. data/lib/sidekiq/undertaker.rb +1 -1
  18. data/renovate.json +5 -0
  19. data/sidekiq-undertaker.gemspec +14 -10
  20. data/spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_filter_page_is_called/behaves_like_a_page/{the_displayed_page_is_correct.approved.txt → the_displayed_page_is_correct_for_sidekiqv6.approved.txt} +2 -0
  21. data/spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_job_classbucket_page_is_called/behaves_like_a_page/{the_displayed_page_is_correct.approved.txt → the_displayed_page_is_correct_for_sidekiqv6.approved.txt} +2 -0
  22. data/spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_job_classbucket_page_is_polled/behaves_like_a_page/{the_displayed_page_is_correct.approved.txt → the_displayed_page_is_correct_for_sidekiqv6.approved.txt} +2 -0
  23. data/spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_all_failures_and_errors/behaves_like_a_page/{the_displayed_page_is_correct.approved.txt → the_displayed_page_is_correct_for_sidekiqv6.approved.txt} +9 -4
  24. data/spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_specific_job_class_and_a_specific_error/behaves_like_a_page/{the_displayed_page_is_correct.approved.txt → the_displayed_page_is_correct_for_sidekiqv6.approved.txt} +9 -4
  25. data/spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_specific_job_class_and_a_specific_error/with_pagination/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt +1305 -0
  26. data/spec/sidekiq/undertaker/dead_jobs_spec.rb +1 -1
  27. data/spec/sidekiq/undertaker/job_distributor_spec.rb +6 -6
  28. data/spec/sidekiq/undertaker/job_filter_spec.rb +4 -3
  29. data/spec/sidekiq/undertaker/web_extension_spec.rb +30 -4
  30. data/spec/spec_helper.rb +4 -5
  31. data/web/views/morgue.erb +3 -5
  32. metadata +52 -36
@@ -50,7 +50,7 @@ module Sidekiq
50
50
 
51
51
  describe ".for_each" do
52
52
  let(:expected_dead_job) do
53
- DeadJob.new(
53
+ described_class.new(
54
54
  job_class: "HardWorkTask",
55
55
  time_elapsed_since_failure: time_elapsed,
56
56
  error_class: "NoMethodError",
@@ -6,28 +6,28 @@ module Sidekiq
6
6
  module Undertaker
7
7
  describe JobDistributor do
8
8
  let(:job1) do
9
- instance_double(Sidekiq::Job, item: {
9
+ instance_double(Sidekiq::JobRecord, item: {
10
10
  "class" => "A",
11
11
  "failed_at" => 1,
12
12
  "error_class" => "E1"
13
13
  })
14
14
  end
15
15
  let(:job2) do
16
- instance_double(Sidekiq::Job, item: {
16
+ instance_double(Sidekiq::JobRecord, item: {
17
17
  "class" => "A",
18
18
  "failed_at" => 1,
19
19
  "error_class" => "E1"
20
20
  })
21
21
  end
22
22
  let(:job3) do
23
- instance_double(Sidekiq::Job, item: {
23
+ instance_double(Sidekiq::JobRecord, item: {
24
24
  "class" => "B",
25
25
  "failed_at" => 1,
26
26
  "error_class" => "E1"
27
27
  })
28
28
  end
29
29
  let(:job4) do
30
- instance_double(Sidekiq::Job, item: {
30
+ instance_double(Sidekiq::JobRecord, item: {
31
31
  "class" => "B",
32
32
  "failed_at" => 1,
33
33
  "error_class" => "E2"
@@ -66,7 +66,7 @@ module Sidekiq
66
66
 
67
67
  let(:dead_jobs) { [dead_job1, dead_job2, dead_job3, dead_job4] }
68
68
 
69
- # rubocop:disable Metrics/LineLength
69
+ # rubocop:disable Layout/LineLength
70
70
  describe "#group_by_job_class" do
71
71
  subject(:distribution) { described_class.new(dead_jobs).group_by_job_class }
72
72
 
@@ -98,7 +98,7 @@ module Sidekiq
98
98
  expect(distribution).to eq expected_distribution
99
99
  end
100
100
  end
101
- # rubocop:enable Metrics/LineLength
101
+ # rubocop:enable Layout/LineLength
102
102
  end
103
103
  end
104
104
  end
@@ -7,7 +7,7 @@ module Sidekiq
7
7
  describe JobFilter do
8
8
  describe ".filter_dead_jobs" do
9
9
  let(:job1) do
10
- instance_double(Sidekiq::Job, item: {
10
+ instance_double(Sidekiq::JobRecord, item: {
11
11
  "class" => "HardWorkTask",
12
12
  "failed_at" => Time.now.to_i - 5 * 60,
13
13
  "error_class" => "NoMethodError"
@@ -15,7 +15,7 @@ module Sidekiq
15
15
  end
16
16
 
17
17
  let(:job2) do
18
- instance_double(Sidekiq::Job, item: {
18
+ instance_double(Sidekiq::JobRecord, item: {
19
19
  "class" => "HardWorkTask",
20
20
  "failed_at" => Time.now.to_i - 2 * 60 * 60,
21
21
  "error_class" => "RandomError"
@@ -23,7 +23,7 @@ module Sidekiq
23
23
  end
24
24
 
25
25
  let(:job3) do
26
- instance_double(Sidekiq::Job, item: {
26
+ instance_double(Sidekiq::JobRecord, item: {
27
27
  "class" => "LazyWorkTask",
28
28
  "failed_at" => Time.now.to_i - 2 * 60 * 60,
29
29
  "error_class" => "NoMethodError"
@@ -81,6 +81,7 @@ module Sidekiq
81
81
  expect(dead_job.error_class).to eq "NoMethodError"
82
82
  end
83
83
  end
84
+
84
85
  it { expect(dead_jobs.size).to eq 2 }
85
86
  end
86
87
 
@@ -13,7 +13,13 @@ module Sidekiq
13
13
  describe WebExtension, type: :controller do
14
14
  include Rack::Test::Methods
15
15
 
16
- let(:app) { Sidekiq::Web }
16
+ let(:app) do
17
+ Sidekiq::Web.new.tap do |app|
18
+ # In order to use the Web UI of Sidekiq `6.2` a session is required
19
+ # SEE: https://github.com/mperham/sidekiq/blob/master/Changes.md#620
20
+ app.use Rack::Session::Cookie, secret: "A-Test-Web-Session-Secret"
21
+ end
22
+ end
17
23
  let(:job_refs) { [] }
18
24
 
19
25
  let(:jid1) { "4416aa76eb8cf03f56a49220" }
@@ -43,13 +49,14 @@ module Sidekiq
43
49
  job_refs.push add_dead("jid" => jid4, "class" => "HardWorker1", "error_class" => "NoMethodError")
44
50
 
45
51
  allow_any_instance_of(Sidekiq::WebAction).to receive(:root_path).and_return("/sidekiq/")
52
+
53
+ allow_any_instance_of(::Sidekiq::Web::CsrfProtection).to receive(:valid_token?).and_return(true)
46
54
  end
47
- # rubocop:enable RSpec/AnyInstance
48
55
 
49
56
  after { Timecop.return }
50
57
 
51
58
  def add_dead(opts = {})
52
- opts = default_job_opts.merge!(opts)
59
+ opts = default_job_opts.merge(opts)
53
60
 
54
61
  job = build_job(opts)
55
62
  killed_job = kill_job(job)
@@ -58,7 +65,7 @@ module Sidekiq
58
65
  end
59
66
 
60
67
  shared_examples "a page" do
61
- it "the displayed page is correct" do
68
+ it "the displayed page is correct (for Sidekiq=v#{Sidekiq::VERSION.split('.').first})" do
62
69
  subject
63
70
 
64
71
  expect(last_response.status).to eq 200
@@ -69,6 +76,10 @@ module Sidekiq
69
76
  end
70
77
 
71
78
  describe "show filter" do
79
+ before do
80
+ allow_any_instance_of(Sidekiq::Web::CsrfProtection).to receive(:mask_token).and_return("stubbed-csrf-token")
81
+ end
82
+
72
83
  # /undertaker/filter
73
84
  context "when filter page is called" do
74
85
  subject { get "/undertaker/filter" }
@@ -92,12 +103,26 @@ module Sidekiq
92
103
  end
93
104
 
94
105
  describe "show morgue" do
106
+ before do
107
+ allow_any_instance_of(Sidekiq::Web::CsrfProtection).to receive(:mask_token).and_return("stubbed-csrf-token")
108
+ end
109
+
95
110
  # /undertaker/morgue/:job_class/:error_class/:bucket_name
96
111
  context "when job-class/error/bucket is called" do
97
112
  context "with specific job-class and a specific error" do
98
113
  subject { get "/undertaker/morgue/HardWorker/RuntimeError/1_hour" }
99
114
 
100
115
  it_behaves_like "a page"
116
+
117
+ context "with pagination" do
118
+ before do
119
+ 50.times do |i|
120
+ job_refs.push add_dead("jid" => i.to_s)
121
+ end
122
+ end
123
+
124
+ it_behaves_like "a page"
125
+ end
101
126
  end
102
127
 
103
128
  context "with all failures and errors" do
@@ -107,6 +132,7 @@ module Sidekiq
107
132
  end
108
133
  end
109
134
  end
135
+ # rubocop:enable RSpec/AnyInstance
110
136
 
111
137
  describe "delete" do
112
138
  context "when job-class, error and bucket are given" do
data/spec/spec_helper.rb CHANGED
@@ -36,15 +36,14 @@ RSpec.configure do |config|
36
36
  config.run_all_when_everything_filtered = true
37
37
  config.filter_run :focus
38
38
 
39
+ config.approvals_default_format = :txt
40
+
39
41
  # Run specs in random order to surface order dependencies. If you find an
40
42
  # order dependency and want to debug it, you can fix the order by providing
41
43
  # the seed, which is printed after each run.
42
44
  # --seed 1234
43
45
  config.order = "random"
44
-
45
- RSpec.configure do |con|
46
- con.approvals_default_format = :txt
47
- end
46
+ Kernel.srand config.seed
48
47
 
49
48
  config.before do
50
49
  ::Sidekiq.redis(&:flushdb)
@@ -56,7 +55,7 @@ def apply_custom_excludes(data)
56
55
  end
57
56
 
58
57
  def build_job(item)
59
- Sidekiq::Job.new(item)
58
+ Sidekiq::JobRecord.new(item)
60
59
  end
61
60
 
62
61
  def job_to_sorted_entry(job, score: Time.now.utc.to_i, set: Sidekiq::SortedSet.new("test-jobs"))
data/web/views/morgue.erb CHANGED
@@ -8,11 +8,9 @@
8
8
  </h3>
9
9
  </div>
10
10
  <div class="col-sm-12">
11
- <% if @total_dead > 0 && @total_dead > @count %>
12
- <div class="col-sm-4">
13
- <%= erb :_paging, :locals => { :url => "#{root_path}" + @undertaker_path } %>
14
- </div>
15
- <% end %>
11
+ <div class="col-sm-4">
12
+ <%= erb :_paging, :locals => { :url => "#{root_path}" + @undertaker_path } %>
13
+ </div>
16
14
  </div>
17
15
  </header>
18
16
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-undertaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc04
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Koppensteiner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-16 00:00:00.000000000 Z
11
+ date: 2022-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -36,34 +36,28 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '12.3'
39
+ version: '13.0'
40
40
  type: :development
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '12.3'
46
+ version: '13.0'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: approvals
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0.0'
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: 0.0.24
53
+ version: 0.0.25
57
54
  type: :development
58
55
  prerelease: false
59
56
  version_requirements: !ruby/object:Gem::Requirement
60
57
  requirements:
61
58
  - - "~>"
62
59
  - !ruby/object:Gem::Version
63
- version: '0.0'
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- version: 0.0.24
60
+ version: 0.0.25
67
61
  - !ruby/object:Gem::Dependency
68
62
  name: mock_redis
69
63
  requirement: !ruby/object:Gem::Requirement
@@ -182,42 +176,56 @@ dependencies:
182
176
  requirements:
183
177
  - - "~>"
184
178
  - !ruby/object:Gem::Version
185
- version: '1.2'
179
+ version: '2.3'
186
180
  type: :development
187
181
  prerelease: false
188
182
  version_requirements: !ruby/object:Gem::Requirement
189
183
  requirements:
190
184
  - - "~>"
191
185
  - !ruby/object:Gem::Version
192
- version: '1.2'
186
+ version: '2.3'
193
187
  - !ruby/object:Gem::Dependency
194
188
  name: rubocop
195
189
  requirement: !ruby/object:Gem::Requirement
196
190
  requirements:
197
191
  - - "~>"
198
192
  - !ruby/object:Gem::Version
199
- version: '0.77'
193
+ version: '1.8'
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: '1.8'
201
+ - !ruby/object:Gem::Dependency
202
+ name: rubocop-rake
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: '0.5'
200
208
  type: :development
201
209
  prerelease: false
202
210
  version_requirements: !ruby/object:Gem::Requirement
203
211
  requirements:
204
212
  - - "~>"
205
213
  - !ruby/object:Gem::Version
206
- version: '0.77'
214
+ version: '0.5'
207
215
  - !ruby/object:Gem::Dependency
208
216
  name: rubocop-rspec
209
217
  requirement: !ruby/object:Gem::Requirement
210
218
  requirements:
211
219
  - - "~>"
212
220
  - !ruby/object:Gem::Version
213
- version: '1.30'
221
+ version: '2.0'
214
222
  type: :development
215
223
  prerelease: false
216
224
  version_requirements: !ruby/object:Gem::Requirement
217
225
  requirements:
218
226
  - - "~>"
219
227
  - !ruby/object:Gem::Version
220
- version: '1.30'
228
+ version: '2.0'
221
229
  - !ruby/object:Gem::Dependency
222
230
  name: rubocop_runner
223
231
  requirement: !ruby/object:Gem::Requirement
@@ -280,20 +288,20 @@ dependencies:
280
288
  requirements:
281
289
  - - ">="
282
290
  - !ruby/object:Gem::Version
283
- version: '5.2'
291
+ version: 6.2.2
284
292
  - - "<"
285
293
  - !ruby/object:Gem::Version
286
- version: '7'
294
+ version: '6.3'
287
295
  type: :runtime
288
296
  prerelease: false
289
297
  version_requirements: !ruby/object:Gem::Requirement
290
298
  requirements:
291
299
  - - ">="
292
300
  - !ruby/object:Gem::Version
293
- version: '5.2'
301
+ version: 6.2.2
294
302
  - - "<"
295
303
  - !ruby/object:Gem::Version
296
- version: '7'
304
+ version: '6.3'
297
305
  description: |2
298
306
  Sidekiq::Undertaker is a plugin for Sidekiq.
299
307
  It allows exploring, reviving (retrying) or burying (deleting) dead jobs.
@@ -305,8 +313,12 @@ extensions: []
305
313
  extra_rdoc_files: []
306
314
  files:
307
315
  - ".codeclimate.yml"
316
+ - ".github/dependabot.yml"
317
+ - ".github/workflows/ruby-build.yml"
308
318
  - ".gitignore"
319
+ - ".rspec"
309
320
  - ".rubocop.yml"
321
+ - ".rubocop_codeclimate.yml"
310
322
  - ".rubocop_todo.yml"
311
323
  - ".travis.yml"
312
324
  - Demo_Filter.png
@@ -325,12 +337,14 @@ files:
325
337
  - lib/sidekiq/undertaker/version.rb
326
338
  - lib/sidekiq/undertaker/web_extension.rb
327
339
  - lib/sidekiq/undertaker/web_extension/api_helpers.rb
340
+ - renovate.json
328
341
  - sidekiq-undertaker.gemspec
329
- - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_filter_page_is_called/behaves_like_a_page/the_displayed_page_is_correct.approved.txt
330
- - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_job_classbucket_page_is_called/behaves_like_a_page/the_displayed_page_is_correct.approved.txt
331
- - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_job_classbucket_page_is_polled/behaves_like_a_page/the_displayed_page_is_correct.approved.txt
332
- - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_all_failures_and_errors/behaves_like_a_page/the_displayed_page_is_correct.approved.txt
333
- - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_specific_job_class_and_a_specific_error/behaves_like_a_page/the_displayed_page_is_correct.approved.txt
342
+ - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_filter_page_is_called/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt
343
+ - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_job_classbucket_page_is_called/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt
344
+ - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_job_classbucket_page_is_polled/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt
345
+ - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_all_failures_and_errors/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt
346
+ - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_specific_job_class_and_a_specific_error/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt
347
+ - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_specific_job_class_and_a_specific_error/with_pagination/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt
334
348
  - spec/sidekiq/undertaker/bucket_spec.rb
335
349
  - spec/sidekiq/undertaker/dead_jobs_spec.rb
336
350
  - spec/sidekiq/undertaker/job_distributor_spec.rb
@@ -349,6 +363,7 @@ metadata:
349
363
  source_code_uri: https://github.com/ThomasKoppensteiner/sidekiq-undertaker
350
364
  bug_tracker_uri: https://github.com/ThomasKoppensteiner/sidekiq-undertaker/issues
351
365
  build_status_uri: https://travis-ci.org/ThomasKoppensteiner/sidekiq-undertaker
366
+ rubygems_mfa_required: 'true'
352
367
  post_install_message:
353
368
  rdoc_options: []
354
369
  require_paths:
@@ -358,23 +373,24 @@ required_ruby_version: !ruby/object:Gem::Requirement
358
373
  requirements:
359
374
  - - ">="
360
375
  - !ruby/object:Gem::Version
361
- version: '0'
376
+ version: 2.5.0
362
377
  required_rubygems_version: !ruby/object:Gem::Requirement
363
378
  requirements:
364
- - - ">"
379
+ - - ">="
365
380
  - !ruby/object:Gem::Version
366
- version: 1.3.1
381
+ version: '0'
367
382
  requirements: []
368
- rubygems_version: 3.0.2
383
+ rubygems_version: 3.0.3.1
369
384
  signing_key:
370
385
  specification_version: 4
371
386
  summary: Sidekiq::Undertaker allows exploring, reviving or burying dead jobs
372
387
  test_files:
373
- - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_filter_page_is_called/behaves_like_a_page/the_displayed_page_is_correct.approved.txt
374
- - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_job_classbucket_page_is_called/behaves_like_a_page/the_displayed_page_is_correct.approved.txt
375
- - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_job_classbucket_page_is_polled/behaves_like_a_page/the_displayed_page_is_correct.approved.txt
376
- - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_all_failures_and_errors/behaves_like_a_page/the_displayed_page_is_correct.approved.txt
377
- - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_specific_job_class_and_a_specific_error/behaves_like_a_page/the_displayed_page_is_correct.approved.txt
388
+ - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_filter_page_is_called/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt
389
+ - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_job_classbucket_page_is_called/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt
390
+ - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_filter/when_job_classbucket_page_is_polled/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt
391
+ - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_all_failures_and_errors/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt
392
+ - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_specific_job_class_and_a_specific_error/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt
393
+ - spec/fixtures/approvals/sidekiq_undertaker_webextension/show_morgue/when_job_classerrorbucket_is_called/with_specific_job_class_and_a_specific_error/with_pagination/behaves_like_a_page/the_displayed_page_is_correct_for_sidekiqv6.approved.txt
378
394
  - spec/sidekiq/undertaker/bucket_spec.rb
379
395
  - spec/sidekiq/undertaker/dead_jobs_spec.rb
380
396
  - spec/sidekiq/undertaker/job_distributor_spec.rb