public void SnapshotStoreLoadsSnapshotFromPersistentStore() { var persistentSnapshotStore = new InMemorySnapshotStore(); var snapshotStore = new SnapshotStore(persistentSnapshotStore); var guid = Guid.NewGuid(); var aggregate = new TestSnapshotAggregate(guid, "Test aggregate"); snapshotStore.SaveSnapshot(aggregate); snapshotStore.GetSnapshot(guid).Should().NotBeNull(); snapshotStore.GetSnapshot(guid).AggregateId.Should().Be(guid); }
public when_getting_the_snapshot() { Snapshot = new Snapshot(Guid.NewGuid(), 1, new TestSnapshot { Name = "Name" }); SnapshotStore.SaveSnapshot(Snapshot); _retrieved = SnapshotStore.GetSnapshot(Snapshot.EventSourceId, long.MaxValue); }
public void SetUp() { Snapshot = new Snapshot(Guid.NewGuid(), 1, new TestSnapshot { Name = "Name" }); SnapshotStore.SaveSnapshot(Snapshot); _retrieved = SnapshotStore.GetSnapshot(Snapshot.EventSourceId, long.MaxValue); }
public void SetUp() { Snapshot = new TestSnapshot { EventSourceId = Guid.NewGuid(), EventSourceVersion = 1, Name = "TestName" }; SnapshotStore.SaveShapshot(Snapshot); _retrieved = SnapshotStore.GetSnapshot(Snapshot.EventSourceId); }
public void SnapshotStoreShouldNotThrowExceptionWhenNoSnapshotIsAvailable() { var persistentSnapshotStore = new InMemorySnapshotStore(); var snapshotStore = new SnapshotStore(persistentSnapshotStore); Action act = () => snapshotStore.GetSnapshot(Guid.NewGuid()); act.ShouldNotThrow(); }
public void ReturnExactMatch() { var streamId = Guid.NewGuid(); var snapshot1 = new Snapshot(streamId, 1, new Object()); var snapshot2 = new Snapshot(streamId, 10, new Object()); SnapshotStore.Save(snapshot1); SnapshotStore.Save(snapshot2); Assert.Equal(10, SnapshotStore.GetSnapshot(typeof(Object), streamId, 10).Version); }
public void ReturnImmediatelyPreceedingVersion() { var streamId = Guid.NewGuid(); var snapshot1 = new Snapshot(streamId, 1, new Object()); var snapshot2 = new Snapshot(streamId, 10, new Object()); SnapshotStore.Save(snapshot1); SnapshotStore.Save(snapshot2); Assert.Equal(10, SnapshotStore.GetSnapshot(typeof(Object), streamId, 20).Version); }
public void SnapshotStoreShouldReturnTheCorrectAggregateType() { var persistentSnapshotStore = new InMemorySnapshotStore(); var snapshotStore = new SnapshotStore(persistentSnapshotStore); var guid = Guid.NewGuid(); var aggregate = new TestSnapshotAggregate(guid, "Test aggregate"); snapshotStore.SaveSnapshot(aggregate); var snapshot = snapshotStore.GetSnapshot(guid) as TestAggregateSnapshot; snapshot.Should().NotBeNull(); }
public void SnapshotShouldBeSuccessfullyAppliedToAggregate() { var persistentSnapshotStore = new InMemorySnapshotStore(); var snapshotStore = new SnapshotStore(persistentSnapshotStore); var guid = Guid.NewGuid(); const string name = "Test aggregate"; var aggregate = new TestSnapshotAggregate(guid, name); snapshotStore.SaveSnapshot(aggregate); var snapshot = snapshotStore.GetSnapshot(guid) as TestAggregateSnapshot; var newAggregate = new TestSnapshotAggregate(Guid.NewGuid(), String.Empty); newAggregate.SetSnapshot(snapshot); newAggregate.Id.Should().Be(guid); newAggregate.ReturnNameForTest().Should().Be(name); }
public void ShouldGenerateSnapshot() { //Given var events = new List <object>(); Guid id = Guid.NewGuid(); const string name = "test"; var bus = new E05.Test.Infrastructure.Bus(); var snapshotStore = new SnapshotStore(); var eventsSerializer = EventsSerializer.GetEventSerializer(); var eventStore = new EventStore(bus, eventsSerializer, snapshotStore); var commandHandler = new InventoryCommandHandler(bus, eventStore); var projection = new ItemsProjection(bus); bus.Send(new CreateInventoryItem(id, name)); //When var i = 0; for (; i < 11; i++) { var lastProjection = projection.GetById(id); bus.Send(new ModifyItemName(id, "new" + i, lastProjection.Version)); } //Then var items = projection.GetAll().ToList(); Assert.AreEqual(1, items.Count); var kvp = items[0]; Assert.AreEqual(id, kvp.Id); Assert.AreEqual("new10", kvp.Name); Assert.AreEqual(11, kvp.Version); var snapshotData = snapshotStore.GetSnapshot(id); Assert.AreEqual(10, snapshotData.Version); var snapshot = JsonConvert.DeserializeObject <InventorySnapshot>(snapshotData.Data); Assert.AreEqual("new9", snapshot.Name); }
public T GetById <T>(Guid id) where T : AggregateRoot { var aggregateRoot = (T)Activator.CreateInstance(typeof(T)); IEnumerable <IEvent> events; var snapshotData = _snapshotStore.GetSnapshot(id); if (snapshotData == null) { events = Events .Where(e => e.Id == id) .Select(ev => _eventsSerializer.DeserializeEvent(ev.Data, ev.Type)); } else { var snapshottableAggregateRoot = aggregateRoot as SnapshottableAggregateRoot; snapshottableAggregateRoot.LoadSnapshot(snapshotData.Data); events = Events .Where(e => e.Id == id && e.Version > aggregateRoot.Version) .Select(ev => _eventsSerializer.DeserializeEvent(ev.Data, ev.Type)); } aggregateRoot.LoadFromHistory(events); return(aggregateRoot); }
public void ReturnNullIfNoSnapshots() { var streamId = Guid.NewGuid(); Assert.Null(SnapshotStore.GetSnapshot(typeof(Object), streamId, 10)); }
public void it_should_return_null_if_the_snapshot_does_not_exist() { var shouldbenull = SnapshotStore.GetSnapshot(Guid.NewGuid(), long.MaxValue); Assert.Null(shouldbenull); }
public void it_should_return_null_if_the_snapshot_does_not_exist() { var shouldbenull = SnapshotStore.GetSnapshot(Guid.NewGuid()); Assert.That(shouldbenull, Is.Null); }