Sha256: 99290c14a950cc61b5b46892b2c2c2542fe27270249ab9a8ac75276566491d95

Contents?: true

Size: 1.94 KB

Versions: 2

Compression:

Stored size: 1.94 KB

Contents

require 'spec_helper'

class Foo; end
class Bar; end

module SandthornDriverSequel

	describe EventStore do
		before(:each) { prepare_for_test }
		context "when asking for aggregates to snapshot" do
			let(:aggregates) {
				[{id: "1", class_name: Foo}, {id: "2", class_name: Bar},{id: "3", class_name: Foo}]}

			before(:each) {save_test_events}

			context "when asking for type 'Bar' and max event count 5" do
				let(:needs_snapshot) { event_store.obsolete_snapshots aggregate_types: [Bar], max_event_distance: 5 }
				context "and no snapshots exist" do
					it "should return that id 2 with class Bar need to be snapshotted" do
						expect(needs_snapshot.length).to eql 1
						expect(needs_snapshot.first[:aggregate_id]).to eql aggregates[1][:id]
						expect(needs_snapshot.first[:aggregate_type]).to eql "Bar"
					end
				end
				context "and a recent snapshot exists" do
					before(:each) do
            snapshot_data = { event_data: "YO MAN", aggregate_version: 11 }
            event_store.save_snapshot(snapshot_data, aggregates[1][:id])
          end
					it "should return nil" do
						expect(needs_snapshot).to be_empty
					end
				end
			end


			def save_test_events
				for_1 = event_generator count: 4, start_at: 1
				for_2 = event_generator count: 3, start_at: 1
				for_3 = event_generator count: 6, start_at: 1
				for_2_2 = event_generator count: 10, start_at: 4
				for_1_2 = event_generator count: 1, start_at: 5
				save_events for_1, 0
				save_events for_2, 1
				save_events for_3, 2
				save_events for_1_2, 0
				save_events for_2_2, 1
			end
			def save_events events, aggregate_index
				event_store.save_events events, aggregates[aggregate_index][:id], aggregates[aggregate_index][:class_name]
			end

			def event_generator count: 1, start_at: 1
				events = []
				i = 0
				while i < count do
					events << { aggregate_version: i+start_at, event_data: nil, event_name: "event_foo_#{i}" }
					i += 1
				end
				events
			end
		end
	end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sandthorn_driver_sequel-2.0.1 spec/asking_for_aggregates_to_snapshot_spec.rb
sandthorn_driver_sequel-2.0.0 spec/asking_for_aggregates_to_snapshot_spec.rb