diff --git a/pom.xml b/pom.xml index aa91ab839..4884dfe50 100644 --- a/pom.xml +++ b/pom.xml @@ -99,7 +99,7 @@ ${java.version} ${java.version} 2.23.4 - 2.0.0-alpha01 + 2.0.0-alpha02 3.5.2 UTF-8 1.2.1 diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/DefaultNeo4jClient.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/DefaultNeo4jClient.java index a93e55fb8..dd69cbf71 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/DefaultNeo4jClient.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/DefaultNeo4jClient.java @@ -39,7 +39,6 @@ import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Supplier; -import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; import org.neo4j.driver.Record; import org.neo4j.driver.Session; @@ -67,10 +66,7 @@ class DefaultNeo4jClient implements Neo4jClient { DefaultNeo4jClient(Driver driver) { this.driver = driver; - // This will go away - try (Session session = this.driver.session(t -> t.withDefaultAccessMode(AccessMode.READ))) { - typeSystem = session.typeSystem(); - } + this.typeSystem = driver.defaultTypeSystem(); } AutoCloseableStatementRunner getStatementRunner(final String targetDatabase) { diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/DefaultReactiveNeo4jClient.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/DefaultReactiveNeo4jClient.java index 4afd95e46..fbf5185e6 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/DefaultReactiveNeo4jClient.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/DefaultReactiveNeo4jClient.java @@ -33,10 +33,8 @@ import java.util.function.BiFunction; import java.util.function.Function; import java.util.function.Supplier; -import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; import org.neo4j.driver.Record; -import org.neo4j.driver.Session; import org.neo4j.driver.exceptions.NoSuchRecordException; import org.neo4j.driver.reactive.RxSession; import org.neo4j.driver.reactive.RxStatementRunner; @@ -68,10 +66,7 @@ class DefaultReactiveNeo4jClient implements ReactiveNeo4jClient { DefaultReactiveNeo4jClient(Driver driver) { this.driver = driver; - // This will go away - try (Session session = this.driver.session(t -> t.withDefaultAccessMode(AccessMode.READ))) { - typeSystem = session.typeSystem(); - } + this.typeSystem = driver.defaultTypeSystem(); } // Internal helper methods for managing transactional state diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/transaction/Neo4jConnectionHolder.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/transaction/Neo4jConnectionHolder.java index a1cd8641a..a56319d33 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/transaction/Neo4jConnectionHolder.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/transaction/Neo4jConnectionHolder.java @@ -18,11 +18,10 @@ */ package org.springframework.data.neo4j.core.transaction; -import java.util.Optional; - import org.neo4j.driver.Session; import org.neo4j.driver.Transaction; import org.neo4j.driver.TransactionConfig; +import org.springframework.lang.Nullable; import org.springframework.transaction.support.ResourceHolderSupport; import org.springframework.util.Assert; @@ -64,11 +63,9 @@ class Neo4jConnectionHolder extends ResourceHolderSupport { return namesMapToTheSameDatabase(this.databaseName, inDatabase) ? transaction : null; } - static boolean namesMapToTheSameDatabase(String name1, String name2) { - String d1 = Optional.ofNullable(name1).orElse(Neo4jTransactionUtils.DEFAULT_DATABASE_NAME); - String d2 = Optional.ofNullable(name2).orElse(Neo4jTransactionUtils.DEFAULT_DATABASE_NAME); + static boolean namesMapToTheSameDatabase(@Nullable String name1, @Nullable String name2) { - return d1.equals(d2); + return name1 == null && name2 == null || (name1 != null && name1.equals(name2)); } void commit() { diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionManager.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionManager.java index f6459e6ec..05fd789ea 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionManager.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionManager.java @@ -53,10 +53,22 @@ import org.springframework.util.Assert; @Slf4j public class Neo4jTransactionManager extends AbstractPlatformTransactionManager { + /** + * The underlying driver, which is also the synchronisation object. + */ private final Driver driver; + /** + * The name of the target database. + */ + private final String databaseName; public Neo4jTransactionManager(Driver driver) { + this(driver, null); + } + + public Neo4jTransactionManager(Driver driver, String databaseName) { this.driver = driver; + this.databaseName = databaseName; } @Override @@ -82,15 +94,14 @@ public class Neo4jTransactionManager extends AbstractPlatformTransactionManager boolean readOnly = definition.isReadOnly(); AccessMode accessMode = readOnly ? AccessMode.READ : AccessMode.WRITE; List bookmarks = Collections.emptyList(); // TODO Bookmarksupport - String database = ""; // TODO Database selection TransactionSynchronizationManager.setCurrentTransactionReadOnly(readOnly); try { Session session = this.driver - .session(t -> t.withDefaultAccessMode(accessMode).withBookmarks(bookmarks).withDatabase(database)); + .session(t -> t.withDefaultAccessMode(accessMode).withBookmarks(bookmarks).withDatabase(databaseName)); - Neo4jConnectionHolder connectionHolder = new Neo4jConnectionHolder(database, session, transactionConfig); + Neo4jConnectionHolder connectionHolder = new Neo4jConnectionHolder(databaseName, session, transactionConfig); connectionHolder.setSynchronizedWithTransaction(true); transactionObject.setResourceHolder(connectionHolder); TransactionSynchronizationManager.bindResource(this.driver, connectionHolder); diff --git a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionUtils.java b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionUtils.java index 237c2abc9..3bbc7484f 100644 --- a/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionUtils.java +++ b/spring-data-neo4j/src/main/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionUtils.java @@ -37,8 +37,6 @@ import org.springframework.transaction.support.TransactionSynchronizationManager */ public final class Neo4jTransactionUtils { - public static final String DEFAULT_DATABASE_NAME = ""; - /** * The default session uses {@link AccessMode#WRITE} and an empty list of bookmarks. * @@ -46,10 +44,14 @@ public final class Neo4jTransactionUtils { * @return Session parameters to configure the default session used */ public static Consumer defaultSessionParameters(@Nullable String databaseName) { - return t -> t - .withDefaultAccessMode(AccessMode.WRITE) - .withBookmarks(Collections.EMPTY_LIST) - .withDatabase(Optional.ofNullable(databaseName).orElse(DEFAULT_DATABASE_NAME)); + return (SessionParametersTemplate t) -> { + t.withDefaultAccessMode(AccessMode.WRITE) + .withBookmarks(Collections.EMPTY_LIST); + + if (databaseName != null) { + t.withDatabase(databaseName); + } + }; } /** diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/Neo4jClientTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/Neo4jClientTest.java index 9c344a4bb..eeb2282be 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/Neo4jClientTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/Neo4jClientTest.java @@ -21,7 +21,6 @@ package org.springframework.data.neo4j.core; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; import static org.mockito.hamcrest.MockitoHamcrest.argThat; -import static org.springframework.data.neo4j.core.transaction.Neo4jTransactionUtils.*; import java.time.LocalDate; import java.util.ArrayList; @@ -92,13 +91,12 @@ class Neo4jClientTest { @BeforeEach void prepareMocks() { - when(sessionParametersTemplate.withDatabase(anyString())).thenReturn(sessionParametersTemplate); when(sessionParametersTemplate.withBookmarks(anyList())).thenReturn(sessionParametersTemplate); when(sessionParametersTemplate.withDefaultAccessMode(any(AccessMode.class))) .thenReturn(sessionParametersTemplate); when(driver.session(any(Consumer.class))).thenReturn(session); - when(session.typeSystem()).thenReturn(typeSystem); + when(driver.defaultTypeSystem()).thenReturn(typeSystem); } @AfterEach @@ -135,7 +133,7 @@ class Neo4jClientTest { assertThat(usedBikes).hasSize(2); - verifyDatabaseSelection(DEFAULT_DATABASE_NAME); + verifyDatabaseSelection(null); Map expectedParameters = new HashMap<>(); expectedParameters.putAll(parameters); @@ -146,12 +144,13 @@ class Neo4jClientTest { verify(statementResult).stream(); verify(record1).asMap(); verify(record2).asMap(); - verify(session, times(2)).close(); + verify(session).close(); } @Test void databaseSelectionShouldBePossibleOnlyOnce() { + when(sessionParametersTemplate.withDatabase(anyString())).thenReturn(sessionParametersTemplate); when(session.run(anyString(), anyMap())).thenReturn(statementResult); when(statementResult.stream()).thenReturn(Stream.of(record1, record2)); @@ -176,7 +175,7 @@ class Neo4jClientTest { verify(session).run(eq(cypher), argThat(new MapAssertionMatcher(expectedParameters))); verify(statementResult).stream(); verify(record1).asMap(); - verify(session, times(2)).close(); + verify(session).close(); } @Nested @@ -193,14 +192,16 @@ class Neo4jClientTest { assertThat(result).isPresent().hasValue(42); - verifyDatabaseSelection(DEFAULT_DATABASE_NAME); + verifyDatabaseSelection(null); - verify(session, times(2)).close(); + verify(session).close(); } @Test void withDatabase() { + when(sessionParametersTemplate.withDatabase(anyString())).thenReturn(sessionParametersTemplate); + Neo4jClient client = Neo4jClient.create(driver); Optional result = client .delegateTo(runner -> Optional.of(42)) @@ -211,7 +212,7 @@ class Neo4jClientTest { verifyDatabaseSelection("aDatabase"); - verify(session, times(2)).close(); + verify(session).close(); } } @@ -241,7 +242,7 @@ class Neo4jClientTest { assertThat(bikeOwners).hasSize(1).first() .hasFieldOrPropertyWithValue("name", "michael"); - verifyDatabaseSelection(DEFAULT_DATABASE_NAME); + verifyDatabaseSelection(null); Map expectedParameters = new HashMap<>(); expectedParameters.put("name", "michael"); @@ -249,7 +250,7 @@ class Neo4jClientTest { verify(session).run(eq(cypher), argThat(new MapAssertionMatcher(expectedParameters))); verify(statementResult).stream(); verify(record1).get("name"); - verify(session, times(2)).close(); + verify(session).close(); } @Test @@ -272,12 +273,12 @@ class Neo4jClientTest { }) .all()); - verifyDatabaseSelection(DEFAULT_DATABASE_NAME); + verifyDatabaseSelection(null); verify(session).run(eq("MATCH (n) RETURN n"), argThat(new MapAssertionMatcher(Collections.emptyMap()))); verify(statementResult).stream(); verify(record1).get("name"); - verify(session, times(2)).close(); + verify(session).close(); } @Test @@ -298,14 +299,14 @@ class Neo4jClientTest { .bind(michael).with(new BikeOwnerBinder()) .run(); - verifyDatabaseSelection(DEFAULT_DATABASE_NAME); + verifyDatabaseSelection(null); Map expectedParameters = new HashMap<>(); expectedParameters.put("name", "Michael"); verify(session).run(eq(cypher), argThat(new MapAssertionMatcher(expectedParameters))); verify(statementResult).consume(); - verify(session, times(2)).close(); + verify(session).close(); } @Test @@ -328,12 +329,12 @@ class Neo4jClientTest { assertThat(numberOfBikes).isPresent().hasValue(23L); - verifyDatabaseSelection(DEFAULT_DATABASE_NAME); + verifyDatabaseSelection(null); verify(session).run(eq(cypher), anyMap()); verify(statementResult).hasNext(); verify(statementResult).single(); - verify(session, times(2)).close(); + verify(session).close(); } } @@ -353,14 +354,14 @@ class Neo4jClientTest { .bind("fixie").to("name") .run(); - verifyDatabaseSelection(DEFAULT_DATABASE_NAME); + verifyDatabaseSelection(null); Map expectedParameters = new HashMap<>(); expectedParameters.put("name", "fixie"); verify(session).run(eq(cypher), argThat(new MapAssertionMatcher(expectedParameters))); verify(statementResult).consume(); - verify(session, times(2)).close(); + verify(session).close(); } static class BikeOwner { @@ -417,9 +418,14 @@ class Neo4jClientTest { } void verifyDatabaseSelection(String targetDatabase) { - verify(driver, times(2)).session(sessionTemplateCaptor.capture()); + + verify(driver).session(sessionTemplateCaptor.capture()); sessionTemplateCaptor.getValue().accept(sessionParametersTemplate); - verify(sessionParametersTemplate).withDatabase(targetDatabase); + if (targetDatabase != null) { + verify(sessionParametersTemplate).withDatabase(targetDatabase); + } else { + verify(sessionParametersTemplate, never()).withDatabase(any()); + } } static class MapAssertionMatcher extends AssertionMatcher> { diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/ReactiveNeo4jClientTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/ReactiveNeo4jClientTest.java index 632e14b2a..c0dad2ab2 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/ReactiveNeo4jClientTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/ReactiveNeo4jClientTest.java @@ -21,7 +21,6 @@ package org.springframework.data.neo4j.core; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import static org.mockito.hamcrest.MockitoHamcrest.argThat; -import static org.springframework.data.neo4j.core.transaction.Neo4jTransactionUtils.*; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -46,11 +45,10 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.neo4j.driver.AccessMode; import org.neo4j.driver.Driver; import org.neo4j.driver.Record; -import org.neo4j.driver.Session; import org.neo4j.driver.Values; import org.neo4j.driver.internal.SessionParameters; -import org.neo4j.driver.reactive.RxResult; import org.neo4j.driver.reactive.RxSession; +import org.neo4j.driver.reactive.RxStatementResult; import org.neo4j.driver.reactive.RxTransaction; import org.neo4j.driver.summary.ResultSummary; import org.neo4j.driver.types.TypeSystem; @@ -69,9 +67,6 @@ class ReactiveNeo4jClientTest { @Mock private Driver driver; - @Mock - private Session goAwaySession; - @Mock private TypeSystem typeSystem; @@ -84,7 +79,7 @@ class ReactiveNeo4jClientTest { private RxSession session; @Mock - private RxResult statementResult; + private RxStatementResult statementResult; @Mock private RxTransaction transaction; @@ -101,10 +96,8 @@ class ReactiveNeo4jClientTest { @BeforeEach void prepareMocks() { - when(driver.session(any(Consumer.class))).thenReturn(goAwaySession); - when(goAwaySession.typeSystem()).thenReturn(typeSystem); + when(driver.defaultTypeSystem()).thenReturn(typeSystem); - when(sessionParametersTemplate.withDatabase(anyString())).thenReturn(sessionParametersTemplate); when(sessionParametersTemplate.withBookmarks(anyList())).thenReturn(sessionParametersTemplate); when(sessionParametersTemplate.withDefaultAccessMode(any(AccessMode.class))) .thenReturn(sessionParametersTemplate); @@ -153,7 +146,7 @@ class ReactiveNeo4jClientTest { .expectNextCount(2L) .verifyComplete(); - verifyDatabaseSelection(DEFAULT_DATABASE_NAME); + verifyDatabaseSelection(null); Map expectedParameters = new HashMap<>(); expectedParameters.putAll(parameters); @@ -171,6 +164,7 @@ class ReactiveNeo4jClientTest { @Test void databaseSelectionShouldBePossibleOnlyOnce() { + when(sessionParametersTemplate.withDatabase(anyString())).thenReturn(sessionParametersTemplate); when(transaction.run(anyString(), anyMap())).thenReturn(statementResult); when(transaction.commit()).thenReturn(Mono.empty()); when(statementResult.records()).thenReturn(Flux.just(record1, record2)); @@ -219,7 +213,7 @@ class ReactiveNeo4jClientTest { .expectNext(21) .verifyComplete(); - verifyDatabaseSelection(DEFAULT_DATABASE_NAME); + verifyDatabaseSelection(null); verify(transaction).commit(); verify(session).close(); @@ -228,6 +222,7 @@ class ReactiveNeo4jClientTest { @Test void withDatabase() { + when(sessionParametersTemplate.withDatabase(anyString())).thenReturn(sessionParametersTemplate); when(transaction.commit()).thenReturn(Mono.empty()); ReactiveNeo4jClient client = ReactiveNeo4jClient.create(driver); @@ -275,7 +270,7 @@ class ReactiveNeo4jClientTest { .expectNextMatches(o -> o.getName().equals("michael")) .verifyComplete(); - verifyDatabaseSelection(DEFAULT_DATABASE_NAME); + verifyDatabaseSelection(null); Map expectedParameters = new HashMap<>(); expectedParameters.put("name", "michael"); @@ -311,7 +306,7 @@ class ReactiveNeo4jClientTest { .expectNextCount(1) .verifyError(); - verifyDatabaseSelection(DEFAULT_DATABASE_NAME); + verifyDatabaseSelection(null); verify(transaction).run(eq("MATCH (n) RETURN n"), argThat(new MapAssertionMatcher(Collections.emptyMap()))); verify(statementResult).records(); @@ -344,7 +339,7 @@ class ReactiveNeo4jClientTest { .expectNext(resultSummary) .verifyComplete(); - verifyDatabaseSelection(DEFAULT_DATABASE_NAME); + verifyDatabaseSelection(null); Map expectedParameters = new HashMap<>(); expectedParameters.put("name", "Michael"); @@ -377,7 +372,7 @@ class ReactiveNeo4jClientTest { .expectNext(23L) .verifyComplete(); - verifyDatabaseSelection(DEFAULT_DATABASE_NAME); + verifyDatabaseSelection(null); verify(transaction).run(eq(cypher), anyMap()); verify(transaction).commit(); @@ -406,7 +401,7 @@ class ReactiveNeo4jClientTest { .expectNext(resultSummary) .verifyComplete(); - verifyDatabaseSelection(DEFAULT_DATABASE_NAME); + verifyDatabaseSelection(null); Map expectedParameters = new HashMap<>(); expectedParameters.put("name", "fixie"); @@ -420,6 +415,10 @@ class ReactiveNeo4jClientTest { void verifyDatabaseSelection(String targetDatabase) { verify(driver).rxSession(sessionTemplateCaptor.capture()); sessionTemplateCaptor.getValue().accept(sessionParametersTemplate); - verify(sessionParametersTemplate).withDatabase(targetDatabase); + if (targetDatabase != null) { + verify(sessionParametersTemplate).withDatabase(targetDatabase); + } else { + verify(sessionParametersTemplate, never()).withDatabase(any()); + } } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/TransactionHandlingTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/TransactionHandlingTest.java index 4e8720df1..9101c8327 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/TransactionHandlingTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/TransactionHandlingTest.java @@ -71,15 +71,14 @@ class TransactionHandlingTest { @BeforeEach void prepareMocks() { - when(driver.session(any(Consumer.class))).thenReturn(session); - when(session.typeSystem()).thenReturn(typeSystem); + when(driver.defaultTypeSystem()).thenReturn(typeSystem); } @AfterEach void verifyTypeSystemOnSession() { - verify(session).typeSystem(); + verify(driver).defaultTypeSystem(); } @Nested @@ -96,6 +95,7 @@ class TransactionHandlingTest { ArgumentCaptor consumerCaptor = ArgumentCaptor.forClass(Consumer.class); + when(driver.session(any(Consumer.class))).thenReturn(session); when(sessionParametersTemplate.withDatabase(anyString())).thenReturn(sessionParametersTemplate); when(sessionParametersTemplate.withBookmarks(anyList())).thenReturn(sessionParametersTemplate); when(sessionParametersTemplate.withDefaultAccessMode(any(AccessMode.class))) @@ -107,12 +107,12 @@ class TransactionHandlingTest { s.run("MATCH (n) RETURN n"); } - verify(driver, times(2)).session(consumerCaptor.capture()); + verify(driver).session(consumerCaptor.capture()); consumerCaptor.getValue().accept(sessionParametersTemplate); verify(sessionParametersTemplate).withDatabase("aDatabase"); verify(session).run(any(String.class)); - verify(session, times(2)).close(); + verify(session).close(); verifyNoMoreInteractions(driver, sessionParametersTemplate, session, transaction); } @@ -122,6 +122,7 @@ class TransactionHandlingTest { AtomicBoolean transactionIsOpen = new AtomicBoolean(true); + when(driver.session(any(Consumer.class))).thenReturn(session); when(session.isOpen()).thenReturn(true); when(session.beginTransaction(any(TransactionConfig.class))).thenReturn(transaction); // Mock closing of the transaction @@ -148,7 +149,7 @@ class TransactionHandlingTest { verify(transaction).success(); verify(transaction).close(); verify(session).isOpen(); - verify(session, times(2)).close(); + verify(session).close(); verifyNoMoreInteractions(driver, session, transaction); } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jConnectionHolderTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jConnectionHolderTest.java index 546fa759f..a93874494 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jConnectionHolderTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jConnectionHolderTest.java @@ -19,7 +19,6 @@ package org.springframework.data.neo4j.core.transaction; import static org.assertj.core.api.Assertions.*; -import static org.springframework.data.neo4j.core.transaction.Neo4jTransactionUtils.*; import org.junit.jupiter.api.Nested; import org.junit.jupiter.params.ParameterizedTest; @@ -36,9 +35,6 @@ class Neo4jConnectionHolderTest { @ParameterizedTest @CsvSource({ ",", - "," + DEFAULT_DATABASE_NAME, - DEFAULT_DATABASE_NAME + ",", - DEFAULT_DATABASE_NAME + "," + DEFAULT_DATABASE_NAME, "a,a" }) void nameComparisionShouldWorkForNamesTargetingTheSame(String name1, String name2) { diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionManagerTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionManagerTest.java index 7c85318fa..96bb8c647 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionManagerTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionManagerTest.java @@ -56,11 +56,11 @@ class Neo4jTransactionManagerTest { @Test public void triggerCommitCorrectly() { + when(driver.defaultTypeSystem()).thenReturn(typeSystem); when(driver.session(any(Consumer.class))).thenReturn(session); when(session.beginTransaction(any(TransactionConfig.class))).thenReturn(transaction); when(transaction.run(anyString(), anyMap())).thenReturn(statementResult); when(session.isOpen()).thenReturn(true); - when(session.typeSystem()).thenReturn(typeSystem); when(transaction.isOpen()).thenReturn(true, false); Neo4jTransactionManager txManager = new Neo4jTransactionManager(driver); @@ -71,7 +71,7 @@ class Neo4jTransactionManagerTest { txManager.commit(txStatus); - verify(driver, times(2)).session(any(Consumer.class)); + verify(driver).session(any(Consumer.class)); verify(session).isOpen(); verify(session).beginTransaction(any(TransactionConfig.class)); @@ -80,6 +80,6 @@ class Neo4jTransactionManagerTest { verify(transaction).success(); verify(transaction).close(); - verify(session, times(2)).close(); + verify(session).close(); } } diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionUtilsTest.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionUtilsTest.java index 3f110f6a2..c5690a6f1 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionUtilsTest.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/core/transaction/Neo4jTransactionUtilsTest.java @@ -54,7 +54,7 @@ import org.springframework.transaction.support.TransactionTemplate; @MockitoSettings(strictness = Strictness.LENIENT) class Neo4jTransactionUtilsTest { - private String databaseName = Neo4jTransactionUtils.DEFAULT_DATABASE_NAME; + private String databaseName = "aDatabase"; @Mock private Driver driver; @@ -101,7 +101,7 @@ class Neo4jTransactionUtilsTest { @Test void shouldOpenNewTransaction() { - Neo4jTransactionManager txManager = new Neo4jTransactionManager(driver); + Neo4jTransactionManager txManager = new Neo4jTransactionManager(driver, databaseName); TransactionTemplate txTemplate = new TransactionTemplate(txManager); txTemplate.execute(new TransactionCallbackWithoutResult() { @@ -134,7 +134,7 @@ class Neo4jTransactionUtilsTest { @Test void shouldParticipateInOngoingTransaction() { - Neo4jTransactionManager txManager = new Neo4jTransactionManager(driver); + Neo4jTransactionManager txManager = new Neo4jTransactionManager(driver, databaseName); TransactionTemplate txTemplate = new TransactionTemplate(txManager); txTemplate.execute(new TransactionCallbackWithoutResult() {