spec/keys_spec.rb in fakeredis-0.4.1 vs spec/keys_spec.rb in fakeredis-0.4.2

- old
+ new

@@ -10,11 +10,11 @@ it "should delete a key" do @client.set("key1", "1") @client.set("key2", "2") @client.del("key1", "key2") - @client.get("key1").should == nil + @client.get("key1").should be == nil end it "should delete multiple keys" do @client.set("key1", "1") @client.set("key2", "2") @@ -30,43 +30,43 @@ end it "should determine if a key exists" do @client.set("key1", "1") - @client.exists("key1").should == true - @client.exists("key2").should == false + @client.exists("key1").should be == true + @client.exists("key2").should be == false end it "should set a key's time to live in seconds" do @client.set("key1", "1") @client.expire("key1", 1) - @client.ttl("key1").should == 1 + @client.ttl("key1").should be == 1 end it "should set the expiration for a key as a UNIX timestamp" do @client.set("key1", "1") @client.expireat("key1", Time.now.to_i + 2) - @client.ttl("key1").should == 2 + @client.ttl("key1").should be == 2 end - it 'should not have an expiration after re-set' do + it "should not have an expiration after re-set" do @client.set("key1", "1") @client.expireat("key1", Time.now.to_i + 2) @client.set("key1", "1") - @client.ttl("key1").should == -1 + @client.ttl("key1").should be == -1 end it "should not have a ttl if expired" do @client.set("key1", "1") @client.expireat("key1", Time.now.to_i) - @client.ttl("key1").should == -1 + @client.ttl("key1").should be == -1 end - + it "should not find a key if expired" do @client.set("key1", "1") @client.expireat("key1", Time.now.to_i) @client.get("key1").should be_nil @@ -75,19 +75,19 @@ it "should not find multiple keys if expired" do @client.set("key1", "1") @client.set("key2", "2") @client.expireat("key1", Time.now.to_i) - @client.mget("key1", "key2").should == [nil, "2"] + @client.mget("key1", "key2").should be == [nil, "2"] end it "should only find keys that aren't expired" do @client.set("key1", "1") @client.set("key2", "2") @client.expireat("key1", Time.now.to_i) - @client.keys.should == ["key2"] + @client.keys.should be == ["key2"] end it "should not exist if expired" do @client.set("key1", "1") @client.expireat("key1", Time.now.to_i) @@ -106,59 +106,139 @@ end it "should remove the expiration from a key" do @client.set("key1", "1") @client.expireat("key1", Time.now.to_i + 1) - @client.persist("key1").should == true - @client.persist("key1").should == false + @client.persist("key1").should be == true + @client.persist("key1").should be == false - @client.ttl("key1").should == -1 + @client.ttl("key1").should be == -1 end it "should return a random key from the keyspace" do @client.set("key1", "1") @client.set("key2", "2") - ["key1", "key2"].include?(@client.randomkey).should == true + ["key1", "key2"].include?(@client.randomkey).should be == true end it "should rename a key" do @client.set("key1", "2") @client.rename("key1", "key2") - @client.get("key1").should == nil - @client.get("key2").should == "2" + @client.get("key1").should be == nil + @client.get("key2").should be == "2" end it "should rename a key, only if new key does not exist" do @client.set("key1", "1") @client.set("key2", "2") @client.set("key3", "3") @client.renamenx("key1", "key2") @client.renamenx("key3", "key4") - @client.get("key1").should == "1" - @client.get("key2").should == "2" - @client.get("key3").should == nil - @client.get("key4").should == "3" + @client.get("key1").should be == "1" + @client.get("key2").should be == "2" + @client.get("key3").should be == nil + @client.get("key4").should be == "3" end it "should sort the elements in a list, set or sorted set" do pending "SORT Command not implemented yet" end it "should determine the type stored at key" do @client.set("key1", "1") - @client.type("key1").should == "string" - @client.type("key0").should == "none" + @client.type("key1").should be == "string" + @client.type("key0").should be == "none" end it "should convert the value into a string before storing" do @client.set("key1", 1) - @client.get("key1").should == "1" + @client.get("key1").should be == "1" @client.setex("key2", 30, 1) - @client.get("key2").should == "1" + @client.get("key2").should be == "1" + + @client.getset("key3", 1) + @client.get("key3").should be == "1" + end + + it "should convert the key into a string before storing" do + @client.set(123, "foo") + @client.keys.should include("123") + @client.get("123").should be == "foo" + + @client.setex(456, 30, "foo") + @client.keys.should include("456") + @client.get("456").should be == "foo" + + @client.getset(789, "foo") + @client.keys.should include("789") + @client.get("789").should be == "foo" + end + + it "should only operate against keys containing string values" do + @client.sadd("key1", "one") + lambda { @client.get("key1") }.should raise_error(Redis::CommandError, "ERR Operation against a key holding the wrong kind of value") + lambda { @client.getset("key1", 1) }.should raise_error(Redis::CommandError, "ERR Operation against a key holding the wrong kind of value") + + @client.hset("key2", "one", "two") + lambda { @client.get("key2") }.should raise_error(Redis::CommandError, "ERR Operation against a key holding the wrong kind of value") + lambda { @client.getset("key2", 1) }.should raise_error(Redis::CommandError, "ERR Operation against a key holding the wrong kind of value") + end + + it "should move a key from one database to another successfully" do + @client.select(0) + @client.set("key1", "1") + + @client.move("key1", 1).should be == true + + @client.select(0) + @client.get("key1").should be_nil + + @client.select(1) + @client.get("key1").should be == "1" + end + + it "should fail to move a key that does not exist in the source database" do + @client.select(0) + @client.get("key1").should be_nil + + @client.move("key1", 1).should be == false + + @client.select(0) + @client.get("key1").should be_nil + + @client.select(1) + @client.get("key1").should be_nil + end + + it "should fail to move a key that exists in the destination database" do + @client.select(0) + @client.set("key1", "1") + + @client.select(1) + @client.set("key1", "2") + + @client.select(0) + @client.move("key1", 1).should be == false + + @client.select(0) + @client.get("key1").should be == "1" + + @client.select(1) + @client.get("key1").should be == "2" + end + + it "should fail to move a key to the same database" do + @client.select(0) + @client.set("key1", "1") + + lambda { @client.move("key1", 0) }.should raise_error(Redis::CommandError, "ERR source and destination objects are the same") + + @client.select(0) + @client.get("key1").should be == "1" end end end