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.
@@ -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