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);
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
        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();
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }