-
-
Notifications
You must be signed in to change notification settings - Fork 273
/
delete_job_by_digest_spec.rb
64 lines (53 loc) · 1.58 KB
/
delete_job_by_digest_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# frozen_string_literal: true
RSpec.describe "delete_job_by_digest.lua" do
subject(:delete_job_by_digest) do
call_script(:delete_job_by_digest, options)
end
let(:job_id) { "jobid" }
let(:digest) { digests.entries.first }
let(:queue) { :customqueue }
let(:options) { { keys: keys, argv: argv } }
let(:argv) { [digest] }
let(:keys) do
[
"#{SidekiqUniqueJobs::QUEUE}:#{queue}",
SidekiqUniqueJobs::SCHEDULE,
SidekiqUniqueJobs::RETRY,
]
end
context "when job doesn't exist" do
let(:argv) { ["abcdefab"] }
it { is_expected.to eq(nil) }
end
context "when job is retried" do
let(:job_id) { "abcdefab" }
let(:job) { dump_json(item) }
let(:item) do
{
"class" => "MyUniqueJob",
"args" => [1, 2],
"queue" => queue,
"jid" => job_id,
"retry_count" => 2,
"failed_at" => Time.now.to_f,
"lock_digest" => digest,
}
end
before { zadd("retry", Time.now.to_f.to_s, job) }
it "removes the job from the retry set" do
expect { delete_job_by_digest }.to change { retry_count }.from(1).to(0)
end
end
context "when job is scheduled" do
before { MyUniqueJob.perform_in(2000, 1, 1) }
it "removes the job from the scheduled set" do
expect { delete_job_by_digest }.to change { schedule_count }.from(1).to(0)
end
end
context "when job is enqueued" do
before { MyUniqueJob.perform_async(1, 1) }
it "removes the job from the queue" do
expect { delete_job_by_digest }.to change { queue_count(queue) }.from(1).to(0)
end
end
end