Update to Java-Driver 2.0.0-alpha02.
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -99,7 +99,7 @@
|
||||
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||
<mockito.version>2.23.4</mockito.version>
|
||||
<neo4j-java-driver.version>2.0.0-alpha01</neo4j-java-driver.version>
|
||||
<neo4j-java-driver.version>2.0.0-alpha02</neo4j-java-driver.version>
|
||||
<neo4j.version>3.5.2</neo4j.version>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<reactive-streams.version>1.2.1</reactive-streams.version>
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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<String> 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);
|
||||
|
||||
@@ -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<SessionParametersTemplate> 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);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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<String, Object> 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<Integer> 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<String, Object> 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<String, Object> 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<String, Object> 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<Map<String, Object>> {
|
||||
|
||||
@@ -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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<Consumer> 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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user