public async Task ProjectEventsAsync_CallsInheritedOnlyOnce()
        {
            sut = new TestEntityEventProjector2WithInherited();
            await sut.ProjectEventsAsync(aggregateId, eventMessages);

            sut.AppliedEvents.Should().BeEquivalentTo(
                new[]
            {
                eventMessages[0],
                eventMessages[1]
            },
                options => options.WithStrictOrdering());
        }
        public async Task ProjectEventsAsync_WithSubProjector()
        {
            sut = new TestEntityEventProjector();
            var subProjector = Substitute.ForPartsOf <TestSubProjector>(new object[] { sut.AppliedEvents });

            sut.AddSubProjector(subProjector);
            await sut.ProjectEventsAsync(aggregateId, eventMessages);

            sut.AppliedEvents.Should().BeEquivalentTo(
                new[]
            {
                eventMessages[0],
                eventMessages[1],
                eventMessages[2]
            },
                options => options.WithStrictOrdering());

            subProjector.Received(1).Apply((IEventMessage <TestEvent3>)eventMessages[2], aggregateId);
        }