public void Can_GET_document_from_CosmosDb_take_5_AutoQueryDataSource()
        {
            var request = new TestQueryRequest()
            {
                Take = 5, OrderBy = nameof(TestDocument.Name)
            };
            var r = client.Get(request);

            Assert.AreEqual(5, r.Results.Count);
        }
        public void Can_GET_document_from_CosmosDb_with_NameStartsWith_AutoQueryDataSource()
        {
            var request = new TestQueryRequest()
            {
                NameStartsWith = "Test"
            };
            var r = client.Get(request);

            Assert.AreEqual(10, r.Results.Count);
        }
        public void Can_GET_document_from_CosmosDb_include_TOTAL_AutoQueryDataSource()
        {
            var request = new TestQueryRequest()
            {
                Include = "TOTAL"
            };
            var r = client.Get(request);

            Assert.AreEqual(10, r.Total);
        }
        public void Can_GET_document_from_CosmosDb_with_NameEndsWith_AutoQueryDataSource()
        {
            var request = new TestQueryRequest()
            {
                NameEndsWith = "0"
            };
            var r = client.Get(request);

            Assert.AreEqual(1, r.Results.Count);
            Assert.AreEqual("TestExample0", r.Results[0].Name);
        }
        public void Can_GET_document_from_CosmosDb_MAX_AutoQueryDataSource()
        {
            var request = new TestQueryRequest()
            {
                Include = "MAX(Number) MaxNumber"
            };

            var r = client.Get(request);

            Assert.AreEqual(9, r.Meta["MaxNumber"].ToInt());
        }
        public void Can_GET_document_from_CosmosDb_LAST_AutoQueryDataSource()
        {
            var request = new TestQueryRequest()
            {
                Include = "LAST(Name) LastName"
            };

            var r = client.Get(request);

            Assert.AreEqual("TestExample9", r.Meta["LastName"]);
        }
        public void Can_GET_document_from_CosmosDb_SUM_AutoQueryDataSource()
        {
            var request = new TestQueryRequest()
            {
                Include = "SUM(Number) NumberSum"
            };

            var r = client.Get(request);

            Assert.AreEqual("45", r.Meta["NumberSum"]);
        }
        public void Can_GET_document_from_CosmosDb_AVG_AutoQueryDataSource()
        {
            var request = new TestQueryRequest()
            {
                Include = "AVG(Number) NumberAvg"
            };

            var r = client.Get(request);

            Assert.AreEqual(4.5, r.Meta["NumberAvg"].ToDouble());
        }
        public void Can_GET_document_from_MongoDB_with_NumberGreaterThan_AutoQueryDataSource()
        {
            var request = new TestQueryRequest()
            {
                NumberGreaterThan = 5
            };
            var r = client.Get(request);

            Assert.AreEqual(4, r.Results.Count);
            Assert.AreEqual(6, r.Results[0].Number);
        }
        public void Can_GET_document_from_MongoDB_with_Name_AutoQueryDataSource()
        {
            var request = new TestQueryRequest()
            {
                Name = "TestExample1"
            };
            var r = client.Get(request);

            Assert.AreEqual(1, r.Results.Count);
            Assert.AreEqual("TestExample1", r.Results[0].Name);
        }
        public void Can_GET_document_from_MongoDB_FIRST_AutoQueryDataSource()
        {
            var request = new TestQueryRequest()
            {
                Include = "FIRST(Name) FirstName"
            };

            var r = client.Get(request);

            Assert.AreEqual("TestExample0", r.Meta["FirstName"]);
        }
        public void Can_GET_document_from_MongoDB_MIN_AutoQueryDataSource()
        {
            var request = new TestQueryRequest()
            {
                Include = "MIN(Number) MinNumber"
            };

            var r = client.Get(request);

            Assert.AreEqual(0, r.Meta["MinNumber"].ToInt());
        }
        public void Can_GET_document_from_CosmosDb_include_single_aggregate_AutoQueryDataSource()
        {
            // SELECT COUNT(*) Total FROM c
            var request = new TestQueryRequest()
            {
                Include = "COUNT(*) Total"
            };

            var r = client.Get(request);

            Assert.AreEqual(10, r.Meta["Total"]?.ToInt());
        }
        public void Can_GET_document_from_CosmosDb_skip_2_take_5_AutoQueryDataSource()
        {
            var request = new TestQueryRequest()
            {
                Skip = 2, Take = 5, OrderBy = nameof(TestDocument.Name)
            };
            var r = client.Get(request);

            // skips items 0 and 1, then returns 2 through 6
            Assert.AreEqual(2, r.Results.FirstOrDefault()?.Number ?? -1);
            Assert.AreEqual(6, r.Results.LastOrDefault()?.Number ?? -1);
        }
        public void Can_GET_document_from_CosmosDb_include_comma_delimited_aggregates_AutoQueryDataSource()
        {
            var aggregations = new[] { "COUNT as Count", "SUM(Number) as NumberSum, LAST(Name) as LastName" };
            var includes     = string.Join(", ", aggregations);
            var request      = new TestQueryRequest()
            {
                Include = includes
            };

            var r = client.Get(request);

            Assert.AreEqual("10", r.Meta["Count"]);
            Assert.AreEqual("45", r.Meta["NumberSum"]);
            Assert.AreEqual("TestExample9", r.Meta["LastName"]);
        }
        public void Can_GET_document_from_MongoDB_include_comma_delimited_aggregates_AutoQueryDataSource()
        {
            var aggregations = new[] { "COUNT(*) as TotalCount", "SUM(Number) as NumberSum", "FIRST(Name) as FirstName" };
            var includes     = string.Join(", ", aggregations);
            var request      = new TestQueryRequest()
            {
                Include = includes
            };

            var r = client.Get(request);

            Assert.AreEqual("10", r.Meta["TotalCount"]);
            Assert.AreEqual("45", r.Meta["NumberSum"]);
            Assert.AreEqual("TestExample0", r.Meta["FirstName"]);
        }