public void ChangeStream_should_throw_when_pipeline_is_null()
        {
            PipelineDefinition <BsonDocument, BsonDocument> pipeline = null;
            ChangeStreamStageOptions options = null;

            var exception = Record.Exception(() => pipeline.ChangeStream(options));

            var argumentNullException = exception.Should().BeOfType <ArgumentNullException>().Subject;

            argumentNullException.ParamName.Should().Be("pipeline");
        }
        public void ChangeStream_should_add_the_expected_stage_when_options_is_null()
        {
            var pipeline = new EmptyPipelineDefinition <BsonDocument>();
            ChangeStreamStageOptions options = null;

            var result = pipeline.ChangeStream(options);

            var stages = RenderStages(result);

            stages.Count.Should().Be(1);
            stages[0].Should().Be("{ $changeStream : { fullDocument : \"default\" } }");
        }
示例#3
0
        public void ChangeStream_with_fullDocument_should_return_the_expected_result(ChangeStreamFullDocumentOption fullDocument, string expectedStage)
        {
            var options = new ChangeStreamStageOptions
            {
                FullDocument = fullDocument
            };

            var result = PipelineStageDefinitionBuilder.ChangeStream <BsonDocument>(options);

            var stage = RenderStage(result);

            stage.Document.Should().Be(expectedStage);
        }
示例#4
0
        public void ChangeStream_with_allChangesForCluster_should_return_the_expected_result(bool?allChangesForCluster, string expectedStage)
        {
            var options = new ChangeStreamStageOptions
            {
                AllChangesForCluster = allChangesForCluster
            };

            var result = PipelineStageDefinitionBuilder.ChangeStream <BsonDocument>(options);

            var stage = RenderStage(result);

            stage.Document.Should().Be(expectedStage);
        }
        public void ChangeStream_should_add_the_expected_stage_when_options_is_null()
        {
            var subject = CreateSubject();
            ChangeStreamStageOptions options = null;

            var result = subject.ChangeStream(options);

            var serializerRegistry = BsonSerializer.SerializerRegistry;
            var inputSerializer    = serializerRegistry.GetSerializer <C>();
            var stages             = RenderStages(result.Stages, inputSerializer, serializerRegistry);

            stages.Count.Should().Be(1);
            stages[0].Document.Should().Be("{ $changeStream : { fullDocument : \"default\" } }");
        }
示例#6
0
        public void ChangeStream_with_startAtOperationTime_should_return_the_expected_result(int?t, int?i, string expectedStage)
        {
            var startAtOperationTime = t.HasValue ? new BsonTimestamp(t.Value, i.Value) : null;
            var options = new ChangeStreamStageOptions
            {
                StartAtOperationTime = startAtOperationTime
            };

            var result = PipelineStageDefinitionBuilder.ChangeStream <BsonDocument>(options);

            var stage = RenderStage(result);

            stage.Document.Should().Be(expectedStage);
        }
示例#7
0
        public void ChangeStream_with_resumeAfter_should_return_the_expected_result(string resumeAfterJson, string expectedStage)
        {
            var resumeAfter = resumeAfterJson == null ? null : BsonDocument.Parse(resumeAfterJson);
            var options     = new ChangeStreamStageOptions
            {
                ResumeAfter = resumeAfter
            };

            var result = PipelineStageDefinitionBuilder.ChangeStream <BsonDocument>(options);

            var stage = RenderStage(result);

            stage.Document.Should().Be(expectedStage);
        }
示例#8
0
        public void ChangeStream_with_startAfter_should_return_the_expected_result(string content, string expectedStage)
        {
            var startAfter = content != null?BsonDocument.Parse(content) : null;

            var options = new ChangeStreamStageOptions
            {
                StartAfter = startAfter
            };

            var result = PipelineStageDefinitionBuilder.ChangeStream <BsonDocument>(options);

            var stage = RenderStage(result);

            stage.Document.Should().Be(expectedStage);
        }
        public void ChangeStream_should_add_the_expected_stage(
            ChangeStreamFullDocumentOption fullDocument,
            string resumeAfterString,
            string expectedStage)
        {
            var resumeAfter = resumeAfterString == null ? null : BsonDocument.Parse(resumeAfterString);
            var pipeline    = new EmptyPipelineDefinition <BsonDocument>();
            var options     = new ChangeStreamStageOptions
            {
                FullDocument = fullDocument,
                ResumeAfter  = resumeAfter
            };

            var result = pipeline.ChangeStream(options);

            var stages = RenderStages(result);

            stages.Count.Should().Be(1);
            stages[0].Should().Be(expectedStage);
        }
        public void ChangeStream_should_add_the_expected_stage(
            ChangeStreamFullDocumentOption fullDocument,
            string resumeAfterString,
            string expectedStage)
        {
            var resumeAfter = resumeAfterString == null ? null : BsonDocument.Parse(resumeAfterString);

            var subject = CreateSubject();
            var options = new ChangeStreamStageOptions
            {
                FullDocument = fullDocument,
                ResumeAfter  = resumeAfter
            };

            var result = subject.ChangeStream(options);

            var serializerRegistry = BsonSerializer.SerializerRegistry;
            var inputSerializer    = serializerRegistry.GetSerializer <C>();
            var stages             = RenderStages(result.Stages, inputSerializer, serializerRegistry);

            stages.Count.Should().Be(1);
            stages[0].Document.Should().Be(expectedStage);
        }
示例#11
0
 public IAggregateFluent <ChangeStreamDocument <BsonDocument> > ChangeStream(ChangeStreamStageOptions options = null)
 {
     return(BlockProvider.ChangeStream(options));
 }