public void IsSnapshotNeedShould_ReturnsTrue_Every_X_Sequence()
        {
            var b = new NumericSnapshotBehavior(10);
            var firstEventMock = new Mock <IDomainEvent>();

            firstEventMock.Setup(m => m.Sequence).Returns(1);

            b.IsSnapshotNeeded(firstEventMock.Object).Should().BeFalse();

            var secondEventMock = new Mock <IDomainEvent>();

            secondEventMock.Setup(m => m.Sequence).Returns(2);

            b.IsSnapshotNeeded(secondEventMock.Object).Should().BeFalse();

            var laterEventMock = new Mock <IDomainEvent>();

            laterEventMock.Setup(m => m.Sequence).Returns(11);

            b.IsSnapshotNeeded(laterEventMock.Object).Should().BeTrue();

            var secondSnapshotEvent = new Mock <IDomainEvent>();

            secondSnapshotEvent.Setup(m => m.Sequence).Returns(21);

            b.IsSnapshotNeeded(secondSnapshotEvent.Object).Should().BeTrue();
        }
        public void GenerateSnapshot_Should_Grab_FromState()
        {
            var state = new SnapshotState();

            for (int i = 0; i < 10; i++)
            {
                state.Apply(new BehaviorEventTest());
            }

            var b      = new NumericSnapshotBehavior(10);
            var events = b.GenerateSnapshot(state);

            events.Should().HaveCount(10);
        }