Skip to content

Commit 376ad70

Browse files
committed
spring-projectsGH-2543 - Fix Neo4j 5.0 Cypher incompatibility in tests.
Closes spring-projects#2543
1 parent 4d5a280 commit 376ad70

File tree

5 files changed

+31
-21
lines changed

5 files changed

+31
-21
lines changed

src/test/java/org/springframework/data/neo4j/integration/imperative/DynamicRelationshipsIT.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,13 @@ void shouldWriteDynamicRelationships(@Autowired PersonWithRelativesRepository re
214214
assertThat(newPerson.getRelatives()).containsOnlyKeys(TypeOfRelative.RELATIVE_1, TypeOfRelative.RELATIVE_2);
215215
assertThat(newPerson.getClubs()).containsOnlyKeys(TypeOfClub.BASEBALL, TypeOfClub.FOOTBALL);
216216

217-
try (Transaction transaction = driver.session().beginTransaction()) {
217+
try (Transaction transaction = driver.session(bookmarkCapture.createSessionConfig()).beginTransaction()) {
218218
long numberOfRelations = transaction
219-
.run(("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Person)) as numberOfRelations").formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
219+
.run(("MATCH (t:%s)-[r]->(:Person) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
220220
.single().get("numberOfRelations").asLong();
221221
assertThat(numberOfRelations).isEqualTo(2L);
222222
numberOfRelations = transaction
223-
.run(("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Club)) as numberOfRelations").formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
223+
.run(("MATCH (t:%s)-[r]->(:Club) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
224224
.single().get("numberOfRelations").asLong();
225225
assertThat(numberOfRelations).isEqualTo(2L);
226226
}
@@ -260,14 +260,14 @@ void shouldWriteDynamicCollectionRelationships(@Autowired PersonWithRelativesRep
260260
pets = newPerson.getPets();
261261
assertThat(pets).containsOnlyKeys(TypeOfPet.MONSTERS, TypeOfPet.FISH);
262262

263-
try (Transaction transaction = driver.session().beginTransaction()) {
263+
try (Transaction transaction = driver.session(bookmarkCapture.createSessionConfig()).beginTransaction()) {
264264
long numberOfRelations = transaction
265-
.run(("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Pet)) as numberOfRelations").formatted(labelOfTestSubject),
265+
.run(("MATCH (t:%s)-[r]->(:Pet) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject),
266266
Values.parameters("id", newPerson.getId()))
267267
.single().get("numberOfRelations").asLong();
268268
assertThat(numberOfRelations).isEqualTo(3L);
269269
numberOfRelations = transaction
270-
.run(("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Hobby)) as numberOfRelations").formatted(labelOfTestSubject),
270+
.run(("MATCH (t:%s)-[r]->(:Hobby) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject),
271271
Values.parameters("id", newPerson.getId()))
272272
.single().get("numberOfRelations").asLong();
273273
assertThat(numberOfRelations).isEqualTo(2L);

src/test/java/org/springframework/data/neo4j/integration/imperative/StringlyTypedDynamicRelationshipsIT.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -211,11 +211,11 @@ void shouldWriteDynamicRelationships(@Autowired PersonWithRelativesRepository re
211211

212212
try (Transaction transaction = driver.session(bookmarkCapture.createSessionConfig()).beginTransaction()) {
213213
long numberOfRelations = transaction
214-
.run("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Person)) as numberOfRelations".formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
214+
.run(("MATCH (t:%s)-[r]->(:Person) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
215215
.single().get("numberOfRelations").asLong();
216216
assertThat(numberOfRelations).isEqualTo(2L);
217217
numberOfRelations = transaction
218-
.run("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Club)) as numberOfRelations".formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
218+
.run(("MATCH (t:%s)-[r]->(:Club) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
219219
.single().get("numberOfRelations").asLong();
220220
assertThat(numberOfRelations).isEqualTo(2L);
221221
}
@@ -255,11 +255,13 @@ void shouldWriteDynamicCollectionRelationships(@Autowired PersonWithRelativesRep
255255

256256
try (Transaction transaction = driver.session(bookmarkCapture.createSessionConfig()).beginTransaction()) {
257257
long numberOfRelations = transaction
258-
.run("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Pet)) as numberOfRelations".formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
258+
.run(("MATCH (t:%s)-[r]->(:Pet) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject),
259+
Values.parameters("id", newPerson.getId()))
259260
.single().get("numberOfRelations").asLong();
260261
assertThat(numberOfRelations).isEqualTo(3L);
261262
numberOfRelations = transaction
262-
.run("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Hobby)) as numberOfRelations".formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
263+
.run(("MATCH (t:%s)-[r]->(:Hobby) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject),
264+
Values.parameters("id", newPerson.getId()))
263265
.single().get("numberOfRelations").asLong();
264266
assertThat(numberOfRelations).isEqualTo(2L);
265267
}

src/test/java/org/springframework/data/neo4j/integration/issues/gh2542/GH2542IT.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,11 @@ static void createConstraint() {
5252

5353
try (Session session = neo4jConnectionSupport.getDriver().session()) {
5454
session.run("MATCH (n) DETACH DELETE n");
55-
session.run("CREATE CONSTRAINT TNC IF NOT EXISTS ON (tn:TestNode) ASSERT tn.name IS UNIQUE").consume();
55+
if (neo4jConnectionSupport.isCypher5SyntaxCompatible()) {
56+
session.run("CREATE CONSTRAINT TNC IF NOT EXISTS FOR (tn:TestNode) REQUIRE tn.name IS UNIQUE").consume();
57+
} else {
58+
session.run("CREATE CONSTRAINT TNC IF NOT EXISTS ON (tn:TestNode) ASSERT tn.name IS UNIQUE").consume();
59+
}
5660
}
5761
}
5862

src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveDynamicRelationshipsIT.java

+8-6
Original file line numberDiff line numberDiff line change
@@ -220,13 +220,13 @@ void shouldWriteDynamicRelationships(@Autowired PersonWithRelativesRepository re
220220
assertThat(relatives).containsOnlyKeys(TypeOfRelative.RELATIVE_1, TypeOfRelative.RELATIVE_2);
221221
}).verifyComplete();
222222

223-
try (Transaction transaction = driver.session().beginTransaction()) {
223+
try (Transaction transaction = driver.session(bookmarkCapture.createSessionConfig()).beginTransaction()) {
224224
long numberOfRelations = transaction
225-
.run("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Person)) as numberOfRelations".formatted(labelOfTestSubject), Values.parameters("id", recorded.get(0).getId()))
225+
.run(("MATCH (t:%s)-[r]->(:Person) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
226226
.single().get("numberOfRelations").asLong();
227227
assertThat(numberOfRelations).isEqualTo(2L);
228228
numberOfRelations = transaction
229-
.run("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Club)) as numberOfRelations".formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
229+
.run(("MATCH (t:%s)-[r]->(:Club) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
230230
.single().get("numberOfRelations").asLong();
231231
assertThat(numberOfRelations).isEqualTo(2L);
232232
}
@@ -270,13 +270,15 @@ void shouldWriteDynamicCollectionRelationships(@Autowired PersonWithRelativesRep
270270
assertThat(writtenPets).containsOnlyKeys(TypeOfPet.MONSTERS, TypeOfPet.FISH);
271271
}).verifyComplete();
272272

273-
try (Transaction transaction = driver.session().beginTransaction()) {
273+
try (Transaction transaction = driver.session(bookmarkCapture.createSessionConfig()).beginTransaction()) {
274274
long numberOfRelations = transaction
275-
.run("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Pet)) as numberOfRelations".formatted(labelOfTestSubject), Values.parameters("id", recorded.get(0).getId()))
275+
.run(("MATCH (t:%s)-[r]->(:Pet) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject),
276+
Values.parameters("id", newPerson.getId()))
276277
.single().get("numberOfRelations").asLong();
277278
assertThat(numberOfRelations).isEqualTo(3L);
278279
numberOfRelations = transaction
279-
.run("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Hobby)) as numberOfRelations".formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
280+
.run(("MATCH (t:%s)-[r]->(:Hobby) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject),
281+
Values.parameters("id", newPerson.getId()))
280282
.single().get("numberOfRelations").asLong();
281283
assertThat(numberOfRelations).isEqualTo(2L);
282284
}

src/test/java/org/springframework/data/neo4j/integration/reactive/ReactiveStringlyTypeDynamicRelationshipsIT.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -221,11 +221,11 @@ void shouldWriteDynamicRelationships(@Autowired PersonWithRelativesRepository re
221221

222222
try (Transaction transaction = driver.session(bookmarkCapture.createSessionConfig()).beginTransaction()) {
223223
long numberOfRelations = transaction
224-
.run("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Person)) as numberOfRelations".formatted(labelOfTestSubject), Values.parameters("id", recorded.get(0).getId()))
224+
.run(("MATCH (t:%s)-[r]->(:Person) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
225225
.single().get("numberOfRelations").asLong();
226226
assertThat(numberOfRelations).isEqualTo(2L);
227227
numberOfRelations = transaction
228-
.run("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Club)) as numberOfRelations".formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
228+
.run(("MATCH (t:%s)-[r]->(:Club) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
229229
.single().get("numberOfRelations").asLong();
230230
assertThat(numberOfRelations).isEqualTo(2L);
231231
}
@@ -268,11 +268,13 @@ void shouldWriteDynamicCollectionRelationships(@Autowired PersonWithRelativesRep
268268

269269
try (Transaction transaction = driver.session(bookmarkCapture.createSessionConfig()).beginTransaction()) {
270270
long numberOfRelations = transaction
271-
.run("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Pet)) as numberOfRelations".formatted(labelOfTestSubject), Values.parameters("id", recorded.get(0).getId()))
271+
.run(("MATCH (t:%s)-[r]->(:Pet) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject),
272+
Values.parameters("id", newPerson.getId()))
272273
.single().get("numberOfRelations").asLong();
273274
assertThat(numberOfRelations).isEqualTo(3L);
274275
numberOfRelations = transaction
275-
.run("MATCH (t:%s) WHERE id(t) = $id RETURN size((t)-->(:Hobby)) as numberOfRelations".formatted(labelOfTestSubject), Values.parameters("id", newPerson.getId()))
276+
.run(("MATCH (t:%s)-[r]->(:Hobby) WHERE id(t) = $id RETURN count(r) as numberOfRelations").formatted(labelOfTestSubject),
277+
Values.parameters("id", newPerson.getId()))
276278
.single().get("numberOfRelations").asLong();
277279
assertThat(numberOfRelations).isEqualTo(2L);
278280
}

0 commit comments

Comments
 (0)