80 lines
2.2 KiB
Ruby
80 lines
2.2 KiB
Ruby
|
require 'spec_helper'
|
||
|
require 'rack-mini-profiler'
|
||
|
require 'mini_profiler/page_timer_struct'
|
||
|
require 'mini_profiler/storage/abstract_store'
|
||
|
require 'mini_profiler/storage/redis_store'
|
||
|
|
||
|
describe Rack::MiniProfiler::RedisStore do
|
||
|
|
||
|
context 'establishing a connection to something other than the default' do
|
||
|
before do
|
||
|
@store = Rack::MiniProfiler::RedisStore.new(:db=>2)
|
||
|
end
|
||
|
|
||
|
describe "connection" do
|
||
|
it 'can still store the resulting value' do
|
||
|
page_struct = Rack::MiniProfiler::PageTimerStruct.new({})
|
||
|
page_struct['Id'] = "XYZ"
|
||
|
page_struct['Random'] = "random"
|
||
|
@store.save(page_struct)
|
||
|
end
|
||
|
|
||
|
it 'uses the correct db' do
|
||
|
# redis is private, and possibly should remain so?
|
||
|
underlying_client = @store.send(:redis).client
|
||
|
|
||
|
underlying_client.db.should == 2
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'passing in a Redis connection' do
|
||
|
describe 'connection' do
|
||
|
it 'uses the passed in object rather than creating a new one' do
|
||
|
connection = double("redis-connection")
|
||
|
store = Rack::MiniProfiler::RedisStore.new(:connection => connection)
|
||
|
|
||
|
connection.should_receive(:get)
|
||
|
Redis.should_not_receive(:new)
|
||
|
store.load("XYZ")
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
context 'page struct' do
|
||
|
|
||
|
before do
|
||
|
@store = Rack::MiniProfiler::RedisStore.new(nil)
|
||
|
end
|
||
|
|
||
|
describe 'storage' do
|
||
|
|
||
|
it 'can store a PageStruct and retrieve it' do
|
||
|
page_struct = Rack::MiniProfiler::PageTimerStruct.new({})
|
||
|
page_struct['Id'] = "XYZ"
|
||
|
page_struct['Random'] = "random"
|
||
|
@store.save(page_struct)
|
||
|
page_struct = @store.load("XYZ")
|
||
|
page_struct['Random'].should == "random"
|
||
|
page_struct['Id'].should == "XYZ"
|
||
|
end
|
||
|
|
||
|
it 'can list unviewed items for a user' do
|
||
|
@store.set_unviewed('a', 'XYZ')
|
||
|
@store.set_unviewed('a', 'ABC')
|
||
|
@store.get_unviewed_ids('a').should =~ ['XYZ', 'ABC']
|
||
|
end
|
||
|
|
||
|
it 'can set an item to viewed once it is unviewed' do
|
||
|
@store.set_unviewed('a', 'XYZ')
|
||
|
@store.set_unviewed('a', 'ABC')
|
||
|
@store.set_viewed('a', 'XYZ')
|
||
|
@store.get_unviewed_ids('a').should == ['ABC']
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
end
|