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'"); }
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); }
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)); }
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); }
public ListDatabaseTest() { _database = new ListDatabase <AggregateRootFake, IdFake>(); _id = new IdFake(10); _aggregate = new AggregateRootFake(_id); }