public async Task CountAsync_should_execute_the_CountOperation()
        {
            var filter  = new BsonDocument("x", 1);
            var options = new CountOptions
            {
                Hint    = "funny",
                Limit   = 10,
                MaxTime = TimeSpan.FromSeconds(20),
                Skip    = 30
            };
            await _subject.CountAsync(filter, options, CancellationToken.None);

            var call = _operationExecutor.GetReadCall <long>();

            call.Operation.Should().BeOfType <CountOperation>();
            var operation = (CountOperation)call.Operation;

            operation.CollectionNamespace.FullName.Should().Be("foo.bar");
            operation.Filter.Should().Be(filter);
            operation.Hint.Should().Be((string)options.Hint);
            operation.Limit.Should().Be(options.Limit);
            operation.MaxTime.Should().Be(options.MaxTime);
            operation.Skip.Should().Be(options.Skip);
        }
        public async Task CountAsync_should_execute_the_CountOperation()
        {
            var model = new CountModel
            {
                Criteria = new BsonDocument("x", 1),
                Hint     = "funny",
                Limit    = 10,
                MaxTime  = TimeSpan.FromSeconds(20),
                Skip     = 30
            };
            await _subject.CountAsync(model, Timeout.InfiniteTimeSpan, CancellationToken.None);

            var call = _operationExecutor.GetReadCall <long>();

            call.Operation.Should().BeOfType <CountOperation>();
            var operation = (CountOperation)call.Operation;

            operation.CollectionNamespace.FullName.Should().Be("foo.bar");
            operation.Criteria.Should().Be((BsonDocument)model.Criteria);
            operation.Hint.Should().Be((string)model.Hint);
            operation.Limit.Should().Be(model.Limit);
            operation.MaxTime.Should().Be(model.MaxTime);
            operation.Skip.Should().Be(model.Skip);
        }