Sha256: 7385c80fdd3987f64d126f2cce097757d222f505908c2a4530a94a82f7bc9045

Contents?: true

Size: 1.5 KB

Versions: 4

Compression:

Stored size: 1.5 KB

Contents

require 'spec_helper'

describe 'mock data' do
  class Diagnosis < Sample::Request
    def real(diagnosis)
    end

    def mock(diagnosis)
      service.data.store(:diagnosis, service.data.fetch(:diagnosis) + [diagnosis])
    end
  end

  class Treat < Sample::Request
    def real(treatment)
    end

    def mock(treatment)
      service.data[:treatments] += [treatment]
    end
  end

  shared_examples 'mock_data#backend' do |backend, options|
    it 'should store mock data' do
      Sample.mock!
      Sample::Mock.store_in(backend, options)
      Sample.reset!

      p = Sample.new
      p.diagnosis('sick')
      expect(p.data[:diagnosis]).to eq(['sick'])

      p.reset!

      expect(p.data[:diagnosis]).to eq([])

      p.treat('healthy')
      expect(p.data[:treatments]).to eq(['healthy'])

      Sample.reset!

      expect(p.data[:treatments]).to eq([])
    end
  end

  context 'with a storage backend' do
    describe 'Cistern::Data::Hash' do
      include_examples 'mock_data#backend', :hash
    end

    describe 'Cistern::Data::Redis' do
      include_examples 'mock_data#backend', :redis

      context 'with an explicit client' do
        before(:each) do
          @other = Redis::Namespace.new('other_cistern', Redis.new)
          @other.set('x', 'y')
        end

        include_examples 'mock_data#backend', :redis, client: Redis::Namespace.new('cistern', Redis.new)

        after(:each) do
          expect(@other.get('x')).to eq('y')
          @other.del('x')
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cistern-2.2.7 spec/mock_data_spec.rb
cistern-2.2.6 spec/mock_data_spec.rb
cistern-2.2.5 spec/mock_data_spec.rb
cistern-2.2.4 spec/mock_data_spec.rb