Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
b08016f1
Commit
b08016f1
authored
Apr 02, 2017
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polish "Add @DataNeo4jTest" contribution
Closes gh-8618
parent
b6feb475
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
76 additions
and
44 deletions
+76
-44
spring-boot-features.adoc
spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
+53
-0
pom.xml
spring-boot-test-autoconfigure/pom.xml
+0
-6
DataNeo4jTest.java
...ork/boot/test/autoconfigure/data/neo4j/DataNeo4jTest.java
+3
-1
DataNeo4jTypeExcludeFilter.java
.../autoconfigure/data/neo4j/DataNeo4jTypeExcludeFilter.java
+0
-1
DataNeo4jTestIntegrationTests.java
...toconfigure/data/neo4j/DataNeo4jTestIntegrationTests.java
+6
-5
DataNeo4jTestWithIncludeFilterIntegrationTests.java
...neo4j/DataNeo4jTestWithIncludeFilterIntegrationTests.java
+0
-1
ExampleGraph.java
...work/boot/test/autoconfigure/data/neo4j/ExampleGraph.java
+1
-0
ExampleRepository.java
...boot/test/autoconfigure/data/neo4j/ExampleRepository.java
+2
-2
ExampleService.java
...rk/boot/test/autoconfigure/data/neo4j/ExampleService.java
+1
-0
Neo4jTestServer.java
...k/boot/test/autoconfigure/data/neo4j/Neo4jTestServer.java
+10
-8
package-info.java
...est/java/org/springframework/boot/neo4j/package-info.java
+0
-20
No files found.
spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
View file @
b08016f1
...
...
@@ -5710,6 +5710,59 @@ A list of the auto-configuration that is enabled by `@DataMongoTest` can be
[[boot-features-testing-spring-boot-applications-testing-autoconfigured-neo4j-test]]
==== Auto-configured Data Neo4j tests
`@DataNeo4jTest` can be used if you want to test Neo4j applications. By default, it will
use an in-memory embedded Neo4j (if the embedded driver is available), scan for
`@NodeEntity` classes and configure Spring Data Neo4j repositories. Regular `@Component`
beans will not be loaded into the `ApplicationContext`:
[source,java,indent=0]
----
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.data.neo4j.DataNeo4jTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@DataNeo4jTest
public class ExampleDataNeo4jTests {
@Autowired
private YourRepository repository;
//
}
----
Data Neo4j tests are transactional and rollback at the end of each test by default,
see the {spring-reference}#testcontext-tx-enabling-transactions[relevant section] in the
Spring Reference Documentation for more details. If that's not what you want, you can
disable transaction management for a test or for the whole class as follows:
[source,java,indent=0]
----
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.autoconfigure.data.neo4j.DataNeo4jTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@RunWith(SpringRunner.class)
@DataNeo4jTest
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public class ExampleNonTransactionalTests {
}
----
A list of the auto-configuration that is enabled by `@DataNeo4jTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
[[boot-features-testing-spring-boot-applications-testing-autoconfigured-rest-client]]
==== Auto-configured REST clients
The `@RestClientTest` annotation can be used if you want to test REST clients. By default
...
...
spring-boot-test-autoconfigure/pom.xml
View file @
b08016f1
...
...
@@ -217,11 +217,5 @@
<artifactId>
de.flapdoodle.embed.mongo
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot
</artifactId>
<type>
test-jar
</type>
<scope>
test
</scope>
</dependency>
</dependencies>
</project>
spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTest.java
View file @
b08016f1
...
...
@@ -43,9 +43,11 @@ import org.springframework.transaction.annotation.Transactional;
* configuration relevant to Neo4j tests.
* <p>
* By default, tests annotated with {@code @DataNeo4jTest} will use an embedded in-memory
* Neo4j process (if available).
* Neo4j process (if available). They will also be transactional with the usual
* test-related semantics (i.e. rollback by default).
*
* @author Eddú Meléndez
* @author Stephane Nicoll
* @since 2.0.0
*/
@Target
(
ElementType
.
TYPE
)
...
...
spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTypeExcludeFilter.java
View file @
b08016f1
...
...
@@ -28,7 +28,6 @@ import org.springframework.core.annotation.AnnotatedElementUtils;
* {@link TypeExcludeFilter} for {@link DataNeo4jTest @DataNeo4jTest}.
*
* @author Eddú Meléndez
* @since 2.0.0
*/
class
DataNeo4jTypeExcludeFilter
extends
AnnotationCustomizableTypeExcludeFilter
{
...
...
spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestIntegrationTests.java
View file @
b08016f1
...
...
@@ -24,16 +24,16 @@ import org.neo4j.ogm.session.Session;
import
org.springframework.beans.factory.NoSuchBeanDefinitionException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.neo4j.Neo4jTestServer
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
*
Sample test for {@link DataNeo4jTest @DataNeo4jTest}
*
Integration test for {@link DataNeo4jTest}.
*
* @author Eddú Meléndez
* @author Stephane Nicoll
*/
@RunWith
(
SpringRunner
.
class
)
@DataNeo4jTest
...
...
@@ -41,7 +41,7 @@ public class DataNeo4jTestIntegrationTests {
@Rule
public
Neo4jTestServer
server
=
new
Neo4jTestServer
(
new
String
[]
{
"org.springframework.boot.test.autoconfigure.data.neo4j"
});
new
String
[]
{
"org.springframework.boot.test.autoconfigure.data.neo4j"
});
@Rule
public
ExpectedException
thrown
=
ExpectedException
.
none
();
...
...
@@ -59,8 +59,9 @@ public class DataNeo4jTestIntegrationTests {
public
void
testRepository
()
{
ExampleGraph
exampleGraph
=
new
ExampleGraph
();
exampleGraph
.
setDescription
(
"Look, new @DataNeo4jTest!"
);
exampleGraph
=
this
.
exampleRepository
.
save
(
exampleGraph
);
assertThat
(
exampleGraph
.
getId
()).
isNotNull
();
assertThat
(
exampleGraph
.
getId
()).
isNull
();
ExampleGraph
savedGraph
=
this
.
exampleRepository
.
save
(
exampleGraph
);
assertThat
(
savedGraph
.
getId
()).
isNotNull
();
assertThat
(
this
.
session
.
countEntitiesOfType
(
ExampleGraph
.
class
)).
isEqualTo
(
1
);
}
...
...
spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithIncludeFilterIntegrationTests.java
View file @
b08016f1
...
...
@@ -21,7 +21,6 @@ import org.junit.Test;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.neo4j.Neo4jTestServer
;
import
org.springframework.context.annotation.ComponentScan.Filter
;
import
org.springframework.stereotype.Service
;
import
org.springframework.test.context.junit4.SpringRunner
;
...
...
spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/ExampleGraph.java
View file @
b08016f1
...
...
@@ -49,4 +49,5 @@ public class ExampleGraph {
public
void
setDescription
(
String
description
)
{
this
.
description
=
description
;
}
}
spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/ExampleRepository.java
View file @
b08016f1
...
...
@@ -16,12 +16,12 @@
package
org
.
springframework
.
boot
.
test
.
autoconfigure
.
data
.
neo4j
;
import
org.springframework.data.neo4j.repository.
Graph
Repository
;
import
org.springframework.data.neo4j.repository.
Neo4j
Repository
;
/**
* Example repository used with {@link DataNeo4jTest} tests.
*
* @author Eddú Meléndez
*/
public
interface
ExampleRepository
extends
GraphRepository
<
ExampleGraph
>
{
public
interface
ExampleRepository
extends
Neo4jRepository
<
ExampleGraph
,
Long
>
{
}
spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/ExampleService.java
View file @
b08016f1
...
...
@@ -37,4 +37,5 @@ public class ExampleService {
public
boolean
hasNode
(
Class
<?>
clazz
)
{
return
this
.
session
.
countEntitiesOfType
(
clazz
)
==
1
;
}
}
spring-boot
/src/test/java/org/springframework/boot
/neo4j/Neo4jTestServer.java
→
spring-boot
-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data
/neo4j/Neo4jTestServer.java
View file @
b08016f1
...
...
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
neo4j
;
package
org
.
springframework
.
boot
.
test
.
autoconfigure
.
data
.
neo4j
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
...
...
@@ -23,13 +23,14 @@ import org.junit.rules.TestRule;
import
org.junit.runner.Description
;
import
org.junit.runners.model.Statement
;
import
org.neo4j.ogm.config.Configuration
;
import
org.neo4j.ogm.config.DriverConfiguration
;
import
org.neo4j.ogm.session.SessionFactory
;
/**
* {@link TestRule} for working with an optional Neo4j server.
* {@link TestRule} for working with an optional Neo4j server running on localhost. Make
* sure to disable authentication if you haven't done so already.
*
* @author Eddú Meléndez
* @author Stephane Nicoll
*/
public
class
Neo4jTestServer
implements
TestRule
{
...
...
@@ -55,12 +56,13 @@ public class Neo4jTestServer implements TestRule {
}
}
private
SessionFactory
createSessionFactory
()
{
Configuration
configuration
=
new
Configuration
();
DriverConfiguration
driverConfiguration
=
configuration
.
driverConfiguration
();
driverConfiguration
.
setDriverClassName
(
"org.neo4j.ogm.drivers.http.driver.HttpDriver"
);
driverConfiguration
.
setURI
(
"http://localhost:7474"
);
public
SessionFactory
getSessionFactory
()
{
return
this
.
sessionFactory
;
}
private
SessionFactory
createSessionFactory
()
{
Configuration
configuration
=
new
Configuration
.
Builder
()
.
uri
(
"bolt://localhost:7687"
).
build
();
SessionFactory
sessionFactory
=
new
SessionFactory
(
configuration
,
this
.
packages
);
testConnection
(
sessionFactory
);
return
sessionFactory
;
...
...
spring-boot/src/test/java/org/springframework/boot/neo4j/package-info.java
deleted
100644 → 0
View file @
b6feb475
/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Neo4j support classes
*/
package
org
.
springframework
.
boot
.
neo4j
;
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment