public void CheckpointStreamNeedsDeletedAsExpected(bool checkPointsDisabled, bool deleteCheckpointStreams, bool expectedResult)
        {
            ManagedProjection.PersistedState persistedState = new ManagedProjection.PersistedState();

            persistedState.CheckpointsDisabled    = checkPointsDisabled;
            persistedState.DeleteCheckpointStream = deleteCheckpointStreams;

            Assert.IsTrue(persistedState.CheckpointStreamNeedsDeleted() == expectedResult);
        }
        public void EmitStreamNeedsDeletedAsExpected(bool emitEnabled, bool deleteEmitStreams, bool expectedResult)
        {
            ManagedProjection.PersistedState persistedState = new ManagedProjection.PersistedState();

            persistedState.EmitEnabled          = emitEnabled;
            persistedState.DeleteEmittedStreams = deleteEmitStreams;

            Assert.IsTrue(persistedState.EmitStreamNeedsDeleted() == expectedResult);
        }
        protected override void Given()
        {
            var persistedState = new ManagedProjection.PersistedState {
                Enabled                    = true,
                HandlerType                = "JS",
                Query                      = @"log(1);",
                Mode                       = ProjectionMode.Continuous,
                EmitEnabled                = true,
                CheckpointsDisabled        = true,
                Epoch                      = -1,
                Version                    = -1,
                RunAs                      = SerializedRunAs.SerializePrincipal(ProjectionManagementMessage.RunAs.Anonymous),
                ProjectionSubsystemVersion = 4
            };

            ExistingEvent(ProjectionNamesBuilder.ProjectionsStreamPrefix + _projectionName,
                          ProjectionEventTypes.ProjectionUpdated, "", persistedState.ToJson());

            _timeProvider = new FakeTimeProvider();
            _mp           = new ManagedProjection(
                Guid.NewGuid(),
                Guid.NewGuid(),
                1,
                "name",
                true,
                null,
                _streamDispatcher,
                _writeDispatcher,
                _readDispatcher,
                _bus,
                _timeProvider, new RequestResponseDispatcher
                <CoreProjectionManagementMessage.GetState, CoreProjectionStatusMessage.StateReport>(
                    _bus,
                    v => v.CorrelationId,
                    v => v.CorrelationId,
                    new PublishEnvelope(_bus)), new RequestResponseDispatcher
                <CoreProjectionManagementMessage.GetResult, CoreProjectionStatusMessage.ResultReport>(
                    _bus,
                    v => v.CorrelationId,
                    v => v.CorrelationId,
                    new PublishEnvelope(_bus)),
                _ioDispatcher,
                TimeSpan.FromMinutes(Opts.ProjectionsQueryExpiryDefault));
        }