public async Task Should_write_state_and_events_when_saved() { await sut.ActivateAsync(id, store); var event1 = new MyEvent(); var event2 = new MyEvent(); var newState = new MyDomainState(); sut.RaiseEvent(event1); sut.RaiseEvent(event2); sut.UpdateState(newState); await sut.WriteAsync(A.Fake <ISemanticLog>()); A.CallTo(() => persistence.WriteSnapshotAsync(newState)) .MustHaveHappened(); A.CallTo(() => persistence.WriteEventsAsync(A <IEnumerable <Envelope <IEvent> > > .That.Matches(x => x.Count() == 2))) .MustHaveHappened(); Assert.Empty(sut.GetUncomittedEvents()); }
public async Task Should_not_ignore_exception_when_saving() { A.CallTo(() => persistence.WriteEventsAsync(A <IEnumerable <Envelope <IEvent> > > .Ignored)) .Throws(new InvalidOperationException()); await sut.ActivateAsync(id, store); var event1 = new MyEvent(); var event2 = new MyEvent(); var newState = new MyDomainState(); sut.RaiseEvent(event1); sut.RaiseEvent(event2); sut.ApplySnapshot(newState); await Assert.ThrowsAsync <InvalidOperationException>(() => sut.WriteAsync()); A.CallTo(() => persistence.WriteSnapshotAsync(newState)) .MustNotHaveHappened(); A.CallTo(() => persistence.WriteEventsAsync(A <IEnumerable <Envelope <IEvent> > > .That.Matches(x => x.Count() == 2))) .MustHaveHappened(); Assert.Empty(sut.GetUncomittedEvents()); }
private static void AssertSnapshot(MyDomainState state, int value, long version, bool isDeleted = false) { Assert.Equal(new MyDomainState { Value = value, Version = version, IsDeleted = isDeleted }, state); }