public void Should_add_event_to_uncommitted_events_and_increase_version_when_raised() { var event1 = new MyEvent(); var event2 = new MyEvent(); sut.RaiseEvent(event1); sut.RaiseEvent(event2); Assert.Equal(1, sut.Version); Assert.Equal(new IEvent[] { event1, event2 }, sut.GetUncomittedEvents().Select(x => x.Payload).ToArray()); sut.ClearUncommittedEvents(); Assert.Equal(0, sut.GetUncomittedEvents().Count); }
public async Task Should_append_events_and_publish() { var commitId = Guid.NewGuid(); var event1 = new MyEvent(); var event2 = new MyEvent(); var eventData1 = new EventData(); var eventData2 = new EventData(); A.CallTo(() => formatter.ToEventData(A <Envelope <IEvent> > .That.Matches(e => e.Payload == event1), commitId, true)) .Returns(eventData1); A.CallTo(() => formatter.ToEventData(A <Envelope <IEvent> > .That.Matches(e => e.Payload == event2), commitId, true)) .Returns(eventData2); A.CallTo(() => eventStore.AppendEventsAsync(commitId, streamName, 123, A <ICollection <EventData> > .That.Matches(e => e.Count == 2))) .Returns(TaskHelper.Done); domainObject.AddEvent(event1); domainObject.AddEvent(event2); await sut.SaveAsync(domainObject, domainObject.GetUncomittedEvents(), commitId); A.CallTo(() => eventStore.AppendEventsAsync(commitId, streamName, 123, A <ICollection <EventData> > .That.Matches(e => e.Count == 2))).MustHaveHappened(); }
public async Task Should_write_state_and_events_when_created() { await SetupEmptyAsync(); var result = await sut.ExecuteAsync(C(new CreateAuto { Value = 5 })); A.CallTo(() => persistence.WriteSnapshotAsync(A <MyDomainState> .That.Matches(x => x.Value == 5))) .MustHaveHappened(); A.CallTo(() => persistence.WriteEventsAsync(A <IEnumerable <Envelope <IEvent> > > .That.Matches(x => x.Count() == 1))) .MustHaveHappened(); Assert.True(result.Value is EntityCreatedResult <Guid>); Assert.Empty(sut.GetUncomittedEvents()); Assert.Equal(5, sut.Snapshot.Value); }
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.ApplySnapshot(newState); await sut.WriteAsync(); 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_append_events_and_publish() { var commitId = Guid.NewGuid(); var event1 = new MyEvent(); var event2 = new MyEvent(); var eventData1 = new EventData(); var eventData2 = new EventData(); eventDataFormatter.Setup(x => x.ToEventData(It.Is <Envelope <IEvent> >(e => e.Payload == event1), commitId)).Returns(eventData1); eventDataFormatter.Setup(x => x.ToEventData(It.Is <Envelope <IEvent> >(e => e.Payload == event2), commitId)).Returns(eventData2); eventStore.Setup(x => x.AppendEventsAsync(commitId, streamName, 123, It.Is <IEnumerable <EventData> >(e => e.Count() == 2))) .Returns(TaskHelper.Done) .Verifiable(); domainObject.AddEvent(event1); domainObject.AddEvent(event2); await sut.SaveAsync(domainObject, domainObject.GetUncomittedEvents(), commitId); eventStore.VerifyAll(); }
public async Task Should_write_state_and_events_when_created() { SetupEmpty(); var result = await sut.ExecuteAsync(new CreateAuto { Value = 4 }); A.CallTo(() => persistence.WriteSnapshotAsync(A <MyDomainState> .That.Matches(x => x.Value == 4))) .MustHaveHappened(); A.CallTo(() => persistence.WriteEventsAsync(A <IEnumerable <Envelope <IEvent> > > .That.Matches(x => x.Count() == 1))) .MustHaveHappened(); A.CallTo(() => persistence.ReadAsync(A <long> ._)) .MustNotHaveHappened(); Assert.True(result is EntityCreatedResult <DomainId>); Assert.Empty(sut.GetUncomittedEvents()); Assert.Equal(4, sut.Snapshot.Value); Assert.Equal(0, sut.Snapshot.Version); }
public async Task Should_write_state_and_events_when_created() { SetupEmpty(); var result = await sut.ExecuteAsync(new CreateAuto { Value = 4 }); A.CallTo(() => persistence.WriteSnapshotAsync(A <MyDomainState> .That.Matches(x => x.Value == 4))) .MustHaveHappened(); A.CallTo(() => persistence.WriteEventsAsync(A <IReadOnlyList <Envelope <IEvent> > > .That.Matches(x => x.Count == 1))) .MustHaveHappened(); A.CallTo(() => persistence.ReadAsync(A <long> ._)) .MustNotHaveHappened(); Assert.Equal(CommandResult.Empty(id, 0, EtagVersion.Empty), result); Assert.Empty(sut.GetUncomittedEvents()); AssertSnapshot(sut.Snapshot, 4, 0); }