File: store_test.rb

package info (click to toggle)
ruby-redis-store 1.11.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 320 kB
  • sloc: ruby: 1,514; makefile: 6
file content (68 lines) | stat: -rw-r--r-- 1,734 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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