Sha256: 94b8110995ac9579053155e2f4f10f2cd8e26dca0a4bc157b779af842e9a4bee

Contents?: true

Size: 1.92 KB

Versions: 8

Compression:

Stored size: 1.92 KB

Contents

require 'spec_helper'

describe '#hdel(key, field)' do
  before do
    @key = 'mock-redis-test:hdel'
    @redises.hset(@key, 'k1', 'v1')
    @redises.hset(@key, 'k2', 'v2')
  end

  it 'returns 1 when it removes a field' do
    @redises.hdel(@key, 'k1').should == 1
  end

  it 'returns 0 when it does not remove a field' do
    @redises.hdel(@key, 'nonesuch').should == 0
  end

  it 'actually removes the field' do
    @redises.hdel(@key, 'k1')
    @redises.hget(@key, 'k1').should be_nil
  end

  it 'treats the field as a string' do
    field = 2
    @redises.hset(@key, field, 'two')
    @redises.hdel(@key, field)
    @redises.hget(@key, field).should be_nil
  end

  it 'removes only the field specified' do
    @redises.hdel(@key, 'k1')
    @redises.hget(@key, 'k2').should == 'v2'
  end

  it 'cleans up empty hashes' do
    @redises.hdel(@key, 'k1')
    @redises.hdel(@key, 'k2')
    @redises.get(@key).should be_nil
  end

  it 'supports a variable number of arguments' do
    @redises.hdel(@key, 'k1', 'k2')
    @redises.get(@key).should be_nil
  end

  it 'treats variable arguments as strings' do
    field = 2
    @redises.hset(@key, field, 'two')
    @redises.hdel(@key, field)
    @redises.hget(@key, field).should be_nil
  end

  it 'supports a variable number of fields as array' do
    @redises.hdel(@key, %w[k1 k2]).should == 2

    @redises.hget(@key, 'k1').should be_nil
    @redises.hget(@key, 'k2').should be_nil
    @redises.get(@key).should be_nil
  end

  it 'supports a list of fields in various way' do
    @redises.hdel(@key, ['k1'], 'k2').should == 2

    @redises.hget(@key, 'k1').should be_nil
    @redises.hget(@key, 'k2').should be_nil
    @redises.get(@key).should be_nil
  end

  it 'raises error if an empty array is passed' do
    expect { @redises.hdel(@key, []) }.to raise_error(
      Redis::CommandError,
      "ERR wrong number of arguments for 'hdel' command"
    )
  end

  it_should_behave_like 'a hash-only command'
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
mock_redis-0.36.0 spec/commands/hdel_spec.rb
mock_redis-0.35.0 spec/commands/hdel_spec.rb
mock_redis-0.34.0 spec/commands/hdel_spec.rb
mock_redis-0.33.0 spec/commands/hdel_spec.rb
mock_redis-0.32.0 spec/commands/hdel_spec.rb
mock_redis-0.31.0 spec/commands/hdel_spec.rb
mock_redis-0.30.0 spec/commands/hdel_spec.rb
mock_redis-0.29.0 spec/commands/hdel_spec.rb