Esempio n. 1
0
            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);
                }
            }
Esempio n. 3
0
            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);
            }