require 'rails_helper'
require 'cache'
describe Cache do
let :cache do
Cache.new
end
it "supports fixnum" do
cache.write("num", 1)
expect(cache.read("num")).to eq(1)
it "supports hash" do
hash = {a: 1, b: [1,2,3]}
cache.write("hash", hash)
expect(cache.read("hash")).to eq(hash)
it "can be cleared" do
$redis.set("boo", "boo")
cache.write("hello0", "world")
cache.write("hello1", "world")
cache.clear
expect($redis.get("boo")).to eq("boo")
expect(cache.read("hello0")).to eq(nil)
it "can delete correctly" do
cache.fetch("key", expires_in: 1.minute) do
"test"
cache.delete("key")
expect(cache.fetch("key")).to eq(nil)
it "calls setex in redis" do
cache.delete("bla")
key = cache.namespaced_key("key")
"bob"
expect($redis.ttl(key)).to be_within(2.seconds).of(1.minute)
# we always expire withing a day
cache.fetch("bla"){ "hi" }
key = cache.namespaced_key("bla")
expect($redis.ttl(key)).to be_within(2.seconds).of(1.day)
it "can store and fetch correctly" do
cache.delete "key"
r = cache.fetch "key" do
expect(r).to eq("bob")
it "can fetch existing correctly" do
cache.write "key", "bill"
expect(r).to eq("bill")