From cf7785e3493f8f9101a32bf07d356b513d4fb38d Mon Sep 17 00:00:00 2001 From: Bhaskar Mallapragada Date: Mon, 7 Nov 2022 14:30:03 -0800 Subject: [PATCH] Adding query filter tests for second level inner object in json --- .../CosmosTests/CosmosTestHelper.cs | 6 +++- .../CosmosTests/QueryFilterTests.cs | 36 +++++++++++++++++++ src/Service.Tests/CosmosTests/TestBase.cs | 3 +- src/Service/schema.gql | 3 +- 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/src/Service.Tests/CosmosTests/CosmosTestHelper.cs b/src/Service.Tests/CosmosTests/CosmosTestHelper.cs index 810b836c04..7da3fbd755 100644 --- a/src/Service.Tests/CosmosTests/CosmosTestHelper.cs +++ b/src/Service.Tests/CosmosTests/CosmosTestHelper.cs @@ -43,7 +43,11 @@ public static object GetItem(string id, string name = null, int numericVal = 4) name = "planet character", type = "Mars", homePlanet = 1, - primaryFunction = "test function" + primaryFunction = "test function", + star = new + { + name = name + "_star" + } } }; } diff --git a/src/Service.Tests/CosmosTests/QueryFilterTests.cs b/src/Service.Tests/CosmosTests/QueryFilterTests.cs index b60786cb6e..243b3d3d74 100644 --- a/src/Service.Tests/CosmosTests/QueryFilterTests.cs +++ b/src/Service.Tests/CosmosTests/QueryFilterTests.cs @@ -566,6 +566,9 @@ public async Task TestFilterOnNestedFields() name homePlanet primaryFunction + star{ + name + } } } } @@ -594,6 +597,9 @@ public async Task TestFilterOnNestedFieldsWithAnd() name homePlanet primaryFunction + star{ + name + } } } } @@ -603,6 +609,36 @@ public async Task TestFilterOnNestedFieldsWithAnd() await ExecuteAndValidateResult(_graphQLQueryName, gqlQuery, dbQuery); } + /// + /// Test filters on nested object + /// + [TestMethod] + public async Task TestFilterOnInnerNestedFields() + { + string gqlQuery = @"{ + planets(first: 1, " + QueryBuilder.FILTER_FIELD_NAME + @" : {character : {star : {name : {eq : ""Endor_star""}}}}) + { + items { + id + name + character { + id + type + name + homePlanet + primaryFunction + star{ + name + } + } + } + } + }"; + + string dbQuery = "SELECT top 1 c.id, c.name, c.character FROM c where c.character.star.name = \"Endor_star\""; + await ExecuteAndValidateResult(_graphQLQueryName, gqlQuery, dbQuery); + } + [ClassCleanup] public static void TestFixtureTearDown() { diff --git a/src/Service.Tests/CosmosTests/TestBase.cs b/src/Service.Tests/CosmosTests/TestBase.cs index 94ae2d30d4..b5a7661d0c 100644 --- a/src/Service.Tests/CosmosTests/TestBase.cs +++ b/src/Service.Tests/CosmosTests/TestBase.cs @@ -29,7 +29,8 @@ type Character @model(name:""Character"") { name : String, type: String, homePlanet: Int, - primaryFunction: String + primaryFunction: String, + star: Star } type Planet @model(name:""Planet"") { diff --git a/src/Service/schema.gql b/src/Service/schema.gql index c6db20d094..6049fa2860 100644 --- a/src/Service/schema.gql +++ b/src/Service/schema.gql @@ -3,7 +3,8 @@ type Character @model(name:"Character") { name : String, type: String, homePlanet: Int, - primaryFunction: String + primaryFunction: String, + star: Star } type Planet @model(name:"Planet"){