예제 #1
0
        public void Creates_PagedSubquery_1_MasterQuery_Expression()
        {
            Expression <Func <JObject, IEnumerable <IssueModel> > > expected =
                data => (IEnumerable <IssueModel>)Rewritten.List.Select(
                    Rewritten.Interface.Cast(data["data"]["node"], "Repository")["issues"]["nodes"],
                    issue => new IssueModel
            {
                Number   = issue["number"].ToObject <int>(),
                Comments = Rewritten.List.ToSubqueryList(
                    Rewritten.List.Select(
                        issue["comments"]["nodes"],
                        comment => new CommentModel
                {
                    Id   = comment["id"].ToString(),
                    Body = comment["body"].ToObject <string>()
                }),
                    data.Annotation <ISubqueryRunner>(),
                    SubqueryPlaceholder.placeholder)
            }).ToList();
            var expectedString = ExpressionRewriterAssertions.ReplaceSubqueryPlaceholders(expected.ToReadableString(), "SimpleSubquery<IEnumerable<CommentModel>>");

            var actual       = ExpressionCompiler.GetSourceExpression(TestQueryFirstSubqueryMasterQuery.ResultBuilder);
            var actualString = actual.ToReadableString();

            Assert.Equal(ExpressionRewriterAssertions.StripWhitespace(expectedString), ExpressionRewriterAssertions.StripWhitespace(actualString));
        }
예제 #2
0
        public void Creates_Subquery_2_Expression_ParentPageInfo()
        {
            var query = new Query()
                        .Repository("foo", "bar")
                        .Select(repository => new
            {
                IntList1 = repository.Issues(null, null, null, null, null)
                           .AllPages()
                           .Select(issue => issue.Number)
                           .ToList(),
                IntList2 = repository.Issues(null, null, null, null, null)
                           .AllPages()
                           .Select(issue => issue.Number)
                           .ToList()
            }).Compile();

            var subqueries         = query.GetSubqueries();
            var queryFirstSubquery = (SimpleSubquery <IEnumerable <int> >)subqueries[1];

            var actual       = ExpressionCompiler.GetSourceExpression(queryFirstSubquery.ParentPageInfo);
            var actualString = actual.ToReadableString();

            Expression <Func <JObject, IEnumerable <JToken> > > expected = data => data.SelectTokens("$.data.repository.intList2.pageInfo");
            var expectedString = expected.ToReadableString();

            Assert.Equal(ExpressionRewriterAssertions.StripWhitespace(expectedString), ExpressionRewriterAssertions.StripWhitespace(actualString));
        }
예제 #3
0
        public void Creates_Subquery_2_Expression()
        {
            Expression <Func <JObject, IEnumerable <int> > > expected =
                data => (IEnumerable <int>)Rewritten.List.Select(
                    Rewritten.Interface.Cast(data["data"]["node"], "Repository")["issues"]["nodes"],
                    issue => issue["number"].ToObject <int>()).ToList();
            var expectedString = expected.ToReadableString();

            var query = new Query()
                        .Repository("foo", "bar")
                        .Select(repository => new
            {
                IntList1 = repository.Issues(null, null, null, null, null)
                           .AllPages()
                           .Select(issue => issue.Number)
                           .ToList(),
                IntList2 = repository.Issues(null, null, null, null, null)
                           .AllPages()
                           .Select(issue => issue.Number)
                           .ToList()
            }).Compile();

            var subqueries         = query.GetSubqueries();
            var queryFirstSubquery = (SimpleSubquery <IEnumerable <int> >)subqueries[1];

            var actual       = ExpressionCompiler.GetSourceExpression(queryFirstSubquery.ResultBuilder);
            var actualString = actual.ToReadableString();

            Assert.Equal(ExpressionRewriterAssertions.StripWhitespace(expectedString), ExpressionRewriterAssertions.StripWhitespace(actualString));
        }
        public void Creates_Subquery_Expression_ParentPage()
        {
            Expression <Func <JObject, IEnumerable <JToken> > > expected = data => data.SelectTokens("$.data.repository.issues.pageInfo");
            var expectedString = expected.ToReadableString();

            var actualExpression = ExpressionCompiler.GetSourceExpression(TestQueryFirstSubquery().ParentPageInfo);
            var actualString     = actualExpression.ToReadableString();

            Assert.Equal(ExpressionRewriterAssertions.StripWhitespace(expectedString), ExpressionRewriterAssertions.StripWhitespace(actualString));
        }
        public void Creates_Subquery_Expression_PageInfo()
        {
            Expression <Func <JObject, JToken> > expected = data => data.SelectToken("data.node.issues.pageInfo");
            var expectedString = expected.ToReadableString();

            var actual       = ExpressionCompiler.GetSourceExpression(TestQueryFirstSubquery().PageInfo);
            var actualString = actual.ToReadableString();

            Assert.Equal(ExpressionRewriterAssertions.StripWhitespace(expectedString), ExpressionRewriterAssertions.StripWhitespace(actualString));
        }
