public void ExecyteAsync_should_throw_when_binding_is_null()
        {
            var subject = new RenameCollectionOperation(_collectionNamespace, _newCollectionNamespace, _messageEncoderSettings);

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

            action.ShouldThrow <ArgumentNullException>().And.ParamName.Should().Be("binding");
        }
        public async Task ExecuteAsync_should_return_expected_result()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var subject = new RenameCollectionOperation(_collectionNamespace, _newCollectionNamespace, _messageEncoderSettings);
                EnsureCollectionExists(binding, _collectionNamespace);
                EnsureCollectionDoesNotExist(binding, _newCollectionNamespace);

                var result = await subject.ExecuteAsync(binding);

                result["ok"].ToBoolean().Should().BeTrue();
            }
        }
        public void ExecuteAsync_should_throw_when_dropTarget_is_false_and_newCollectionNamespace_exists()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var subject = new RenameCollectionOperation(_collectionNamespace, _newCollectionNamespace, _messageEncoderSettings)
                {
                    DropTarget = false
                };
                EnsureCollectionExists(binding, _collectionNamespace);
                EnsureCollectionExists(binding, _newCollectionNamespace);

                Func <Task> action = () => subject.ExecuteAsync(binding);

                action.ShouldThrow <MongoCommandException>();
            }
        }
        public async Task ExecuteAsync_should_return_expected_result_when_dropTarget_is_true_and_newCollectionNamespace_exists()
        {
            using (var binding = SuiteConfiguration.GetReadWriteBinding())
            {
                var subject = new RenameCollectionOperation(_collectionNamespace, _newCollectionNamespace, _messageEncoderSettings)
                {
                    DropTarget = true
                };
                EnsureCollectionExists(binding, _collectionNamespace);
                EnsureCollectionExists(binding, _newCollectionNamespace);

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

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