Sha256: 816eba85021dddb74d4485b442ea74005da3893b51fd3070d74d7a971cf88443

Contents?: true

Size: 1.9 KB

Versions: 1

Compression:

Stored size: 1.9 KB

Contents

require 'spec_helper'

module SandthornDriverEventStore
  describe EventAccess do

    before do
      prepare_for_test
    end

    let(:db) { Sequel.connect(event_store_url)}
    let(:aggregate_id) { SecureRandom.uuid }
    let(:aggregate) do
      aggregate_access.register_aggregate(aggregate_id, "foo")
    end
    let(:storage) { return event_store_driver.execute { |db| return db; } }
    let(:access) { EventAccess.new(storage) }

    let(:events) do
      [
        {
          aggregate_version: 1,
          aggregate_id: aggregate_id,
          aggregate_type: "Foo",
          event_name: "new",
          event_args: {test: "new_data"}
        },{
          aggregate_version: 2,
          aggregate_id: aggregate_id,
          aggregate_type: "Foo",
          event_name: "foo",
          event_args: {test: "foo_data"}
        }
      ]
    end

    describe "#store_events" do

      it "handles both arrays and single events" do
        access.store_events(events[0])
        events = access.find_events_by_aggregate_id(aggregate_id)
        expect(events.length).to eq(1)
      end

      context "when the aggregate version of an event is incorrect" do
        it "throws an error" do
          event = { aggregate_version: 100, aggregate_id: aggregate_id, aggregate_type: "Foo", event_name: "new", event_data: "noop" }
          expect { access.store_events([event])}.to raise_error
        end
      end
    end

    describe "#find_events_by_aggregate_id" do
      context "when there are events" do
        it "returns correct events" do
          access.store_events(events)

          stored_events = access.find_events_by_aggregate_id(aggregate_id)
          expect(stored_events.size).to eq(events.size)
          expect(stored_events).to all(respond_to(:merge))
          stored_events.each { |event|
            expect(event[:aggregate_id]).to eql aggregate_id
          }
        end
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sandthorn_driver_event_store-0.0.1 spec/event_access_spec.rb