rediska 0.0.11 → 0.1.0
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/Gemfile.lock +18 -14
- data/lib/rediska/command_executor.rb +25 -0
- data/lib/rediska/connection.rb +8 -1
- data/lib/rediska/driver.rb +30 -56
- data/lib/rediska/sort_method.rb +108 -0
- data/lib/rediska/transaction_commands.rb +83 -0
- data/lib/rediska/version.rb +1 -1
- data/rediska.gemspec +1 -1
- data/spec/lib/rediska/driver_spec.rb +5 -5
- data/spec/redis_spec.rb +3 -0
- data/spec/support/connection.rb +15 -15
- data/spec/support/hashes.rb +51 -51
- data/spec/support/keys.rb +106 -61
- data/spec/support/lists.rb +37 -30
- data/spec/support/server.rb +23 -23
- data/spec/support/sets.rb +44 -44
- data/spec/support/sorted_method.rb +136 -0
- data/spec/support/sorted_sets.rb +140 -136
- data/spec/support/strings.rb +74 -74
- data/spec/support/transactions.rb +65 -12
- data/spec/support/upcase_method_names.rb +2 -2
- metadata +22 -17
data/spec/support/lists.rb
CHANGED
@@ -3,9 +3,9 @@ shared_examples 'lists' do
|
|
3
3
|
subject.lpush('key1', 'val1')
|
4
4
|
subject.lpush('key1', 'val2')
|
5
5
|
|
6
|
-
subject.lindex('key1', 0).
|
7
|
-
subject.lindex('key1', -1).
|
8
|
-
subject.lindex('key1', 3).
|
6
|
+
expect(subject.lindex('key1', 0)).to eq('val2')
|
7
|
+
expect(subject.lindex('key1', -1)).to eq('val1')
|
8
|
+
expect(subject.lindex('key1', 3)).to be_nil
|
9
9
|
end
|
10
10
|
|
11
11
|
it 'should insert an element before or after another element in a list' do
|
@@ -13,17 +13,17 @@ shared_examples 'lists' do
|
|
13
13
|
subject.rpush('key1', 'v3')
|
14
14
|
subject.linsert('key1', :before, 'v3', 'v2')
|
15
15
|
|
16
|
-
subject.lrange('key1', 0, -1).
|
16
|
+
expect(subject.lrange('key1', 0, -1)).to eq(['v1', 'v2', 'v3'])
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'should allow multiple values to be added to a list in a single rpush' do
|
20
20
|
subject.rpush('key1', [1, 2, 3])
|
21
|
-
subject.lrange('key1', 0, -1).
|
21
|
+
expect(subject.lrange('key1', 0, -1)).to eq(['1', '2', '3'])
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'should allow multiple values to be added to a list in a single lpush' do
|
25
25
|
subject.lpush('key1', [1, 2, 3])
|
26
|
-
subject.lrange('key1', 0, -1).
|
26
|
+
expect(subject.lrange('key1', 0, -1)).to eq(['3', '2', '1'])
|
27
27
|
end
|
28
28
|
|
29
29
|
it 'should error if an invalid where argument is given' do
|
@@ -39,8 +39,8 @@ shared_examples 'lists' do
|
|
39
39
|
subject.rpush('key1', 'v1')
|
40
40
|
subject.rpush('key1', 'v2')
|
41
41
|
|
42
|
-
subject.llen('key1').
|
43
|
-
subject.llen('key2').
|
42
|
+
expect(subject.llen('key1')).to eq(2)
|
43
|
+
expect(subject.llen('key2')).to eq(0)
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'should remove and get the first element in a list' do
|
@@ -48,15 +48,15 @@ shared_examples 'lists' do
|
|
48
48
|
subject.rpush('key1', 'v2')
|
49
49
|
subject.rpush('key1', 'v3')
|
50
50
|
|
51
|
-
subject.lpop('key1').
|
52
|
-
subject.lrange('key1', 0, -1).
|
51
|
+
expect(subject.lpop('key1')).to eq('v1')
|
52
|
+
expect(subject.lrange('key1', 0, -1)).to eq(['v2', 'v3'])
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'should prepend a value to a list' do
|
56
56
|
subject.rpush('key1', 'v1')
|
57
57
|
subject.rpush('key1', 'v2')
|
58
58
|
|
59
|
-
subject.lrange('key1', 0, -1).
|
59
|
+
expect(subject.lrange('key1', 0, -1)).to eq(['v1', 'v2'])
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'should prepend a value to a list, only if the list exists' do
|
@@ -65,8 +65,8 @@ shared_examples 'lists' do
|
|
65
65
|
subject.lpushx('key1', 'v2')
|
66
66
|
subject.lpushx('key2', 'v3')
|
67
67
|
|
68
|
-
subject.lrange('key1', 0, -1).
|
69
|
-
subject.llen('key2').
|
68
|
+
expect(subject.lrange('key1', 0, -1)).to eq(['v2', 'v1'])
|
69
|
+
expect(subject.llen('key2')).to eq(0)
|
70
70
|
end
|
71
71
|
|
72
72
|
it 'should get a range of elements from a list' do
|
@@ -74,7 +74,7 @@ shared_examples 'lists' do
|
|
74
74
|
subject.rpush('key1', 'v2')
|
75
75
|
subject.rpush('key1', 'v3')
|
76
76
|
|
77
|
-
subject.lrange('key1', 1, -1).
|
77
|
+
expect(subject.lrange('key1', 1, -1)).to eq(['v2', 'v3'])
|
78
78
|
end
|
79
79
|
|
80
80
|
it 'should remove elements from a list' do
|
@@ -84,9 +84,9 @@ shared_examples 'lists' do
|
|
84
84
|
subject.rpush('key1', 'v2')
|
85
85
|
subject.rpush('key1', 'v1')
|
86
86
|
|
87
|
-
subject.lrem('key1', 1, 'v1').
|
88
|
-
subject.lrem('key1', -2, 'v2').
|
89
|
-
subject.llen('key1').
|
87
|
+
expect(subject.lrem('key1', 1, 'v1')).to eq(1)
|
88
|
+
expect(subject.lrem('key1', -2, 'v2')).to eq(2)
|
89
|
+
expect(subject.llen('key1')).to eq(2)
|
90
90
|
end
|
91
91
|
|
92
92
|
it "should remove list's key when list is empty" do
|
@@ -95,7 +95,7 @@ shared_examples 'lists' do
|
|
95
95
|
subject.lrem('key1', 1, 'v1')
|
96
96
|
subject.lrem('key1', 1, 'v2')
|
97
97
|
|
98
|
-
subject.exists('key1').
|
98
|
+
expect(subject.exists('key1')).to be_falsey
|
99
99
|
end
|
100
100
|
|
101
101
|
it 'should set the value of an element in a list by its index' do
|
@@ -105,7 +105,7 @@ shared_examples 'lists' do
|
|
105
105
|
|
106
106
|
subject.lset('key1', 0, 'four')
|
107
107
|
subject.lset('key1', -2, 'five')
|
108
|
-
subject.lrange('key1', 0, -1).
|
108
|
+
expect(subject.lrange('key1', 0, -1)).to eq(['four', 'five', 'three'])
|
109
109
|
|
110
110
|
expect {
|
111
111
|
subject.lset('key1', 4, 'six')
|
@@ -118,7 +118,7 @@ shared_examples 'lists' do
|
|
118
118
|
subject.rpush('key1', 'three')
|
119
119
|
|
120
120
|
subject.ltrim('key1', 1, -1)
|
121
|
-
subject.lrange('key1', 0, -1).
|
121
|
+
expect(subject.lrange('key1', 0, -1)).to eq(['two', 'three'])
|
122
122
|
end
|
123
123
|
|
124
124
|
context 'when the list is smaller than the requested trim' do
|
@@ -132,7 +132,7 @@ shared_examples 'lists' do
|
|
132
132
|
end
|
133
133
|
|
134
134
|
it 'returns the unmodified list' do
|
135
|
-
subject.lrange('listOfOne', 0, -1).
|
135
|
+
expect(subject.lrange('listOfOne', 0, -1)).to eq(['one'])
|
136
136
|
end
|
137
137
|
end
|
138
138
|
end
|
@@ -153,7 +153,7 @@ shared_examples 'lists' do
|
|
153
153
|
end
|
154
154
|
|
155
155
|
it 'should trim a list to the specified maximum size' do
|
156
|
-
subject.lrange('maxTest', 0, -1).
|
156
|
+
expect(subject.lrange('maxTest', 0, -1)).to eq(['two','three', 'four', 'five', 'six'])
|
157
157
|
end
|
158
158
|
end
|
159
159
|
end
|
@@ -163,8 +163,8 @@ shared_examples 'lists' do
|
|
163
163
|
subject.rpush('key1', 'two')
|
164
164
|
subject.rpush('key1', 'three')
|
165
165
|
|
166
|
-
subject.rpop('key1').
|
167
|
-
subject.lrange('key1', 0, -1).
|
166
|
+
expect(subject.rpop('key1')).to eq('three')
|
167
|
+
expect(subject.lrange('key1', 0, -1)).to eq(['one', 'two'])
|
168
168
|
end
|
169
169
|
|
170
170
|
it 'should remove the last element in a list, append it to another list and return it' do
|
@@ -172,17 +172,24 @@ shared_examples 'lists' do
|
|
172
172
|
subject.rpush('key1', 'two')
|
173
173
|
subject.rpush('key1', 'three')
|
174
174
|
|
175
|
-
subject.rpoplpush('key1', 'key2').
|
175
|
+
expect(subject.rpoplpush('key1', 'key2')).to eq('three')
|
176
176
|
|
177
|
-
subject.lrange('key1', 0, -1).
|
178
|
-
subject.lrange('key2', 0, -1).
|
177
|
+
expect(subject.lrange('key1', 0, -1)).to eq(['one', 'two'])
|
178
|
+
expect(subject.lrange('key2', 0, -1)).to eq(['three'])
|
179
|
+
end
|
180
|
+
|
181
|
+
context 'when the source list is empty' do
|
182
|
+
it 'rpoplpush does not add anything to the destination list' do
|
183
|
+
subject.rpoplpush('source', 'destination')
|
184
|
+
expect(subject.lrange('destination', 0, -1)).to eq([])
|
185
|
+
end
|
179
186
|
end
|
180
187
|
|
181
188
|
it 'should append a value to a list' do
|
182
189
|
subject.rpush('key1', 'one')
|
183
190
|
subject.rpush('key1', 'two')
|
184
191
|
|
185
|
-
subject.lrange('key1', 0, -1).
|
192
|
+
expect(subject.lrange('key1', 0, -1)).to eq(['one', 'two'])
|
186
193
|
end
|
187
194
|
|
188
195
|
it 'should append a value to a list, only if the list exists' do
|
@@ -190,7 +197,7 @@ shared_examples 'lists' do
|
|
190
197
|
subject.rpushx('key1', 'two')
|
191
198
|
subject.rpushx('key2', 'two')
|
192
199
|
|
193
|
-
subject.lrange('key1', 0, -1).
|
194
|
-
subject.lrange('key2', 0, -1).
|
200
|
+
expect(subject.lrange('key1', 0, -1)).to eq(['one', 'two'])
|
201
|
+
expect(subject.lrange('key2', 0, -1)).to be_empty
|
195
202
|
end
|
196
203
|
end
|
data/spec/support/server.rb
CHANGED
@@ -4,11 +4,11 @@ shared_examples 'server' do
|
|
4
4
|
subject.set('key2', '2')
|
5
5
|
subject.set('key2', 'two')
|
6
6
|
|
7
|
-
subject.dbsize.
|
7
|
+
expect(subject.dbsize).to eq(2)
|
8
8
|
end
|
9
9
|
|
10
10
|
it 'should get information and statistics about the server' do
|
11
|
-
subject.info.key?('redis_version').
|
11
|
+
expect(subject.info.key?('redis_version')).to be_truthy
|
12
12
|
end
|
13
13
|
|
14
14
|
it 'should handle non-existent methods' do
|
@@ -19,16 +19,16 @@ shared_examples 'server' do
|
|
19
19
|
|
20
20
|
describe 'multiple databases' do
|
21
21
|
it 'should default to database 0' do
|
22
|
-
subject.inspect.
|
22
|
+
expect(subject.inspect).to match(%r#/0>$#)
|
23
23
|
end
|
24
24
|
|
25
25
|
it 'should select another database' do
|
26
26
|
subject.select(1)
|
27
|
-
subject.inspect.
|
27
|
+
expect(subject.inspect).to match(%r#/1>$#)
|
28
28
|
end
|
29
29
|
|
30
30
|
it 'should store keys separately in each database' do
|
31
|
-
subject.select(0).
|
31
|
+
expect(subject.select(0)).to eq('OK')
|
32
32
|
subject.set('key1', '1')
|
33
33
|
subject.set('key2', '2')
|
34
34
|
|
@@ -38,56 +38,56 @@ shared_examples 'server' do
|
|
38
38
|
subject.set('key5', '5')
|
39
39
|
|
40
40
|
subject.select(0)
|
41
|
-
subject.dbsize.
|
42
|
-
subject.exists('key1').
|
43
|
-
subject.exists('key3').
|
41
|
+
expect(subject.dbsize).to eq(2)
|
42
|
+
expect(subject.exists('key1')).to be_truthy
|
43
|
+
expect(subject.exists('key3')).to be_falsey
|
44
44
|
|
45
45
|
subject.select(1)
|
46
|
-
subject.dbsize.
|
47
|
-
subject.exists('key4').
|
48
|
-
subject.exists('key2').
|
46
|
+
expect(subject.dbsize).to eq(3)
|
47
|
+
expect(subject.exists('key4')).to be_truthy
|
48
|
+
expect(subject.exists('key2')).to be_falsey
|
49
49
|
|
50
50
|
subject.flushall
|
51
|
-
subject.dbsize.
|
51
|
+
expect(subject.dbsize).to eq(0)
|
52
52
|
|
53
53
|
subject.select(0)
|
54
|
-
subject.dbsize.
|
54
|
+
expect(subject.dbsize).to eq(0)
|
55
55
|
end
|
56
56
|
|
57
57
|
it 'should flush a database' do
|
58
58
|
subject.select(0)
|
59
59
|
subject.set('key1', '1')
|
60
60
|
subject.set('key2', '2')
|
61
|
-
subject.dbsize.
|
61
|
+
expect(subject.dbsize).to eq(2)
|
62
62
|
|
63
63
|
subject.select(1)
|
64
64
|
subject.set('key3', '3')
|
65
65
|
subject.set('key4', '4')
|
66
|
-
subject.dbsize.
|
66
|
+
expect(subject.dbsize).to eq(2)
|
67
67
|
|
68
|
-
subject.flushdb.
|
68
|
+
expect(subject.flushdb).to eq('OK')
|
69
69
|
|
70
|
-
subject.dbsize.
|
70
|
+
expect(subject.dbsize).to eq(0)
|
71
71
|
subject.select(0)
|
72
|
-
subject.dbsize.
|
72
|
+
expect(subject.dbsize).to eq(2)
|
73
73
|
end
|
74
74
|
|
75
75
|
it 'should flush all databases' do
|
76
76
|
subject.select(0)
|
77
77
|
subject.set('key3', '3')
|
78
78
|
subject.set('key4', '4')
|
79
|
-
subject.dbsize.
|
79
|
+
expect(subject.dbsize).to eq(2)
|
80
80
|
|
81
81
|
subject.select(1)
|
82
82
|
subject.set('key3', '3')
|
83
83
|
subject.set('key4', '4')
|
84
|
-
subject.dbsize.
|
84
|
+
expect(subject.dbsize).to eq(2)
|
85
85
|
|
86
|
-
subject.flushall.
|
86
|
+
expect(subject.flushall).to eq('OK')
|
87
87
|
|
88
|
-
subject.dbsize.
|
88
|
+
expect(subject.dbsize).to eq(0)
|
89
89
|
subject.select(0)
|
90
|
-
subject.dbsize.
|
90
|
+
expect(subject.dbsize).to eq(0)
|
91
91
|
end
|
92
92
|
end
|
93
93
|
end
|
data/spec/support/sets.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
shared_examples 'sets' do
|
2
2
|
it 'should add a member to a set' do
|
3
|
-
subject.sadd('key', 'value').
|
4
|
-
subject.sadd('key', 'value').
|
3
|
+
expect(subject.sadd('key', 'value')).to be_truthy
|
4
|
+
expect(subject.sadd('key', 'value')).to be_falsey
|
5
5
|
|
6
|
-
subject.smembers('key').
|
6
|
+
expect(subject.smembers('key')).to match_array(['value'])
|
7
7
|
end
|
8
8
|
|
9
9
|
it 'should raise error if command arguments count is not enough' do
|
@@ -15,20 +15,20 @@ shared_examples 'sets' do
|
|
15
15
|
subject.sinter(*[])
|
16
16
|
}.to raise_error(Redis::CommandError)
|
17
17
|
|
18
|
-
subject.smembers('key').
|
18
|
+
expect(subject.smembers('key')).to be_empty
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'should add multiple members to a set' do
|
22
|
-
subject.sadd('key', %w(value other something more)).
|
23
|
-
subject.sadd('key', %w(and additional values)).
|
24
|
-
subject.smembers('key').
|
22
|
+
expect(subject.sadd('key', %w(value other something more))).to eq(4)
|
23
|
+
expect(subject.sadd('key', %w(and additional values))).to eq(3)
|
24
|
+
expect(subject.smembers('key')).to match_array(['value', 'other', 'something', 'more', 'and', 'additional', 'values'])
|
25
25
|
end
|
26
26
|
|
27
27
|
it 'should get the number of members in a set' do
|
28
28
|
subject.sadd('key', 'val1')
|
29
29
|
subject.sadd('key', 'val2')
|
30
30
|
|
31
|
-
subject.scard('key').
|
31
|
+
expect(subject.scard('key')).to eq(2)
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'should subtract multiple sets' do
|
@@ -41,13 +41,13 @@ shared_examples 'sets' do
|
|
41
41
|
subject.sadd('key3', 'c')
|
42
42
|
subject.sadd('key3', 'e')
|
43
43
|
|
44
|
-
subject.sdiff('key1', 'key2', 'key3').
|
44
|
+
expect(subject.sdiff('key1', 'key2', 'key3')).to match_array(['b', 'd'])
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'should subtract from a nonexistent set' do
|
48
48
|
subject.sadd('key2', 'a')
|
49
49
|
subject.sadd('key2', 'b')
|
50
|
-
subject.sdiff('key1', 'key2').
|
50
|
+
expect(subject.sdiff('key1', 'key2')).to be_empty
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'should subtract multiple sets and store the resulting set in a key' do
|
@@ -61,7 +61,7 @@ shared_examples 'sets' do
|
|
61
61
|
subject.sadd('key3', 'e')
|
62
62
|
subject.sdiffstore('key', 'key1', 'key2', 'key3')
|
63
63
|
|
64
|
-
subject.smembers('key').
|
64
|
+
expect(subject.smembers('key')).to match_array(['b', 'd'])
|
65
65
|
end
|
66
66
|
|
67
67
|
it 'should intersect multiple sets' do
|
@@ -74,7 +74,7 @@ shared_examples 'sets' do
|
|
74
74
|
subject.sadd('key3', 'c')
|
75
75
|
subject.sadd('key3', 'e')
|
76
76
|
|
77
|
-
subject.sinter('key1', 'key2', 'key3').
|
77
|
+
expect(subject.sinter('key1', 'key2', 'key3')).to match_array(['c'])
|
78
78
|
end
|
79
79
|
|
80
80
|
it 'should intersect multiple sets and store the resulting set in a key' do
|
@@ -87,15 +87,15 @@ shared_examples 'sets' do
|
|
87
87
|
subject.sadd('key3', 'c')
|
88
88
|
subject.sadd('key3', 'e')
|
89
89
|
subject.sinterstore('key', 'key1', 'key2', 'key3')
|
90
|
-
subject.smembers('key').
|
90
|
+
expect(subject.smembers('key')).to match_array(['c'])
|
91
91
|
end
|
92
92
|
|
93
93
|
it 'should determine if a given value is a member of a set' do
|
94
94
|
subject.sadd('key1', 'a')
|
95
95
|
|
96
|
-
subject.sismember('key1', 'a').
|
97
|
-
subject.sismember('key1', 'b').
|
98
|
-
subject.sismember('key2', 'a').
|
96
|
+
expect(subject.sismember('key1', 'a')).to be_truthy
|
97
|
+
expect(subject.sismember('key1', 'b')).to be_falsey
|
98
|
+
expect(subject.sismember('key2', 'a')).to be_falsey
|
99
99
|
end
|
100
100
|
|
101
101
|
it 'should get all the members in a set' do
|
@@ -104,43 +104,43 @@ shared_examples 'sets' do
|
|
104
104
|
subject.sadd('key', 'c')
|
105
105
|
subject.sadd('key', 'd')
|
106
106
|
|
107
|
-
subject.smembers('key').
|
107
|
+
expect(subject.smembers('key')).to match_array(['a', 'b', 'c', 'd'])
|
108
108
|
end
|
109
109
|
|
110
110
|
it 'should move a member from one set to another' do
|
111
111
|
subject.sadd('key1', 'a')
|
112
112
|
subject.sadd('key1', 'b')
|
113
113
|
subject.sadd('key2', 'c')
|
114
|
-
subject.smove('key1', 'key2', 'a').
|
115
|
-
subject.smove('key1', 'key2', 'a').
|
114
|
+
expect(subject.smove('key1', 'key2', 'a')).to be_truthy
|
115
|
+
expect(subject.smove('key1', 'key2', 'a')).to be_falsey
|
116
116
|
|
117
|
-
subject.smembers('key1').
|
118
|
-
subject.smembers('key2').
|
117
|
+
expect(subject.smembers('key1')).to match_array(['b'])
|
118
|
+
expect(subject.smembers('key2')).to match_array(['c', 'a'])
|
119
119
|
end
|
120
120
|
|
121
121
|
it 'should remove and return a random member from a set' do
|
122
122
|
subject.sadd('key1', 'a')
|
123
123
|
subject.sadd('key1', 'b')
|
124
124
|
|
125
|
-
['a', 'b'].include?(subject.spop('key1')).
|
126
|
-
['a', 'b'].include?(subject.spop('key1')).
|
127
|
-
subject.spop('key1').
|
125
|
+
expect(['a', 'b'].include?(subject.spop('key1'))).to be_truthy
|
126
|
+
expect(['a', 'b'].include?(subject.spop('key1'))).to be_truthy
|
127
|
+
expect(subject.spop('key1')).to be_nil
|
128
128
|
end
|
129
129
|
|
130
130
|
it 'should get a random member from a set' do
|
131
131
|
subject.sadd('key1', 'a')
|
132
132
|
subject.sadd('key1', 'b')
|
133
133
|
|
134
|
-
['a', 'b'].include?(subject.spop('key1')).
|
134
|
+
expect(['a', 'b'].include?(subject.spop('key1'))).to be_truthy
|
135
135
|
end
|
136
136
|
|
137
137
|
it 'should remove a member from a set' do
|
138
138
|
subject.sadd('key1', 'a')
|
139
139
|
subject.sadd('key1', 'b')
|
140
|
-
subject.srem('key1', 'a').
|
141
|
-
subject.srem('key1', 'a').
|
140
|
+
expect(subject.srem('key1', 'a')).to be_truthy
|
141
|
+
expect(subject.srem('key1', 'a')).to be_falsey
|
142
142
|
|
143
|
-
subject.smembers('key1').
|
143
|
+
expect(subject.smembers('key1')).to match_array(['b'])
|
144
144
|
end
|
145
145
|
|
146
146
|
it "should remove the set's key once it's empty" do
|
@@ -149,7 +149,7 @@ shared_examples 'sets' do
|
|
149
149
|
subject.srem('key1', 'b')
|
150
150
|
subject.srem('key1', 'a')
|
151
151
|
|
152
|
-
subject.exists('key1').
|
152
|
+
expect(subject.exists('key1')).to be_falsey
|
153
153
|
end
|
154
154
|
|
155
155
|
it 'should add multiple sets' do
|
@@ -162,7 +162,7 @@ shared_examples 'sets' do
|
|
162
162
|
subject.sadd('key3', 'c')
|
163
163
|
subject.sadd('key3', 'e')
|
164
164
|
|
165
|
-
subject.sunion('key1', 'key2', 'key3').
|
165
|
+
expect(subject.sunion('key1', 'key2', 'key3')).to match_array(['a', 'b', 'c', 'd', 'e'])
|
166
166
|
end
|
167
167
|
|
168
168
|
it 'should add multiple sets and store the resulting set in a key' do
|
@@ -176,7 +176,7 @@ shared_examples 'sets' do
|
|
176
176
|
subject.sadd('key3', 'e')
|
177
177
|
subject.sunionstore('key', 'key1', 'key2', 'key3')
|
178
178
|
|
179
|
-
subject.smembers('key').
|
179
|
+
expect(subject.smembers('key')).to match_array(['a', 'b', 'c', 'd', 'e'])
|
180
180
|
end
|
181
181
|
|
182
182
|
describe 'srandmember' do
|
@@ -195,7 +195,7 @@ shared_examples 'sets' do
|
|
195
195
|
it 'is a random element from the set' do
|
196
196
|
random_element = subject.srandmember('key1')
|
197
197
|
|
198
|
-
['a', 'b', 'c'].
|
198
|
+
expect(['a', 'b', 'c']).to include(random_element)
|
199
199
|
end
|
200
200
|
end
|
201
201
|
|
@@ -203,7 +203,7 @@ shared_examples 'sets' do
|
|
203
203
|
it 'is an array of one random element from the set' do
|
204
204
|
subject.srandmember('key1', 1)
|
205
205
|
|
206
|
-
[['a'], ['b'], ['c']].
|
206
|
+
expect([['a'], ['b'], ['c']]).to include(subject.srandmember('key1', 1))
|
207
207
|
end
|
208
208
|
end
|
209
209
|
|
@@ -211,10 +211,10 @@ shared_examples 'sets' do
|
|
211
211
|
it 'is an array of two unique, random elements from the set' do
|
212
212
|
random_elements = subject.srandmember('key1', 2)
|
213
213
|
|
214
|
-
random_elements.
|
215
|
-
random_elements.uniq.
|
214
|
+
expect(random_elements.size).to eq(2)
|
215
|
+
expect(random_elements.uniq.size).to eq(2)
|
216
216
|
random_elements.all? do |element|
|
217
|
-
['a', 'b', 'c'].
|
217
|
+
expect(['a', 'b', 'c']).to include(element)
|
218
218
|
end
|
219
219
|
end
|
220
220
|
end
|
@@ -223,10 +223,10 @@ shared_examples 'sets' do
|
|
223
223
|
it 'is an array of 100 random elements from the set, some of which are repeated' do
|
224
224
|
random_elements = subject.srandmember('key1', -100)
|
225
225
|
|
226
|
-
random_elements.
|
227
|
-
random_elements.uniq.
|
226
|
+
expect(random_elements.size).to eq(100)
|
227
|
+
expect(random_elements.uniq.size).to be <= 3
|
228
228
|
random_elements.all? do |element|
|
229
|
-
['a', 'b', 'c'].
|
229
|
+
expect(['a', 'b', 'c']).to include(element)
|
230
230
|
end
|
231
231
|
end
|
232
232
|
end
|
@@ -235,9 +235,9 @@ shared_examples 'sets' do
|
|
235
235
|
it 'is an array of all of the elements from the set, none of which are repeated' do
|
236
236
|
random_elements = subject.srandmember('key1', 100)
|
237
237
|
|
238
|
-
random_elements.
|
239
|
-
random_elements.uniq.
|
240
|
-
random_elements.
|
238
|
+
expect(random_elements.size).to eq(3)
|
239
|
+
expect(random_elements.uniq.size).to eq(3)
|
240
|
+
expect(random_elements).to match_array(['a', 'b', 'c'])
|
241
241
|
end
|
242
242
|
end
|
243
243
|
end
|
@@ -246,11 +246,11 @@ shared_examples 'sets' do
|
|
246
246
|
before { subject.del('key1') }
|
247
247
|
|
248
248
|
it 'is nil without the extra parameter' do
|
249
|
-
subject.srandmember('key1').
|
249
|
+
expect(subject.srandmember('key1')).to be_nil
|
250
250
|
end
|
251
251
|
|
252
252
|
it 'is an empty array with an extra parameter' do
|
253
|
-
subject.srandmember('key1', 1).
|
253
|
+
expect(subject.srandmember('key1', 1)).to eq([])
|
254
254
|
end
|
255
255
|
end
|
256
256
|
end
|