Sha256: ee83a0b4175705c8ca6d9501af09b2b11ce54beb81fcd95641fba4eabf6e9c9a

Contents?: true

Size: 979 Bytes

Versions: 2

Compression:

Stored size: 979 Bytes

Contents

require "blobby/composite_store"
require "blobby/in_memory_store"
require "blobby/store_behaviour"

describe Blobby::CompositeStore do

  let(:storeA) { Blobby::InMemoryStore.new }
  let(:storeB) { Blobby::InMemoryStore.new }
  let(:stores) { [storeA, storeB] }

  subject do
    described_class.new(stores)
  end

  it_behaves_like Blobby::Store

  let(:key) { "KEY" }
  let(:content) { "CONTENT" }

  describe "#write" do

    before do
      subject[key].write(content)
    end

    it "writes to all stores" do
      stores.all? do |store|
        expect(store[key].read).to eq(content)
      end
    end

  end

  context "for a key that only exists in the second store" do

    before do
      storeB[key].write(content)
    end

    describe "#exists?" do
      it "is true" do
        expect(subject[key]).to exist
      end
    end

    describe "#read" do
      it "returns the content" do
        expect(subject[key].read).to eq(content)
      end
    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
blobby-1.0.1 spec/blobby/composite_store_spec.rb
blobby-1.0.0 spec/blobby/composite_store_spec.rb