pseudo_cleaner 0.0.43 → 0.0.44
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 +8 -8
- data/lib/pseudo_cleaner/redis_based_redis_cleaner.rb +144 -0
- data/lib/pseudo_cleaner/redis_cleaner.rb +412 -114
- data/lib/pseudo_cleaner/version.rb +1 -1
- data/spec/rails_helper.rb +4 -1
- data/spec/redis_based_redis_cleaner_spec.rb +35 -0
- data/spec/redis_cleaner_spec.rb +15 -0
- data/spec/shared_examples/redis_cleaner_storage.rb +280 -0
- data/spec/shared_examples/redis_cleaner_test_tracking.rb +8312 -0
- metadata +11 -2
data/spec/rails_helper.rb
CHANGED
@@ -4,7 +4,10 @@ require "faker"
|
|
4
4
|
require "cornucopia"
|
5
5
|
require "cornucopia/rspec_hooks"
|
6
6
|
|
7
|
+
Dir[File.join(File.dirname(__FILE__), "shared_examples", "**", "*.rb")].each { |file_name| require file_name }
|
8
|
+
|
7
9
|
Cornucopia::Util::Configuration.auto_open_report_after_generation(ENV['RM_INFO'])
|
8
10
|
|
9
11
|
# Cornucopia::Util::Configuration.seed = 1
|
10
|
-
# Cornucopia::Util::Configuration.context_seed = 1
|
12
|
+
# Cornucopia::Util::Configuration.context_seed = 1
|
13
|
+
# Cornucopia::Util::Configuration.order_seed = 1
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require "rails_helper"
|
2
|
+
require "pseudo_cleaner/redis_based_redis_cleaner"
|
3
|
+
|
4
|
+
RSpec.describe PseudoCleaner::RedisBasedRedisCleaner do
|
5
|
+
context "server and client are the same object" do
|
6
|
+
subject { described_class.new(:suite_start, :suite_end, Redis.current, {}) }
|
7
|
+
let(:server_subject) { subject }
|
8
|
+
|
9
|
+
describe "common behaviours" do
|
10
|
+
it_behaves_like "it stores and retrieves values for RedisCleaner"
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "cleaner behaviours" do
|
14
|
+
it_behaves_like "it tracks changes to Redis"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "server and client are different objects" do
|
19
|
+
subject { described_class.new(:suite_start, :suite_end, Redis.current, {}) }
|
20
|
+
let(:server_subject) { described_class.new(:suite_start, :suite_end, Redis.current, {}) }
|
21
|
+
|
22
|
+
before(:each) do
|
23
|
+
server_subject
|
24
|
+
subject
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "common behaviours" do
|
28
|
+
it_behaves_like "it stores and retrieves values for RedisCleaner"
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "cleaner behaviours" do
|
32
|
+
it_behaves_like "it tracks changes to Redis"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require "rails_helper"
|
2
|
+
require "pseudo_cleaner/redis_cleaner"
|
3
|
+
|
4
|
+
RSpec.describe PseudoCleaner::RedisCleaner do
|
5
|
+
subject { described_class.new(:suite_start, :suite_end, Redis.current, {}) }
|
6
|
+
let(:server_subject) { subject }
|
7
|
+
|
8
|
+
describe "common behaviours" do
|
9
|
+
it_behaves_like "it stores and retrieves values for RedisCleaner"
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "cleaner behaviours" do
|
13
|
+
it_behaves_like "it tracks changes to Redis"
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,280 @@
|
|
1
|
+
RSpec.shared_examples("it stores and retrieves values for RedisCleaner") do
|
2
|
+
let(:value_name) { "@#{Faker::Lorem.words(rand(5..10)).join("_")}".to_sym }
|
3
|
+
let(:boolean_value) { [true, false].sample }
|
4
|
+
let(:array_values) do
|
5
|
+
rand(5..10).times.map do
|
6
|
+
rand(1..10).times.map do
|
7
|
+
Faker::Lorem.sentence
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
let(:array_values_with_hashes) do
|
12
|
+
rand(5..10).times.map do
|
13
|
+
rand(1..5).times.map do
|
14
|
+
Faker::Lorem.sentence
|
15
|
+
end
|
16
|
+
rand(1..5).times.map do
|
17
|
+
rand(1..10).times.reduce({}) do |hash, index|
|
18
|
+
hash[Faker::Lorem.word] = Faker::Lorem.sentence
|
19
|
+
hash
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end.sample(1_000)
|
23
|
+
end
|
24
|
+
let(:set_values) do
|
25
|
+
rand(5..10).times.map do
|
26
|
+
Faker::Lorem.sentence
|
27
|
+
end.uniq
|
28
|
+
end
|
29
|
+
let(:other_set_values) do
|
30
|
+
rand(5..10).times.map do
|
31
|
+
Faker::Lorem.sentence
|
32
|
+
end.uniq - set_values
|
33
|
+
end
|
34
|
+
|
35
|
+
around(:each) do |example_proxy|
|
36
|
+
initial_values = subject.redis.keys
|
37
|
+
|
38
|
+
example_proxy.call
|
39
|
+
|
40
|
+
final_values = subject.redis.keys
|
41
|
+
|
42
|
+
new_values = final_values - initial_values
|
43
|
+
|
44
|
+
expect(new_values).to be_empty
|
45
|
+
end
|
46
|
+
|
47
|
+
after(:each) do
|
48
|
+
subject.suite_end :pseudo_delete
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "boolean functions" do
|
52
|
+
after(:each) do
|
53
|
+
server_subject.redis.del server_subject.bool_name(value_name)
|
54
|
+
end
|
55
|
+
|
56
|
+
it "can write then read a true value" do
|
57
|
+
server_subject.set_value_bool value_name, true
|
58
|
+
|
59
|
+
expect(subject.get_value_bool(value_name)).to be_truthy
|
60
|
+
end
|
61
|
+
|
62
|
+
it "can write then read a false value" do
|
63
|
+
server_subject.set_value_bool value_name, false
|
64
|
+
|
65
|
+
expect(subject.get_value_bool(value_name)).to be_falsey
|
66
|
+
end
|
67
|
+
|
68
|
+
it "can change a value" do
|
69
|
+
server_subject.set_value_bool value_name, boolean_value
|
70
|
+
|
71
|
+
expect(subject.get_value_bool(value_name)).to eq boolean_value
|
72
|
+
|
73
|
+
server_subject.set_value_bool value_name, !boolean_value
|
74
|
+
|
75
|
+
expect(subject.get_value_bool(value_name)).to eq !boolean_value
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "list values" do
|
80
|
+
after(:each) do
|
81
|
+
server_subject.clear_list_array(value_name)
|
82
|
+
end
|
83
|
+
|
84
|
+
context "simple string values" do
|
85
|
+
it "clears the list" do
|
86
|
+
server_subject.clear_list_array(value_name)
|
87
|
+
expect(subject.get_list_array(value_name)).to eq []
|
88
|
+
end
|
89
|
+
|
90
|
+
it "clears a list with values" do
|
91
|
+
server_subject.clear_list_array(value_name)
|
92
|
+
|
93
|
+
array_values.each do |array_value|
|
94
|
+
server_subject.append_list_value_array value_name, array_value
|
95
|
+
end
|
96
|
+
|
97
|
+
server_subject.clear_list_array(value_name)
|
98
|
+
expect(subject.get_list_array(value_name)).to eq []
|
99
|
+
end
|
100
|
+
|
101
|
+
it "sets values in the list" do
|
102
|
+
server_subject.clear_list_array(value_name)
|
103
|
+
|
104
|
+
array_values.each do |array_value|
|
105
|
+
server_subject.append_list_value_array value_name, array_value
|
106
|
+
end
|
107
|
+
|
108
|
+
stored_list = subject.get_list_array(value_name)
|
109
|
+
|
110
|
+
expect(stored_list).to eq array_values
|
111
|
+
end
|
112
|
+
|
113
|
+
it "gets the list length" do
|
114
|
+
server_subject.clear_list_array(value_name)
|
115
|
+
|
116
|
+
array_values.each do |array_value|
|
117
|
+
server_subject.append_list_value_array value_name, array_value
|
118
|
+
end
|
119
|
+
|
120
|
+
expect(subject.get_list_length(value_name)).to eq array_values.length
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
context "values with hashes" do
|
125
|
+
it "clears the list" do
|
126
|
+
server_subject.clear_list_array(value_name)
|
127
|
+
expect(subject.get_list_array(value_name)).to eq []
|
128
|
+
end
|
129
|
+
|
130
|
+
it "clears a list with values" do
|
131
|
+
server_subject.clear_list_array(value_name)
|
132
|
+
|
133
|
+
array_values_with_hashes.each do |array_value|
|
134
|
+
server_subject.append_list_value_array value_name, array_value
|
135
|
+
end
|
136
|
+
|
137
|
+
server_subject.clear_list_array(value_name)
|
138
|
+
expect(subject.get_list_array(value_name)).to eq []
|
139
|
+
end
|
140
|
+
|
141
|
+
it "sets values in the list" do
|
142
|
+
server_subject.clear_list_array(value_name)
|
143
|
+
|
144
|
+
array_values_with_hashes.each do |array_value|
|
145
|
+
server_subject.append_list_value_array value_name, array_value
|
146
|
+
end
|
147
|
+
|
148
|
+
stored_list = subject.get_list_array(value_name)
|
149
|
+
|
150
|
+
expect(stored_list).to eq array_values_with_hashes
|
151
|
+
end
|
152
|
+
|
153
|
+
it "gets the list length" do
|
154
|
+
server_subject.clear_list_array(value_name)
|
155
|
+
|
156
|
+
array_values_with_hashes.each do |array_value|
|
157
|
+
server_subject.append_list_value_array value_name, array_value
|
158
|
+
end
|
159
|
+
|
160
|
+
expect(subject.get_list_length(value_name)).to eq array_values_with_hashes.length
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
describe "set values" do
|
166
|
+
after(:each) do
|
167
|
+
server_subject.clear_set(value_name)
|
168
|
+
end
|
169
|
+
|
170
|
+
describe "#clear_set" do
|
171
|
+
it "clears the set" do
|
172
|
+
server_subject.clear_set(value_name)
|
173
|
+
|
174
|
+
expect(subject.get_set(value_name)).to be_a(SortedSet)
|
175
|
+
expect(subject.get_set(value_name)).to be_empty
|
176
|
+
end
|
177
|
+
|
178
|
+
it "clears a set with values" do
|
179
|
+
server_subject.clear_set(value_name)
|
180
|
+
|
181
|
+
set_values.each do |set_value|
|
182
|
+
server_subject.add_set_value(value_name, set_value)
|
183
|
+
end
|
184
|
+
|
185
|
+
server_subject.clear_set(value_name)
|
186
|
+
|
187
|
+
expect(subject.get_set(value_name)).to be_a(SortedSet)
|
188
|
+
expect(subject.get_set(value_name)).to be_empty
|
189
|
+
end
|
190
|
+
|
191
|
+
it "initalizes a set with values" do
|
192
|
+
server_subject.clear_set(value_name, set_values)
|
193
|
+
|
194
|
+
stored_set = subject.get_set(value_name)
|
195
|
+
expect(stored_set).to be_a(SortedSet)
|
196
|
+
expect(stored_set).not_to be_empty
|
197
|
+
|
198
|
+
expect(stored_set.length).to eq set_values.length
|
199
|
+
set_values.each do |set_value|
|
200
|
+
expect(stored_set).to be_include(set_value)
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
it "initalizes a set that has values with values" do
|
205
|
+
server_subject.clear_set(value_name, other_set_values)
|
206
|
+
server_subject.clear_set(value_name, set_values)
|
207
|
+
|
208
|
+
stored_set = subject.get_set(value_name)
|
209
|
+
expect(stored_set).to be_a(SortedSet)
|
210
|
+
expect(stored_set).not_to be_empty
|
211
|
+
|
212
|
+
expect(stored_set.length).to eq set_values.length
|
213
|
+
set_values.each do |set_value|
|
214
|
+
expect(stored_set).to be_include(set_value)
|
215
|
+
end
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
describe "#add_set_value" do
|
220
|
+
it "adds a new value to the set" do
|
221
|
+
server_subject.clear_set(value_name)
|
222
|
+
|
223
|
+
server_subject.add_set_value(value_name, set_values[0])
|
224
|
+
|
225
|
+
stored_set = subject.get_set(value_name)
|
226
|
+
|
227
|
+
expect(stored_set.length).to eq 1
|
228
|
+
expect(stored_set).to be_include(set_values[0])
|
229
|
+
end
|
230
|
+
|
231
|
+
it "adds a set of new values to the set" do
|
232
|
+
server_subject.clear_set(value_name)
|
233
|
+
|
234
|
+
set_values.each do |set_value|
|
235
|
+
server_subject.add_set_value(value_name, set_value)
|
236
|
+
end
|
237
|
+
|
238
|
+
stored_set = subject.get_set(value_name)
|
239
|
+
|
240
|
+
expect(stored_set.length).to eq set_values.length
|
241
|
+
set_values.each do |set_value|
|
242
|
+
expect(stored_set).to be_include(set_value)
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
246
|
+
it "does not add a value more than one time" do
|
247
|
+
server_subject.clear_set(value_name)
|
248
|
+
|
249
|
+
set_values.each do |set_value|
|
250
|
+
server_subject.add_set_value(value_name, set_value)
|
251
|
+
server_subject.add_set_value(value_name, set_value)
|
252
|
+
end
|
253
|
+
set_values.each do |set_value|
|
254
|
+
server_subject.add_set_value(value_name, set_value)
|
255
|
+
end
|
256
|
+
|
257
|
+
stored_set = subject.get_set(value_name)
|
258
|
+
|
259
|
+
expect(stored_set.length).to eq set_values.length
|
260
|
+
set_values.each do |set_value|
|
261
|
+
expect(stored_set).to be_include(set_value)
|
262
|
+
end
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
describe "#set_includes?" do
|
267
|
+
it "returns true if the value is in the set" do
|
268
|
+
server_subject.clear_set(value_name, set_values)
|
269
|
+
|
270
|
+
expect(subject.set_includes?(value_name, set_values.sample)).to be_truthy
|
271
|
+
end
|
272
|
+
|
273
|
+
it "returns false if the value is not in the set" do
|
274
|
+
server_subject.clear_set(value_name, set_values)
|
275
|
+
|
276
|
+
expect(subject.set_includes?(value_name, other_set_values.sample)).to be_falsey
|
277
|
+
end
|
278
|
+
end
|
279
|
+
end
|
280
|
+
end
|