public void constructor_should_initialize_subject()
        {
            var subject = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);

            subject.CollectionNamespace.Should().BeSameAs(_collectionNamespace);
            subject.MessageEncoderSettings.Should().BeSameAs(_messageEncoderSettings);
        }
        public void CollectionNamespace_get_should_return_expected_result()
        {
            var subject = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);

            var result = subject.CollectionNamespace;

            result.Should().BeSameAs(_collectionNamespace);
        }
        public void Execute_should_return_expected_result_when_collection_does_not_exist(
            [Values(false, true)]
            bool async)
        {
            DropCollection(async);
            var subject = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);

            var result = ExecuteOperation(subject, async);
            var list = ReadCursorToEnd(result, async);

            list.Count.Should().Be(0);
        }
        public void Execute_should_return_expected_result(
            [Values(false, true)]
            bool async)
        {
            EnsureCollectionExists(async);
            var subject = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);

            var result = ExecuteOperation(subject, async);
            var list = ReadCursorToEnd(result, async);

            list.Select(index => index["name"].AsString).Should().BeEquivalentTo("_id_");
        }
        public async Task ExecuteAsync_should_return_expected_result()
        {
            using (var binding = CoreTestConfiguration.GetReadWriteBinding())
            {
                var subject = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);
                await EnsureCollectionExistsAsync(binding);
                var expectedNames = new[] { "_id_" };

                var result = await subject.ExecuteAsync(binding, CancellationToken.None);
                var list = await result.ToListAsync();

                list.Select(index => index["name"].AsString).Should().BeEquivalentTo(expectedNames);
            }
        }
 private List<BsonDocument> ListIndexes(bool async)
 {
     var listIndexesOperation = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);
     var cursor = ExecuteOperation(listIndexesOperation, async);
     return ReadCursorToEnd(cursor, async);
 }
            public override Task <IAsyncCursor <BsonDocument> > ListAsync(CancellationToken cancellationToken = default(CancellationToken))
            {
                var op = new ListIndexesOperation(_collection._collectionNamespace, _collection._messageEncoderSettings);

                return(_collection.ExecuteReadOperation(op, ReadPreference.Primary, cancellationToken));
            }
        public void Execute_should_create_collection_when_AutoIndexId_is_set(
            [Values(false, true)]
            bool autoIndexId,
            [Values(false, true)]
            bool async)
        {
            var subject = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings)
            {
                AutoIndexId = autoIndexId
            };

            using (var binding = CoreTestConfiguration.GetReadWriteBinding())
            {
                var result = ExecuteOperation(subject, binding, async);

                result["ok"].ToBoolean().Should().BeTrue();

                var listIndexesOperation = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);
                List<BsonDocument> indexes;
                if (async)
                {
                    var cursor = listIndexesOperation.ExecuteAsync(binding, CancellationToken.None).GetAwaiter().GetResult();
                    indexes = cursor.ToListAsync().GetAwaiter().GetResult();
                }
                else
                {
                    var cursor = listIndexesOperation.Execute(binding, CancellationToken.None);
                    indexes = cursor.ToList();
                }

                indexes.Count.Should().Be(autoIndexId ? 1 : 0);
            }
        }
예제 #9
0
        public Task <IReadOnlyList <BsonDocument> > GetIndexesAsync(CancellationToken cancellationToken = default(CancellationToken))
        {
            var op = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);

            return(ExecuteReadOperation(op, cancellationToken));
        }
        public async Task ExecuteAsync_should_create_collection_when_AutoIndexId_is_set(
            [Values(false, true)]
            bool autoIndexId)
        {
            var subject = new CreateCollectionOperation(_collectionNamespace, _messageEncoderSettings)
            {
                AutoIndexId = autoIndexId
            };

            using (var binding = CoreTestConfiguration.GetReadWriteBinding())
            {
                var result = await subject.ExecuteAsync(binding, CancellationToken.None);

                result["ok"].ToBoolean().Should().BeTrue();

                var listIndexesOperation = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);
                var cursor = await listIndexesOperation.ExecuteAsync(binding, CancellationToken.None);
                var indexes = await cursor.ToListAsync();

                indexes.Count.Should().Be(autoIndexId ? 1 : 0);
            }
        }
        public async Task ExecuteAsync_should_return_expected_result_when_collection_does_not_exist()
        {
            using (var binding = CoreTestConfiguration.GetReadWriteBinding())
            {
                var subject = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);
                await DropCollectionAsync(binding);

                var result = await subject.ExecuteAsync(binding, CancellationToken.None);
                var list = await result.ToListAsync();

                list.Count.Should().Be(0);
            }
        }
        public void ExecuteAsync_should_throw_when_binding_is_null()
        {
            var subject = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);

            Func<Task> action = () => subject.ExecuteAsync(null, CancellationToken.None);

            action.ShouldThrow<ArgumentNullException>().And.ParamName.Should().Be("binding");
        }
        public void Execute_should_throw_when_binding_is_null(
            [Values(false, true)]
            bool async)
        {
            var subject = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);

            Action action = () => ExecuteOperation(subject, null, async);

            action.ShouldThrow<ArgumentNullException>().And.ParamName.Should().Be("binding");
        }
        public async Task ExecuteAsync_should_work_when_background_is_true()
        {
            var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) { Background = true } };
            var subject = new CreateIndexesOperation(_collectionNamespace, requests, _messageEncoderSettings);

            var result = await ExecuteOperationAsync(subject);

            result["ok"].ToBoolean().Should().BeTrue();

            var listIndexesOperation = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);
            var cursor = await ExecuteOperationAsync(listIndexesOperation);
            var indexes = await cursor.ToListAsync();
            var index = indexes.Single(i => i["name"].AsString == "x_1");
            index["background"].ToBoolean().Should().BeTrue();
        }
        public async Task ExecuteAsync_should_work_when_expireAfter_has_value()
        {
            var expireAfterSeconds = 1.5;
            var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) { ExpireAfter = TimeSpan.FromSeconds(expireAfterSeconds) } };
            var subject = new CreateIndexesOperation(_collectionNamespace, requests, _messageEncoderSettings);

            var result = await ExecuteOperationAsync(subject);

            result["ok"].ToBoolean().Should().BeTrue();

            var listIndexesOperation = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);
            var cursor = await ExecuteOperationAsync(listIndexesOperation);
            var indexes = await cursor.ToListAsync();
            var index = indexes.Single(i => i["name"].AsString == "x_1");
            index["expireAfterSeconds"].ToDouble().Should().Be(expireAfterSeconds);
        }
        public async Task ExecuteAsync_should_work_when_creating_two_indexes()
        {
            var requests = new[]
            {
                new CreateIndexRequest(new BsonDocument("x", 1)),
                new CreateIndexRequest(new BsonDocument("y", 1))
            };
            var subject = new CreateIndexesOperation(_collectionNamespace, requests, _messageEncoderSettings);

            var result = await ExecuteOperationAsync(subject);

            result["ok"].ToBoolean().Should().BeTrue();

            var listIndexesOperation = new ListIndexesOperation(_collectionNamespace, _messageEncoderSettings);
            var cursor = await ExecuteOperationAsync(listIndexesOperation);
            var indexes = await cursor.ToListAsync();
            indexes.Select(index => index["name"].AsString).Should().BeEquivalentTo(new[] { "_id_", "x_1", "y_1" });
        }