From 430643bb4737c410702bd331b7e12bfd027c229d Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 29 Apr 2021 12:14:03 +0200 Subject: [PATCH] Switch Neo4j example to use Testcontainers as the Neo4j server isn't Java 16-ready. See #606. --- neo4j/example/pom.xml | 7 ---- .../java/example/springdata/neo4j/Actor.java | 2 +- .../neo4j/ActorRepositoryIntegrationTest.java | 34 +++++++++---------- neo4j/pom.xml | 14 ++++++-- 4 files changed, 29 insertions(+), 28 deletions(-) diff --git a/neo4j/example/pom.xml b/neo4j/example/pom.xml index b5fb8b58..40a63ac1 100644 --- a/neo4j/example/pom.xml +++ b/neo4j/example/pom.xml @@ -20,13 +20,6 @@ spring-boot-starter-data-neo4j - - org.neo4j.test - neo4j-harness - 3.5.18 - test - - diff --git a/neo4j/example/src/main/java/example/springdata/neo4j/Actor.java b/neo4j/example/src/main/java/example/springdata/neo4j/Actor.java index 876ba054..583fcaa2 100644 --- a/neo4j/example/src/main/java/example/springdata/neo4j/Actor.java +++ b/neo4j/example/src/main/java/example/springdata/neo4j/Actor.java @@ -44,7 +44,7 @@ public class Actor { public void actedIn(Movie movie, List roleNames) { - Roles movieRoles = new Roles(roleNames); + var movieRoles = new Roles(roleNames); movieRoles.setMovie(movie); this.roles.add(movieRoles); diff --git a/neo4j/example/src/test/java/example/springdata/neo4j/ActorRepositoryIntegrationTest.java b/neo4j/example/src/test/java/example/springdata/neo4j/ActorRepositoryIntegrationTest.java index 9d65dbf8..69ff5145 100644 --- a/neo4j/example/src/test/java/example/springdata/neo4j/ActorRepositoryIntegrationTest.java +++ b/neo4j/example/src/test/java/example/springdata/neo4j/ActorRepositoryIntegrationTest.java @@ -20,43 +20,43 @@ import static org.assertj.core.api.Assertions.*; import java.util.Arrays; import java.util.Collections; -import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; -import org.neo4j.harness.ServerControls; -import org.neo4j.harness.TestServerBuilders; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; +import org.testcontainers.containers.Neo4jContainer; + /** * Simple integration test demonstrating the use of the ActorRepository * * @author Luanne Misquitta * @author Oliver Gierke * @author Michael J. Simons + * @author Mark Paluch */ @SpringBootTest class ActorRepositoryIntegrationTest { - private static final ServerControls neo4j = TestServerBuilders - .newInProcessBuilder().newServer(); + private static Neo4jContainer container; - @AfterAll + @BeforeAll static void stopNeo4j() { - if (neo4j != null) { - neo4j.close(); - } + container = new Neo4jContainer("neo4j:4.2.5"); + container.start(); } @DynamicPropertySource static void neo4jProperties(DynamicPropertyRegistry registry) { - registry.add("spring.neo4j.uri", neo4j::boltURI); + registry.add("spring.neo4j.uri", container::getBoltUrl); registry.add("spring.neo4j.authentication.username", () -> "neo4j"); - registry.add("spring.neo4j.authentication.password", () -> "password"); + registry.add("spring.neo4j.authentication.password", container::getAdminPassword); } @SpringBootApplication @@ -68,9 +68,9 @@ class ActorRepositoryIntegrationTest { @Test // #131 void shouldBeAbleToSaveAndLoadActor() { - Movie goblet = new Movie("Harry Potter and the Goblet of Fire"); + var goblet = new Movie("Harry Potter and the Goblet of Fire"); - Actor daniel = new Actor("Daniel Radcliffe"); + var daniel = new Actor("Daniel Radcliffe"); daniel.actedIn(goblet, Collections.singletonList("Harry Potter")); actorRepository.save(daniel); // saves the actor and the movie @@ -87,16 +87,16 @@ class ActorRepositoryIntegrationTest { @Test // #386 void shouldBeAbleToHandleNestedProperties() { - Movie theParentTrap = new Movie("The Parent Trap"); - Movie iKnowWhoKilledMe = new Movie("I Know Who Killed Me"); + var theParentTrap = new Movie("The Parent Trap"); + var iKnowWhoKilledMe = new Movie("I Know Who Killed Me"); - Actor lindsayLohan = new Actor("Lindsay Lohan"); + var lindsayLohan = new Actor("Lindsay Lohan"); lindsayLohan.actedIn(theParentTrap, Arrays.asList("Hallie Parker","Annie James")); lindsayLohan.actedIn(iKnowWhoKilledMe, Arrays.asList("Aubrey Fleming", "Dakota Moss")); actorRepository.save(lindsayLohan); - Actor nealMcDonough = new Actor("Neal McDonough"); + var nealMcDonough = new Actor("Neal McDonough"); nealMcDonough.actedIn(iKnowWhoKilledMe, Collections.singletonList("Daniel Fleming")); actorRepository.save(nealMcDonough); diff --git a/neo4j/pom.xml b/neo4j/pom.xml index 661d9a4e..a622b543 100644 --- a/neo4j/pom.xml +++ b/neo4j/pom.xml @@ -1,6 +1,4 @@ - - @@ -23,4 +21,14 @@ example - \ No newline at end of file + + + + + org.testcontainers + neo4j + + + + +