pseudo_cleaner 0.0.43 → 0.0.44

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module PseudoCleaner
2
- VERSION = "0.0.43"
2
+ VERSION = "0.0.44"
3
3
  end
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