예제 #6
0
        public void Creates_PagedSubquery_1_SubQuery_Expression_ParentPageInfo()
        {
            var actual       = ExpressionCompiler.GetSourceExpression(TestQueryFirstSubqueryFirstSubquery.ParentPageInfo);
            var actualString = actual.ToReadableString();

            Expression <Func <JObject, IEnumerable <JToken> > > expected = data => data.SelectTokens("$.data.node.issues.nodes.[*].comments.pageInfo");
            var expectedString = expected.ToReadableString();

            Assert.Equal(ExpressionRewriterAssertions.StripWhitespace(expectedString), ExpressionRewriterAssertions.StripWhitespace(actualString));
        }
            public void Creates_Subquery_ParentIds_Selector()
            {
                var expected   = Expected(data => data.SelectTokens("$.data.repository.id"));
                var subqueries = TestQuery.GetSubqueries();

                Assert.Single(subqueries);

                var actual = ExpressionCompiler.GetSourceExpression(subqueries[0].ParentIds);

                Assert.Equal(expected, actual.ToString());
            }
            public void Creates_Subquery_2_ParentPageInfo_Selector()
            {
                var expected   = Expected(data => data.SelectTokens("$.data.repository.issues.nodes.[*].comments.pageInfo"));
                var subqueries = TestQuery.GetSubqueries();

                Assert.Equal(2, subqueries.Count);

                var actual = ExpressionCompiler.GetSourceExpression(subqueries[1].ParentPageInfo);

                Assert.Equal(expected, actual.ToString());
            }
            public void Creates_Subquery_1_PageInfo_Selector()
            {
                var expected   = Expected(data => data.SelectToken("data.node.issues.pageInfo"));;
                var subqueries = TestQuery.GetSubqueries();

                Assert.Equal(2, subqueries.Count);

                var actual = ExpressionCompiler.GetSourceExpression(subqueries[0].PageInfo);

                Assert.Equal(expected, actual.ToString());
            }
        public void Creates_Subquery_Expression()
        {
            Expression <Func <JObject, IEnumerable <int> > > expected =
                data => (IEnumerable <int>)Rewritten.List.Select(
                    Rewritten.Interface.Cast(data["data"]["node"], "Repository")["issues"]["nodes"],
                    issue => issue["number"].ToObject <int>()).ToList();
            var expectedString = expected.ToReadableString();

            var actual       = ExpressionCompiler.GetSourceExpression(TestQueryFirstSubquery().ResultBuilder);
            var actualString = actual.ToReadableString();

            Assert.Equal(ExpressionRewriterAssertions.StripWhitespace(expectedString), ExpressionRewriterAssertions.StripWhitespace(actualString));
        }
예제 #11
0
        public void Creates_Subquery_2_MasterQuery_Expression()
        {
            Expression <Func <JObject, IEnumerable <CommentModel> > > expected =
                data => (IEnumerable <CommentModel>)Rewritten.List.Select(
                    Rewritten.Interface.Cast(data["data"]["node"], "Issue")["comments"]["nodes"],
                    comment => new CommentModel
            {
                Id   = comment["id"].ToString(),
                Body = comment["body"].ToObject <string>()
            }).ToList();
            var expectedString = expected.ToReadableString();

            var actual       = ExpressionCompiler.GetSourceExpression(TestQuerySecondSubquery.ResultBuilder);
            var actualString = actual.ToReadableString();

            Assert.Equal(ExpressionRewriterAssertions.StripWhitespace(expectedString), ExpressionRewriterAssertions.StripWhitespace(actualString));
        }
        public static void AssertSubqueryEqual <T>(Expression <Func <JObject, T> > expectedResultExpression,
                                                   Expression <Func <JObject, JToken> > expectedPageInfoExpression,
                                                   Expression <Func <JObject, IEnumerable <JToken> > > expectedParentIdExpression,
                                                   Expression <Func <JObject, IEnumerable <JToken> > > expectedParentPageInfoExpression,
                                                   PagedSubquery <T> subquery)
        {
            var resultExpression = ExpressionCompiler.GetSourceExpression(subquery.MasterQuery.ResultBuilder);

            Assert.Equal(StripWhitespace(expectedResultExpression.ToReadableString()), StripWhitespace(resultExpression.ToReadableString()));

            var pageInfoExpression = ExpressionCompiler.GetSourceExpression(subquery.PageInfo);

            Assert.Equal(StripWhitespace(expectedPageInfoExpression.ToReadableString()), StripWhitespace(pageInfoExpression.ToReadableString()));

            var parentIdExpression = ExpressionCompiler.GetSourceExpression(subquery.ParentIds);

            Assert.Equal(StripWhitespace(expectedParentIdExpression.ToReadableString()), StripWhitespace(parentIdExpression.ToReadableString()));

            var parentPageInfoExpression = ExpressionCompiler.GetSourceExpression(subquery.ParentPageInfo);

            Assert.Equal(StripWhitespace(expectedParentPageInfoExpression.ToReadableString()), StripWhitespace(parentPageInfoExpression.ToReadableString()));
        }
예제 #13
0
 public static Expression GetResultBuilderExpression <T>(this ICompiledQuery <T> query)
 {
     return(ExpressionCompiler.GetSourceExpression(((SimpleQuery <T>)query).ResultBuilder));
 }