/
hdel_spec.rb
77 lines (62 loc) · 1.92 KB
/
hdel_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
require 'spec_helper'
describe '#hdel(key, field)' do
before do
@key = 'mock-redis-test:hdel'
@redises.hset(@key, 'k1', 'v1')
@redises.hset(@key, 'k2', 'v2')
end
it 'returns 1 when it removes a field' do
@redises.hdel(@key, 'k1').should == 1
end
it 'returns 0 when it does not remove a field' do
@redises.hdel(@key, 'nonesuch').should == 0
end
it 'actually removes the field' do
@redises.hdel(@key, 'k1')
@redises.hget(@key, 'k1').should be_nil
end
it 'treats the field as a string' do
field = 2
@redises.hset(@key, field, 'two')
@redises.hdel(@key, field)
@redises.hget(@key, field).should be_nil
end
it 'removes only the field specified' do
@redises.hdel(@key, 'k1')
@redises.hget(@key, 'k2').should == 'v2'
end
it 'cleans up empty hashes' do
@redises.hdel(@key, 'k1')
@redises.hdel(@key, 'k2')
@redises.get(@key).should be_nil
end
it 'supports a variable number of arguments' do
@redises.hdel(@key, 'k1', 'k2')
@redises.get(@key).should be_nil
end
it 'treats variable arguments as strings' do
field = 2
@redises.hset(@key, field, 'two')
@redises.hdel(@key, field)
@redises.hget(@key, field).should be_nil
end
it 'supports a variable number of fields as array' do
@redises.hdel(@key, %w[k1 k2]).should == 2
@redises.hget(@key, 'k1').should be_nil
@redises.hget(@key, 'k2').should be_nil
@redises.get(@key).should be_nil
end
it 'supports a list of fields in various way' do
@redises.hdel(@key, ['k1'], 'k2').should == 2
@redises.hget(@key, 'k1').should be_nil
@redises.hget(@key, 'k2').should be_nil
@redises.get(@key).should be_nil
end
it 'raises error if an empty array is passed' do
expect { @redises.hdel(@key, []) }.to raise_error(
Redis::CommandError,
"ERR wrong number of arguments for 'hdel' command"
)
end
it_should_behave_like 'a hash-only command'
end