diff --git a/src/Core/Models/GraphQLFilterParsers.cs b/src/Core/Models/GraphQLFilterParsers.cs index 153def832f..90deb884b3 100644 --- a/src/Core/Models/GraphQLFilterParsers.cs +++ b/src/Core/Models/GraphQLFilterParsers.cs @@ -227,6 +227,7 @@ public Predicate Parse( cosmosQueryStructure.DatabaseObject.Name = sourceName; cosmosQueryStructure.SourceAlias = sourceAlias; + cosmosQueryStructure.EntityName = entityName; } } } diff --git a/src/Service.Tests/CosmosTests/QueryFilterTests.cs b/src/Service.Tests/CosmosTests/QueryFilterTests.cs index 187b447973..636988331c 100644 --- a/src/Service.Tests/CosmosTests/QueryFilterTests.cs +++ b/src/Service.Tests/CosmosTests/QueryFilterTests.cs @@ -899,6 +899,31 @@ public async Task TestFilterWithEntityNameAlias() await ExecuteAndValidateResult(_graphQLQueryName, gqlQuery, dbQuery); } + /// + /// Test filters on two different nested objects simultaneously + /// + [TestMethod] + public async Task TestFilterOnTwoDifferentNestedObjects() + { + string gqlQuery = @"{ + planets(first: 10, " + QueryBuilder.FILTER_FIELD_NAME + @" : { + character: { name: { eq: ""planet character"" } }, + earth: { type: { eq: ""earth4"" } } + }) + { + items { + id + name + } + } + }"; + + string dbQuery = "SELECT c.id, c.name FROM c " + + "WHERE c.character.name = \"planet character\" AND c.earth.type = \"earth4\""; + + await ExecuteAndValidateResult(_graphQLQueryName, gqlQuery, dbQuery); + } + /// /// For "item-level-permission-role" role, DB policies are defined. This test confirms that all the DB policies are considered. /// For the reference, Below conditions are applied for an Entity in Db Config file.