public void Should_set_snapshot_version_on_save() { //Arrange var domainEvent = new TestDomainEvent(); var sut = new TestSnapshotAggregateRoot(Guid.NewGuid()); sut.LoadFromHistory(new [] { domainEvent, domainEvent }); //Act var(_, snapshotVersion) = ((ISnapshotableEntity)sut).TakeSnapshot(); //Assert sut.Version.Should().Be(snapshotVersion); }
public void Should_set_aggregate_version_on_load() { //Arrange var sut = new TestSnapshotAggregateRoot(Guid.NewGuid()); var snapshot = new TestSnapshot { Prop = "EEE" }; var snapshotVersion = 5; //Act ((ISnapshotableEntity)sut).ApplySnapshot(snapshot, snapshotVersion); //Assert sut.Version.Should().Be(snapshotVersion); }
public void Should_support_serialization() { //Arrange var sut = new TestSnapshotAggregateRoot(Guid.NewGuid()); var snapshot = new TestSnapshot(); ((ISnapshotableEntity)sut).ApplySnapshot(snapshot, 5); //Act var serializedObject = JsonConvert.SerializeObject(sut); var deserializedObject = JsonConvert.DeserializeObject <TestSnapshotAggregateRoot>(serializedObject); //Assert deserializedObject.Should().Be(sut); }
public async Task Should_save_snapshot_in_snapshot_store_when_aggregate_is_saved() { //Arrange var snapshotStore = Mock.Of <ISnapshotStore>(); var sut = new EventSourcedRepository <TestSnapshotAggregateRoot>(Mock.Of <IEventStore>(), snapshotStore, Mock.Of <IMediator>(), new EventSourcingOptions { DefaultSnapshotVersionFrequency = 1 }, Mock.Of <ILogger <EventSourcedRepository <TestSnapshotAggregateRoot> > >()); var domainEvent = Mock.Of <IDomainEvent>(); var domainEvents = new List <IDomainEvent> { domainEvent }; var testAggregate = new TestSnapshotAggregateRoot(Guid.NewGuid(), 1000, 1, 10, domainEvents); //Act await sut.SaveAsync(testAggregate, CancellationToken.None); //Assert Mock.Get(snapshotStore) .Verify( x => x.StoreSnapshotAsync(It.IsAny <SnapshotEnvelope>(), It.IsAny <CancellationToken>()), Times.Once); }
public async Task Should_not_take_snapshot_below_custom_frequency() { //Arrange var snapshotStore = Mock.Of <ISnapshotStore>(); var options = new EventSourcingOptions { DefaultSnapshotVersionFrequency = 10 }; var sut = new EventSourcedRepository <TestSnapshotAggregateRoot>(Mock.Of <IEventStore>(), snapshotStore, Mock.Of <IMediator>(), options, Mock.Of <ILogger <EventSourcedRepository <TestSnapshotAggregateRoot> > >()); var domainEvent = Mock.Of <IDomainEvent>(); var domainEvents = new List <IDomainEvent> { domainEvent }; var testAggregate = new TestSnapshotAggregateRoot(Guid.NewGuid(), 2, 1, 2, domainEvents); //Act await sut.SaveAsync(testAggregate, CancellationToken.None); //Assert Mock.Get(snapshotStore) .Verify( x => x.StoreSnapshotAsync(It.IsAny <SnapshotEnvelope>(), It.IsAny <CancellationToken>()), Times.Never); }