public void CreateOperation_should_return_expected_result(
            [Values(null, 1, 2)] int?w,
            [Values(null, -10000, 0, 1, 42, 9000, 10000, 10001)] int?maxTimeTicks)
        {
            var requests     = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) };
            var commitQuorum = w.HasValue ? CreateIndexCommitQuorum.Create(w.Value) : null;
            var maxTime      = maxTimeTicks == null ? (TimeSpan?)null : TimeSpan.FromTicks(maxTimeTicks.Value);
            var writeConcern = new WriteConcern(1);
            var subject      = new CreateIndexesOperation(_collectionNamespace, requests, _messageEncoderSettings)
            {
                CommitQuorum = commitQuorum,
                MaxTime      = maxTime,
                WriteConcern = writeConcern
            };

            var result = subject.CreateOperation();

            result.Should().BeOfType <CreateIndexesUsingCommandOperation>();
            var operation = (CreateIndexesUsingCommandOperation)result;

            operation.CollectionNamespace.Should().BeSameAs(_collectionNamespace);
            operation.CommitQuorum.Should().BeSameAs(commitQuorum);
            operation.MaxTime.Should().Be(maxTime);
            operation.MessageEncoderSettings.Should().BeSameAs(_messageEncoderSettings);
            operation.Requests.Should().Equal(requests);
            operation.WriteConcern.Should().BeSameAs(writeConcern);
        }
Esempio n. 2
0
        public void CreateOperation_should_return_expected_result(
            [Values(false, true)]
            bool isCommandSupported)
        {
            var requests     = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) };
            var writeConcern = new WriteConcern(1);
            var subject      = new CreateIndexesOperation(_collectionNamespace, requests, _messageEncoderSettings)
            {
                WriteConcern = writeConcern
            };
            var serverVersion = Feature.CreateIndexesCommand.SupportedOrNotSupportedVersion(isCommandSupported);

            var result = subject.CreateOperation(serverVersion);

            if (isCommandSupported)
            {
                result.Should().BeOfType <CreateIndexesUsingCommandOperation>();
                var operation = (CreateIndexesUsingCommandOperation)result;
                operation.CollectionNamespace.Should().BeSameAs(_collectionNamespace);
                operation.MessageEncoderSettings.Should().BeSameAs(_messageEncoderSettings);
                operation.Requests.Should().Equal(requests);
                operation.WriteConcern.Should().BeSameAs(writeConcern);
            }
            else
            {
                result.Should().BeOfType <CreateIndexesUsingInsertOperation>();
                var operation = (CreateIndexesUsingInsertOperation)result;
                operation.CollectionNamespace.Should().BeSameAs(_collectionNamespace);
                operation.MessageEncoderSettings.Should().BeSameAs(_messageEncoderSettings);
                operation.Requests.Should().Equal(requests);
            }
        }