sidekiq-merger 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sidekiq/merger/merge.rb +4 -3
- data/lib/sidekiq/merger/version.rb +1 -1
- data/spec/sidekiq/merger/merge_spec.rb +64 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7acc8bcc7c43fe634d4be54f9a4ce5c09135da27
|
4
|
+
data.tar.gz: ae19824415ac8fe3a38cd876977334f7e41ffaa2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8fe75f849916a6c70177f68bc9f4326b873d7715e43efdc42db5f26206f7561dd2db4a986c229e32fbe43e40b915ac769db94c6d03b10aaab0a78d27a777e9e5
|
7
|
+
data.tar.gz: 6a0ef14b3ebac1b36ff959da8d35a28454757b5cbe4ea89efb0799fec10d2c34f4d7e324e67b482c432f24812758f79d640401ad1bec877419abcb2e0dc1cf78
|
data/lib/sidekiq/merger/merge.rb
CHANGED
@@ -26,10 +26,11 @@ class Sidekiq::Merger::Merge
|
|
26
26
|
options = get_options(worker_class)
|
27
27
|
merge_key = options["key"]
|
28
28
|
if merge_key.respond_to?(:call)
|
29
|
-
merge_key.call(args)
|
30
|
-
else
|
31
|
-
merge_key
|
29
|
+
merge_key = merge_key.call(args)
|
32
30
|
end
|
31
|
+
merge_key = "" if merge_key.nil?
|
32
|
+
merge_key = merge_key.to_json unless merge_key.is_a?(String)
|
33
|
+
merge_key
|
33
34
|
end
|
34
35
|
|
35
36
|
def get_options(worker_class)
|
@@ -1,7 +1,8 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Sidekiq::Merger::Merge do
|
4
|
-
subject { described_class.new(worker_class, queue,
|
4
|
+
subject { described_class.new(worker_class, queue, args, redis: redis) }
|
5
|
+
let(:args) { "foo" }
|
5
6
|
let(:redis) { Sidekiq::Merger::Redis.new }
|
6
7
|
let(:queue) { "queue" }
|
7
8
|
let(:now) { Time.now }
|
@@ -61,6 +62,39 @@ describe Sidekiq::Merger::Merge do
|
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
65
|
+
describe ".merge_key" do
|
66
|
+
let(:args) { "foo" }
|
67
|
+
let(:options) { {} }
|
68
|
+
it "returns an empty string" do
|
69
|
+
expect(described_class.merge_key(worker_class, args)).to eq ""
|
70
|
+
end
|
71
|
+
context "string key" do
|
72
|
+
let(:options) { { key: "bar" } }
|
73
|
+
it "returns the string" do
|
74
|
+
expect(described_class.merge_key(worker_class, args)).to eq "bar"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
context "other type key" do
|
78
|
+
let(:options) { { key: [1, 2, 3] } }
|
79
|
+
it "returns nil" do
|
80
|
+
expect(described_class.merge_key(worker_class, args)).to eq "[1,2,3]"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
context "proc key" do
|
84
|
+
let(:args) { [1, 2, 3] }
|
85
|
+
let(:options) { { key: -> (args) { args[0].to_s } } }
|
86
|
+
it "returns the result of the proc" do
|
87
|
+
expect(described_class.merge_key(worker_class, args)).to eq "1"
|
88
|
+
end
|
89
|
+
context "non-string result" do
|
90
|
+
let(:options) { { key: -> (args) { args[0] } } }
|
91
|
+
it "returns nil" do
|
92
|
+
expect(described_class.merge_key(worker_class, args)).to eq "1"
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
64
98
|
describe "#add" do
|
65
99
|
it "adds the args in lazy merge" do
|
66
100
|
expect(redis).to receive(:push_message).with("name:queue:foo", [1, 2, 3], execution_time)
|
@@ -89,7 +123,36 @@ describe Sidekiq::Merger::Merge do
|
|
89
123
|
end
|
90
124
|
end
|
91
125
|
|
126
|
+
describe "#delete_all" do
|
127
|
+
before do
|
128
|
+
subject.add([1, 2, 3], execution_time)
|
129
|
+
subject.add([2, 3, 4], execution_time)
|
130
|
+
end
|
131
|
+
it "deletes all" do
|
132
|
+
expect {
|
133
|
+
subject.delete_all
|
134
|
+
}.to change { subject.size }.from(2).to(0)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
92
138
|
describe "#size" do
|
139
|
+
before do
|
140
|
+
subject.add([1, 2, 3], execution_time)
|
141
|
+
subject.add([2, 3, 4], execution_time)
|
142
|
+
end
|
143
|
+
it "returns the size" do
|
144
|
+
expect(subject.size).to eq 2
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
describe "#all_args" do
|
149
|
+
before do
|
150
|
+
subject.add([1, 2, 3], execution_time)
|
151
|
+
subject.add([2, 3, 4], execution_time)
|
152
|
+
end
|
153
|
+
it "returns all args" do
|
154
|
+
expect(subject.all_args).to contain_exactly [1, 2, 3], [2, 3, 4]
|
155
|
+
end
|
93
156
|
end
|
94
157
|
|
95
158
|
describe "#flush" do
|