Advertisement
Guest User

Untitled

a guest
Apr 26th, 2022
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.25 KB | None | 0 0
  1. package test;
  2.  
  3. import static org.junit.jupiter.api.Assertions.assertTrue;
  4.  
  5. import java.lang.annotation.Retention;
  6. import java.lang.annotation.RetentionPolicy;
  7. import org.junit.jupiter.api.AfterAll;
  8. import org.junit.jupiter.api.BeforeAll;
  9. import org.junit.jupiter.api.Test;
  10. import org.junit.jupiter.api.extension.BeforeTestExecutionCallback;
  11. import org.junit.jupiter.api.extension.ExtendWith;
  12. import org.junit.jupiter.api.extension.ExtensionContext;
  13. import org.neo4j.driver.Driver;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.boot.test.context.SpringBootTest;
  16. import org.springframework.test.context.DynamicPropertyRegistry;
  17. import org.springframework.test.context.DynamicPropertySource;
  18. import org.springframework.test.context.junit.jupiter.SpringExtension;
  19. import org.testcontainers.containers.Neo4jContainer;
  20.  
  21. @Retention(RetentionPolicy.RUNTIME)
  22. @interface Neo4j {
  23.   String value();
  24. }
  25.  
  26. class Neoj4Ext implements BeforeTestExecutionCallback {
  27.  
  28.   @Override
  29.   public void beforeTestExecution(ExtensionContext extensionContext) {
  30.     Neo4j neo4j = extensionContext.getRequiredTestMethod().getAnnotation(Neo4j.class);
  31.     var driver = SpringExtension.getApplicationContext(extensionContext).getBean(Driver.class);
  32.   }
  33. }
  34.  
  35. @ExtendWith(Neoj4Ext.class)
  36. @ExtendWith(SpringExtension.class)
  37. @SpringBootTest
  38. class ItTest {
  39.   protected static Neo4jContainer<?> container = new Neo4jContainer<>("neo4j:4.4")
  40.     .withAdminPassword("secret")
  41.     .withReuse(true);
  42.  
  43.   @BeforeAll
  44.   static void init() {
  45.     container.start();
  46.   }
  47.  
  48.   @AfterAll
  49.   static void destroy() {
  50.     container.close();
  51.   }
  52.  
  53.   @DynamicPropertySource
  54.   static void registerProps(DynamicPropertyRegistry registry) {
  55.     registry.add("spring.neo4j.uri", () -> container.getBoltUrl());
  56.     registry.add("spring.neo4j.authentication.username", () -> "neo4j");
  57.     registry.add("spring.neo4j.authentication.password", () -> container.getAdminPassword());
  58.   }
  59. }
  60.  
  61. public class ExampleTest extends ItTest {
  62.   @Autowired
  63.   Driver driver;
  64.  
  65.   @Test
  66.   @Neo4j("CREATE (baeldung:Company {name:\"Baeldung\"}) " +
  67.     "-[:owns]-> (tesla:Car {make: 'tesla', model: 'modelX'})" +
  68.     "RETURN baeldung, tesla")
  69.   void foo() {
  70.     assertTrue(true);
  71.   }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement