sidekiq-merger 0.0.8 → 0.0.9
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.
- 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
|