Sha256: a3612fa2fc22e309370e1adbf8b8bcdca41edf8a011f92cf8a5330d3681e6e73

Contents?: true

Size: 1.34 KB

Versions: 32

Compression:

Stored size: 1.34 KB

Contents

require 'spec_helper'

describe '#rpoplpush(source, destination)' do
  before do
    @list1 = 'mock-redis-test:rpoplpush-list1'
    @list2 = 'mock-redis-test:rpoplpush-list2'

    @redises.lpush(@list1, 'b')
    @redises.lpush(@list1, 'a')

    @redises.lpush(@list2, 'y')
    @redises.lpush(@list2, 'x')
  end

  it 'returns the value moved' do
    @redises.rpoplpush(@list1, @list2).should == 'b'
  end

  it "returns false and doesn't append if source empty" do
    @redises.rpoplpush('empty', @list1).should be_nil
    @redises.lrange(@list1, 0, -1).should == %w[a b]
  end

  it 'takes the last element of destination and prepends it to source' do
    @redises.rpoplpush(@list1, @list2)

    @redises.lrange(@list1, 0, -1).should == %w[a]
    @redises.lrange(@list2, 0, -1).should == %w[b x y]
  end

  it 'rotates a list when source and destination are the same' do
    @redises.rpoplpush(@list1, @list1)
    @redises.lrange(@list1, 0, -1).should == %w[b a]
  end

  it 'removes empty lists' do
    @redises.llen(@list1).times { @redises.rpoplpush(@list1, @list2) }
    @redises.get(@list1).should be_nil
  end

  it 'raises an error for non-list source value' do
    @redises.set(@list1, 'string value')

    lambda do
      @redises.rpoplpush(@list1, @list2)
    end.should raise_error(Redis::CommandError)
  end

  it_should_behave_like 'a list-only command'
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
mock_redis-0.36.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.35.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.34.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.33.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.32.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.31.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.30.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.29.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.28.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.27.3 spec/commands/rpoplpush_spec.rb
mock_redis-0.27.2 spec/commands/rpoplpush_spec.rb
mock_redis-0.27.1 spec/commands/rpoplpush_spec.rb
mock_redis-0.27.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.26.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.25.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.24.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.23.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.22.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.21.0 spec/commands/rpoplpush_spec.rb
mock_redis-0.20.0 spec/commands/rpoplpush_spec.rb