Sha256: d48ed992adcdf88b928705966fbaead3175713e967537f9c0c5d05d01f679392

Contents?: true

Size: 1.72 KB

Versions: 3

Compression:

Stored size: 1.72 KB

Contents

describe AmaLayout::Notifications::RedisStore do
  subject do
    described_class.new(
      db: 4,
      namespace: 'test_notifications',
      host: 'localhost'
    )
  end

  around(:each) do |example|
    subject.clear
    example.run
    subject.clear
  end

  describe '#get' do
    context 'when a key is not present' do
      it 'returns nil' do
        expect(subject.get('missing')).to be nil
      end
    end

    context 'when a key is present' do
      before(:each) do
        subject.set('key', 'value')
      end

      it 'returns the value' do
        expect(subject.get('key')).to eq('value')
      end
    end

    context 'with a default value' do
      it 'sets a nil key to the default value' do
        subject.get('missing', default: 'test')
        expect(subject.get('missing')).to eq('test')
      end
    end
  end

  describe '#set' do
    it 'sets the value for a given key' do
      subject.set('test', 'value')
      expect(subject.get('test')).to eq('value')
    end
  end

  describe '#delete' do
    context 'when a value is deleted' do
      before(:each) do
        subject.set('key', 'value')
      end

      it 'deletes the key' do
        subject.delete('key')
        expect(subject.get('key')).to be nil
      end
    end
  end

  describe '#transaction' do
    it 'does not commit if an exception is raised' do
      begin
        subject.transaction do |store|
          store.set('key', 'value')
          raise StandardError
        end
      rescue StandardError
      end
      expect(subject.get('key')).to be nil
    end

    it 'commits to redis successfully' do
      subject.transaction do |store|
        store.set('key', 'value')
      end
      expect(subject.get('key')).to eq('value')
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ama_layout-11.5.1 spec/ama_layout/notifications/redis_store_spec.rb
ama_layout-11.5.0 spec/ama_layout/notifications/redis_store_spec.rb
ama_layout-11.4.0 spec/ama_layout/notifications/redis_store_spec.rb