Exemplo n.º 1
0
        public async Task ProjectEventsAsync_SkipsProjectionIfTargetNotCreated()
        {
            sut = Substitute.ForPartsOf <TestEntityEventToPocoProjectorNullTarget>();
            await sut.ProjectEventsAsync(aggregateId, eventMessages);

            sut.DidNotReceiveWithAnyArgs().Apply(null, Guid.Empty, null);
        }
Exemplo n.º 2
0
        public async Task ProjectEventsAsync_CallsApplyWithTargetParam()
        {
            sut = Substitute.ForPartsOf <TestEntityEventToPocoProjector>();
            await sut.ProjectEventsAsync(aggregateId, eventMessages);

            sut.Received(1).Apply((IEventMessage <TestEvent1>)eventMessages[0], aggregateId, sut.LastCreatedTarget);
        }
        public async Task ProjectEventsAsync_CreatesTargetOnAggregateVersion1(bool nullStreamSequenceNumbers)
        {
            foreach (var message in eventMessages)
            {
                if (nullStreamSequenceNumbers)
                {
                    message.SetMetadata(BasicEventMetadataNames.StreamSequenceNumber, null);
                }

                message.SetMetadata(BasicEventMetadataNames.AggregateVersion, 1.ToString());
            }

            sut = Substitute.ForPartsOf <TestEntityEventToPocoProjector>();
            sut.WhenForAnyArgs(x => x.Apply(null, Guid.Empty, null))
            .Do(ci =>
            {
                sut.Target.Should().NotBeNull();
                sut.Target.Should().Be(sut.LastCreatedTarget);
                sut.Target.Should().Be(ci.ArgAt <TestReadModel>(2));
            });

            await sut.ProjectEventsAsync(aggregateId, eventMessages);

            sut.LastCreatedTarget.Should().NotBeNull();
            sut.LastFoundTarget.Should().BeNull();
        }
        public async Task ProjectEventsAsync_FindTargetOnFollowingEvent(bool usingSequenceNumbers, bool usingAggregateVersions)
        {
            sut = Substitute.ForPartsOf <TestEntityEventToPocoProjector>();
            sut.WhenForAnyArgs(x => x.Apply(null, Guid.Empty, null))
            .Do(ci =>
            {
                sut.Target.Should().NotBeNull();
                sut.Target.Should().Be(sut.LastFoundTarget);
                sut.Target.Should().Be(ci.ArgAt <TestReadModel>(2));
            });


            if (usingSequenceNumbers)
            {
                eventMessages.Select((x, i) => (x, i)).ForEach(p =>
                                                               p.Item1.SetMetadata(BasicEventMetadataNames.StreamSequenceNumber,
                                                                                   (p.Item2 + 2).ToString())); //renumber
                eventMessages.ForEach(x => x.SetMetadata(BasicEventMetadataNames.AggregateVersion, null));
            }

            if (usingAggregateVersions)
            {
                eventMessages.ForEach(x => x.SetMetadata(BasicEventMetadataNames.AggregateVersion, "2"));
            }

            await sut.ProjectEventsAsync(aggregateId, eventMessages);

            sut.LastFoundTarget.Should().NotBeNull();
            sut.LastCreatedTarget.Should().BeNull();
        }
Exemplo n.º 5
0
        public async Task ProjectEventsAsync_SkipsProjectionIfTargetNotFound()
        {
            sut = Substitute.ForPartsOf <TestEntityEventToPocoProjectorNullTarget>();
            eventMessages.Select((x, i) => (x, i)).ForEach(p => p.Item1.SetMetadata(BasicEventMetadataNames.StreamSequenceNumber, (p.Item2 + 2).ToString())); //renumber
            await sut.ProjectEventsAsync(aggregateId, eventMessages);

            sut.DidNotReceiveWithAnyArgs().Apply(null, Guid.Empty, null);
        }
Exemplo n.º 6
0
        public async Task ProjectEventsAsync_CreatesTargetOnFirstEvent()
        {
            sut = Substitute.ForPartsOf <TestEntityEventToPocoProjector>();
            sut.WhenForAnyArgs(x => x.Apply(null, Guid.Empty, null))
            .Do(ci =>
            {
                sut.Target.Should().NotBeNull();
                sut.Target.Should().Be(sut.LastCreatedTarget);
                sut.Target.Should().Be(ci.ArgAt <TestReadModel>(2));
            });

            await sut.ProjectEventsAsync(aggregateId, eventMessages);

            sut.LastCreatedTarget.Should().NotBeNull();
            sut.LastFoundTarget.Should().BeNull();
        }