public void WhenAnEventsAreReplayed_ThenTheNextEventVersionShouldBeInitializedProperly()
        {
            var entity = new AggregateRootFake
            {
                Id = new FakeId()
            };

            var event1 = new FakeEvent(
                Guid.NewGuid(),
                entity.Id.Value,
                entity.Id.Value,
                DateTime.UtcNow,
                1
                );

            var event2 = new FakeEvent(
                Guid.NewGuid(),
                entity.Id.Value,
                entity.Id.Value,
                DateTime.UtcNow,
                2
                );

            entity.Replay(event1);
            entity.Replay(event2);

            entity.Increment();

            entity.Changes[0].Version.Should().Be(3);
        }
        public void WhenAnEventsAreReplayed_AnErrorShouldBeThrownIfTheirIsAVersionMismatch()
        {
            var entity = new AggregateRootFake
            {
                Id = new FakeId()
            };

            var event1 = new FakeEvent(
                Guid.NewGuid(),
                entity.Id.Value,
                entity.Id.Value,
                DateTime.UtcNow,
                1
                );

            var event2 = new FakeEvent(
                Guid.NewGuid(),
                entity.Id.Value,
                entity.Id.Value,
                DateTime.UtcNow,
                100
                );

            entity.Replay(event1);
            entity.Invoking(e => e.Replay(event2))
            .Should().Throw <EntityException>()
            .WithMessage("Unexpected event version. Expected version '100' to be '2'");
        }
Beispiel #3
0
        public void Create_entity_from_IAggregateRoot()
        {
            var id            = new IdFake(10);
            var aggregateRoot = new AggregateRootFake(id);

            aggregateRoot.Should().BeAssignableTo <IAggregateRoot>();
        }
        public void WhenAnEntityIsCreated_ThenTheFirstEventVersionToAssignedShouldBeOne()
        {
            var entity = new AggregateRootFake
            {
                Id = new FakeId()
            };

            entity.Increment();

            entity.Changes.Count.Should().Be(1);

            entity.Changes[0].Version.Should().Be(1);
        }
Beispiel #5
0
        public async void ShouldSaveEventsForEntity()
        {
            var db          = new Mock <IEventStore>();
            var entityStore = new EntityStore(db.Object);

            var entity = new AggregateRootFake
            {
                Id = new FakeId()
            };

            entity.Increment();
            entity.Increment();
            entity.Increment();

            await entityStore.Save <AggregateRootFake>(entity);

            db.Verify(m => m.Save(It.IsAny <FakeEvent>()), Times.Exactly(3));
        }
Beispiel #6
0
        public async void ShouldLoadEntityAndApplyStoredEvent()
        {
            var db          = new InMemoryEventStore();
            var entityStore = new EntityStore(db);

            var entity = new AggregateRootFake
            {
                Id = new FakeId()
            };

            entity.Increment();
            entity.Increment();
            entity.Increment();

            await entityStore.Save(entity);

            var loadedEntity = await entityStore.Load <AggregateRootFake>(entity.Id);

            loadedEntity.Changes.Count.Should().Be(0);
            loadedEntity.Count.Should().Be(3);
        }
Beispiel #7
0
 public ListDatabaseTest()
 {
     _database  = new ListDatabase <AggregateRootFake, IdFake>();
     _id        = new IdFake(10);
     _aggregate = new AggregateRootFake(_id);
 }