public async Task ProjectEventsAsync_SkipsProjectionIfTargetNotCreated() { sut = Substitute.ForPartsOf <TestEntityEventToPocoProjectorNullTarget>(); await sut.ProjectEventsAsync(aggregateId, eventMessages); sut.DidNotReceiveWithAnyArgs().Apply(null, Guid.Empty, null); }
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(); }
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); }
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(); }