Sha256: 7e2bd23e4de9490ea893c47552f1ec8ccbfd730a9444a239f37608bd9363e684

Contents?: true

Size: 1.67 KB

Versions: 12

Compression:

Stored size: 1.67 KB

Contents

require 'test_helper'

describe Redis::Store do
  def setup
    @store  = Redis::Store.new
    @client = @store.instance_variable_get(:@client)
  end

  def teardown
    @store.flushdb
    @store.quit
  end

  it "returns useful informations about the server" do
    @store.to_s.must_equal("Redis Client connected to #{@client.host}:#{@client.port} against DB #{@client.db}")
  end

  it "must force reconnection" do
    @client.expects(:reconnect)
    @store.reconnect
  end

  describe '#set' do
    describe 'with expiry' do
      let(:options) { { :expire_after => 3600 } }

      it 'must not double marshall' do
        Marshal.expects(:dump).once

        @store.set('key', 'value', options)
      end
    end

    describe 'with ex and nx' do
      let(:key) { 'key' }
      let(:mock_value) { 'value' }
      let(:options) { { nx: true, ex: 3600 } }

      it 'must pass on options' do
        Marshal.expects(:dump).times(4)

        # without options no ex or nx will be set
        @store.del(key)
        @store.set(key, mock_value, {}).must_equal 'OK'
        @store.set(key, mock_value, {}).must_equal 'OK'
        @store.ttl(key).must_equal -1

        # with ex and nx options, the key can only be set once and a ttl will be set
        @store.del(key)
        @store.set(key, mock_value, options).must_equal true
        @store.set(key, mock_value, options).must_equal false
        @store.ttl(key).must_equal 3600
      end
    end
  end

  describe '#setnx' do
    describe 'with expiry' do
      let(:options) { { :expire_after => 3600 } }

      it 'must not double marshall' do
        Marshal.expects(:dump).once

        @store.setnx('key', 'value', options)
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
redis-store-1.9.1 test/redis/store_test.rb
redis-store-1.9.0 test/redis/store_test.rb
redis-store-1.8.2 test/redis/store_test.rb
redis-store-1.8.1 test/redis/store_test.rb
redis-store-1.8.0 test/redis/store_test.rb
redis-store-1.6.0 test/redis/store_test.rb
redis-store-1.5.0 test/redis/store_test.rb
redis-store-1.4.1 test/redis/store_test.rb
redis-store-1.4.0 test/redis/store_test.rb
redis-store-1.3.0 test/redis/store_test.rb
redis-store-1.2.0 test/redis/store_test.rb
redis-store-1.2.0.pre test/redis/store_test.rb