spec/redis_spec.rb in redis-0.1.2 vs spec/redis_spec.rb in redis-0.2.0
- old
+ new
@@ -428,30 +428,39 @@
@r['dog:4:breed'] = 'terrier'
@r.rpush 'dogs', 4
@r.sort('dogs', :get => ['dog:*:name', 'dog:*:breed'], :limit => [0,1]).should == ['louie', 'mutt']
@r.sort('dogs', :get => ['dog:*:name', 'dog:*:breed'], :limit => [0,1], :order => 'desc alpha').should == ['taj', 'terrier']
end
+
+ it "should be able to store a SORT result" do
+ @r.rpush 'colors', 'red'
+ @r.rpush 'colors', 'yellow'
+ @r.rpush 'colors', 'orange'
+ @r.rpush 'colors', 'green'
+ @r.sort('colors', :limit => [1,2], :order => 'desc alpha', :store => 'sorted.colors')
+ @r.lrange('sorted.colors', 0, -1).should == ['red', 'orange']
+ end
#
it "should be able count the members of a zset" do
@r.set_add "set", 'key1'
@r.set_add "set", 'key2'
@r.zset_add 'zset', 1, 'set'
@r.zset_count('zset').should == 1
@r.delete('set')
@r.delete('zset')
end
- #
+ #
it "should be able add members to a zset" do
@r.set_add "set", 'key1'
@r.set_add "set", 'key2'
@r.zset_add 'zset', 1, 'set'
@r.zset_range('zset', 0, 1).should == ['set']
@r.zset_count('zset').should == 1
@r.delete('set')
@r.delete('zset')
end
- #
+ #
it "should be able delete members to a zset" do
@r.set_add "set", 'key1'
@r.set_add "set", 'key2'
@r.type?('set').should == "set"
@r.set_add "set2", 'key3'
@@ -465,11 +474,11 @@
@r.zset_count('zset').should == 1
@r.delete('set')
@r.delete('set2')
@r.delete('zset')
end
- #
+ #
it "should be able to get a range of values from a zset" do
@r.set_add "set", 'key1'
@r.set_add "set", 'key2'
@r.set_add "set2", 'key3'
@r.set_add "set2", 'key4'
@@ -485,11 +494,11 @@
@r.delete('set')
@r.delete('set2')
@r.delete('set3')
@r.delete('zset')
end
- #
+ #
it "should be able to get a reverse range of values from a zset" do
@r.set_add "set", 'key1'
@r.set_add "set", 'key2'
@r.set_add "set2", 'key3'
@r.set_add "set2", 'key4'
@@ -505,11 +514,11 @@
@r.delete('set')
@r.delete('set2')
@r.delete('set3')
@r.delete('zset')
end
- #
+ #
it "should be able to get a range by score of values from a zset" do
@r.set_add "set", 'key1'
@r.set_add "set", 'key2'
@r.set_add "set2", 'key3'
@r.set_add "set2", 'key4'
@@ -628,20 +637,22 @@
it "should raise error when invoke SYNC" do
lambda { @r.sync }.should raise_error
end
it "should handle multiple servers" do
- require 'dist_redis'
+ require 'redis/dist_redis'
@r = DistRedis.new(:hosts=> ['localhost:6379', '127.0.0.1:6379'], :db => 15)
100.times do |idx|
@r[idx] = "foo#{idx}"
end
100.times do |idx|
@r[idx].should == "foo#{idx}"
end
+
+ @r.keys('*').sort.first.should == "0"
end
it "should be able to pipeline writes" do
@r.pipelined do |pipeline|
pipeline.lpush 'list', "hello"
@@ -663,6 +674,79 @@
r.stub!(:connect_to)
r.should_receive(:call_command).with(['auth', 'secret'])
r.connect_to_server
end
+ it "should run MULTI without a block" do
+ @r.multi
+ @r.get("key1").should == "QUEUED"
+ @r.discard
+ end
+
+ it "should run MULTI/EXEC with a block" do
+ @r.multi do
+ @r.set "key1", "value1"
+ end
+
+ @r.get("key1").should == "value1"
+
+ begin
+ @r.multi do
+ @r.set "key2", "value2"
+ raise "Some error"
+ @r.set "key3", "value3"
+ end
+ rescue
+ end
+
+ @r.get("key2").should be_nil
+ @r.get("key3").should be_nil
+ end
+
+ it "should yield the Redis object when using #multi with a block" do
+ @r.multi do |multi|
+ multi.set "key1", "value1"
+ end
+
+ @r.get("key1").should == "value1"
+ end
+
+ it "can set and get hash values" do
+ @r.hset("rush", "signals", "1982").should be_true
+ @r.hexists("rush", "signals").should be_true
+ @r.hget("rush", "signals").should == "1982"
+ end
+
+ it "can delete hash values" do
+ @r.hset("rush", "YYZ", "1981")
+ @r.hdel("rush", "YYZ").should be_true
+ @r.hexists("rush", "YYZ").should be_false
+ end
+
+ describe "with some hash values" do
+ before(:each) do
+ @r.hset("rush", "permanent waves", "1980")
+ @r.hset("rush", "moving pictures", "1981")
+ @r.hset("rush", "signals", "1982")
+ end
+
+ it "can get the length of the hash" do
+ @r.hlen("rush").should == 3
+ @r.hlen("yyz").should be_zero
+ end
+
+ it "can get the keys and values of the hash" do
+ @r.hkeys("rush").should == ["permanent waves", "moving pictures", "signals"]
+ @r.hvals("rush").should == %w[1980 1981 1982]
+ @r.hvals("yyz").should be_empty
+ end
+
+ it "returns a hash for HGETALL" do
+ @r.hgetall("rush").should == {
+ "permanent waves" => "1980",
+ "moving pictures" => "1981",
+ "signals" => "1982"
+ }
+ @r.hgetall("yyz").should == {}
+ end
+ end
end