示例#1
0
        public async Task ProjectEventsAsync_FindTargetOnFollowingEvent()
        {
            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));
            });

            eventMessages.Select((x, i) => (x, i)).ForEach(p => p.Item1.SetMetadata(BasicEventMetadataNames.StreamSequenceNumber, (p.Item2 + 2).ToString())); //renumber
            await sut.ProjectEventsAsync(aggregateId, eventMessages);

            sut.LastFoundTarget.Should().NotBeNull();
            sut.LastCreatedTarget.Should().BeNull();
        }
        public async Task ProjectEventsAsync_CreatesTargetOnFirstEvent()
        {
            eventMessages.ForEach(p => p.SetMetadata(BasicEventMetadataNames.AggregateVersion, null));

            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();
        }
示例#3
0
        public async Task ProjectEventsAsync_CreatesTargetOnAggregateVersion1()
        {
            foreach (var message in eventMessages)
            {
                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();
        }