public void WHEN_saving_aggregate_with_a_batch_of_events_THEN_can_rehydrate() { this.aggregateId = Guid.NewGuid(); var item = new Item { Id = 1, Name = "item1" }; var item2 = new Item { Id = 2, Name = "item2" }; var aggregate = new FakeItemsAggregate(aggregateId); aggregate.AddItem(item.Id, item.Name, 10); aggregate.AddItem(item2.Id, item2.Name, 10); aggregate.AddItem(item.Id, item.Name, 5); this.sut.Save(aggregate, new FakeCommand(Guid.Empty)); var retrivedAggregate = this.sut.Find(aggregateId); Assert.NotNull(retrivedAggregate); Assert.True(retrivedAggregate.itemsQuantity.ContainsKey(item.Id)); Assert.True(retrivedAggregate.itemsQuantity.ContainsKey(item2.Id)); Assert.Equal(retrivedAggregate.itemsQuantity[item2.Id], 10); Assert.Equal(retrivedAggregate.itemsQuantity[item.Id], 15); }
public void WHEN_saving_aggregate_with_a_batch_of_events_THEN_can_rehydrate() { using (var context = new EventStoreDbContext(this.connectionString)) { this.sut = new InMemoryEventStore <FakeItemsAggregate>(this.bus, this.serializer, context, new ConsoleTracer(), new LocalDateTime(), new InMemorySnapshotProvider("test", new LocalDateTime()), new StandardMetadataProvider()); this.aggregateId = Guid.NewGuid(); var item = new Item { Id = 1, Name = "item1" }; var item2 = new Item { Id = 2, Name = "item2" }; var aggregate = new FakeItemsAggregate(aggregateId); aggregate.AddItem(item.Id, item.Name, 10); aggregate.AddItem(item2.Id, item2.Name, 10); aggregate.AddItem(item.Id, item.Name, 5); this.sut.Save(aggregate, new FakeCommand(Guid.Empty)); var retrivedAggregate = this.sut.Find(aggregateId); Assert.NotNull(retrivedAggregate); Assert.True(retrivedAggregate.itemsQuantity.ContainsKey(item.Id)); Assert.True(retrivedAggregate.itemsQuantity.ContainsKey(item2.Id)); Assert.Equal(retrivedAggregate.itemsQuantity[item2.Id], 10); Assert.Equal(retrivedAggregate.itemsQuantity[item.Id], 15); } }
public void WHEN_retrieving_persisted_aggregate_with_a_batch_of_events_THEN_can_save_it_once_again_with_new_events_and_replay_it_again() { this.aggregateId = Guid.NewGuid(); var item = new Item { Id = 1, Name = "item1" }; var item2 = new Item { Id = 2, Name = "item2" }; var aggregate = new FakeItemsAggregate(aggregateId); aggregate.AddItem(item.Id, item.Name, 10); aggregate.AddItem(item2.Id, item2.Name, 10); aggregate.AddItem(item.Id, item.Name, 5); this.sut.Save(aggregate, new FakeCommand(Guid.Empty)); var retrivedAggregate = this.sut.Find(aggregateId); Assert.NotNull(retrivedAggregate); Assert.True(retrivedAggregate.itemsQuantity.ContainsKey(item.Id)); Assert.True(retrivedAggregate.itemsQuantity.ContainsKey(item2.Id)); Assert.Equal(retrivedAggregate.itemsQuantity[item2.Id], 10); Assert.Equal(retrivedAggregate.itemsQuantity[item.Id], 15); retrivedAggregate.RemoveItem(item2.Id, 7); retrivedAggregate.RemoveItem(item.Id, 2); this.sut.Save(retrivedAggregate, new FakeCommand(Guid.Empty)); var overRetrivedAggregate = this.sut.Find(aggregateId); Assert.NotNull(overRetrivedAggregate); Assert.True(overRetrivedAggregate.itemsQuantity.ContainsKey(item.Id)); Assert.True(overRetrivedAggregate.itemsQuantity.ContainsKey(item2.Id)); Assert.Equal(overRetrivedAggregate.itemsQuantity[item2.Id], 3); Assert.Equal(overRetrivedAggregate.itemsQuantity[item.Id], 13); }