From a9faee486d65b0dcb357873aa494a7ece0bd48e7 Mon Sep 17 00:00:00 2001 From: Andreas Berger Date: Mon, 28 Oct 2019 14:14:28 +0100 Subject: [PATCH] fix tests for native id --- src/main/kotlin/org/neo4j/graphql/Predicates.kt | 6 +++++- src/main/kotlin/org/neo4j/graphql/SchemaBuilder.kt | 6 +++--- src/test/resources/dynamic-property-tests.adoc | 4 ++-- src/test/resources/filter-tests.adoc | 8 ++++---- src/test/resources/movie-tests.adoc | 4 ++-- 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/main/kotlin/org/neo4j/graphql/Predicates.kt b/src/main/kotlin/org/neo4j/graphql/Predicates.kt index a2cc44d9..0cfb753e 100644 --- a/src/main/kotlin/org/neo4j/graphql/Predicates.kt +++ b/src/main/kotlin/org/neo4j/graphql/Predicates.kt @@ -73,7 +73,11 @@ data class ExpressionPredicate(val name: String, val op: Operators, val value: A override fun toExpression(variable: String): Cypher { val paramName: String = ProjectionBase.FILTER + paramName(variable, name, value).capitalize() val query = if (fieldDefinition.isNativeId()) { - "${not}ID($variable) ${op.op} toInteger(\$$paramName)" + if (op.list){ + "${not}ID($variable) ${op.op} [id IN \$$paramName | toInteger(id)]" + } else { + "${not}ID($variable) ${op.op} toInteger(\$$paramName)" + } } else { "$not$variable.${name.quote()} ${op.op} \$$paramName" } diff --git a/src/main/kotlin/org/neo4j/graphql/SchemaBuilder.kt b/src/main/kotlin/org/neo4j/graphql/SchemaBuilder.kt index 6ed81026..5db55533 100644 --- a/src/main/kotlin/org/neo4j/graphql/SchemaBuilder.kt +++ b/src/main/kotlin/org/neo4j/graphql/SchemaBuilder.kt @@ -34,13 +34,13 @@ object SchemaBuilder { @JvmStatic @JvmOverloads - fun buildSchema(typeDefinitionRegistry: TypeDefinitionRegistry , config: SchemaConfig = SchemaConfig(), dataFetchingInterceptor: DataFetchingInterceptor? = null): GraphQLSchema { - val enhancedRegistry = typeDefinitionRegistry.merge(getNeo4jEnhancements()) + fun buildSchema(typeDefinitionRegistry: TypeDefinitionRegistry, config: SchemaConfig = SchemaConfig(), dataFetchingInterceptor: DataFetchingInterceptor? = null): GraphQLSchema { + val enhancedRegistry = typeDefinitionRegistry.merge(getNeo4jEnhancements()) if (!enhancedRegistry.getType(QUERY).isPresent) { enhancedRegistry.add(ObjectTypeDefinition.newObjectTypeDefinition().name(QUERY).build()) } - val builder = RuntimeWiring.newRuntimeWiring() .scalar(DynamicProperties.INSTANCE) + val builder = RuntimeWiring.newRuntimeWiring().scalar(DynamicProperties.INSTANCE) enhancedRegistry .getTypes(InterfaceTypeDefinition::class.java) diff --git a/src/test/resources/dynamic-property-tests.adoc b/src/test/resources/dynamic-property-tests.adoc index 7819dcbe..3cb2a178 100644 --- a/src/test/resources/dynamic-property-tests.adoc +++ b/src/test/resources/dynamic-property-tests.adoc @@ -207,7 +207,7 @@ mutation { [source,cypher] ---- MATCH ()-[updateKnows:KNOWS]->() -WHERE ID(updateKnows) = $updateKnows_id +WHERE ID(updateKnows) = toInteger($updateKnows_id) SET updateKnows = { `prefix.foo`: $updateKnowsJsonFoo } WITH updateKnows RETURN updateKnows { @@ -240,7 +240,7 @@ mutation { [source,cypher] ---- MATCH ()-[mergeKnows:KNOWS]->() -WHERE ID(mergeKnows) = $mergeKnows_id +WHERE ID(mergeKnows) = toInteger($mergeKnows_id) SET mergeKnows += { `prefix.foo`: $mergeKnowsJsonFoo } WITH mergeKnows RETURN mergeKnows { json:apoc.map.fromPairs([key IN keys(mergeKnows) WHERE key STARTS WITH 'prefix.'| [substring(key,7), mergeKnows[key]]]) diff --git a/src/test/resources/filter-tests.adoc b/src/test/resources/filter-tests.adoc index fc70399a..2d8b1507 100644 --- a/src/test/resources/filter-tests.adoc +++ b/src/test/resources/filter-tests.adoc @@ -386,7 +386,7 @@ RETURN person { .name } AS person [source,cypher] ---- MATCH (company:Company) -WHERE ID(company) = $filterCompany_id +WHERE ID(company) = toInteger($filterCompany_id) RETURN company { .name, _id:ID(company) } AS company ---- @@ -408,7 +408,7 @@ RETURN company { .name, _id:ID(company) } AS company [source,cypher] ---- MATCH (company:Company) -WHERE ID(company) IN $filterCompany_id +WHERE ID(company) IN [id IN $filterCompany_id | toInteger(id)] RETURN company { .name, _id:ID(company) } AS company ---- @@ -430,7 +430,7 @@ RETURN company { .name, _id:ID(company) } AS company [source,cypher] ---- MATCH (company:Company) -WHERE NOT ID(company) IN $filterCompany_id +WHERE NOT ID(company) IN [id IN $filterCompany_id | toInteger(id)] RETURN company { .name, _id:ID(company) } AS company ---- @@ -452,7 +452,7 @@ RETURN company { .name, _id:ID(company) } AS company [source,cypher] ---- MATCH (company:Company) -WHERE NOT ID(company) = $filterCompany_id +WHERE NOT ID(company) = toInteger($filterCompany_id) RETURN company { .name, _id:ID(company) } AS company ---- diff --git a/src/test/resources/movie-tests.adoc b/src/test/resources/movie-tests.adoc index 5ba3aa49..708668a2 100644 --- a/src/test/resources/movie-tests.adoc +++ b/src/test/resources/movie-tests.adoc @@ -878,7 +878,7 @@ ORDER BY movie.year DESC LIMIT $movieFirst [source,cypher] ---- MATCH ()-[rated:RATED]->() -WHERE ID(rated) = $rated_id +WHERE ID(rated) = toInteger($rated_id) RETURN rated { .rating } AS rated ---- @@ -939,7 +939,7 @@ mutation { [source,cypher] ---- MATCH ()-[updateRated:RATED]->() -WHERE ID(updateRated) = $updateRated_id +WHERE ID(updateRated) = toInteger($updateRated_id) SET updateRated = { rating: $updateRatedRating } WITH updateRated RETURN updateRated { .rating } AS updateRated