1
+ using System ;
2
+ using JetBrains . Annotations ;
3
+
1
4
namespace Testcontainers . Neo4j ;
2
5
3
- public sealed class Neo4jContainerTest : IAsyncLifetime
6
+ public abstract class Neo4jContainerTest : IAsyncLifetime
4
7
{
8
+ private const string Neo4jDatabase = "neo4j" ;
9
+
5
10
// # --8<-- [start:UseNeo4jContainer]
6
- private readonly Neo4jContainer _neo4jContainer = new Neo4jBuilder ( ) . Build ( ) ;
11
+ private readonly Neo4jContainer _neo4jContainer ;
12
+
13
+ private Neo4jContainerTest ( Neo4jContainer neo4jContainer )
14
+ {
15
+ _neo4jContainer = neo4jContainer ;
16
+ }
7
17
8
18
public Task InitializeAsync ( )
9
19
{
@@ -17,18 +27,53 @@ public Task DisposeAsync()
17
27
18
28
[ Fact ]
19
29
[ Trait ( nameof ( DockerCli . DockerPlatform ) , nameof ( DockerCli . DockerPlatform . Linux ) ) ]
20
- public void SessionReturnsDatabase ( )
30
+ public async Task SessionReturnsDatabase ( )
21
31
{
22
32
// Given
23
- const string database = "neo4j" ;
24
-
25
- using var driver = GraphDatabase . Driver ( _neo4jContainer . GetConnectionString ( ) ) ;
33
+ await using var driver = GraphDatabase . Driver ( _neo4jContainer . GetConnectionString ( ) ) ;
26
34
27
35
// When
28
- using var session = driver . AsyncSession ( sessionConfigBuilder => sessionConfigBuilder . WithDatabase ( database ) ) ;
36
+ await using var session = driver . AsyncSession ( sessionConfigBuilder => sessionConfigBuilder . WithDatabase ( Neo4jDatabase ) ) ;
29
37
30
38
// Then
31
- Assert . Equal ( database , session . SessionConfig . Database ) ;
39
+ Assert . Equal ( Neo4jDatabase , session . SessionConfig . Database ) ;
32
40
}
33
41
// # --8<-- [end:UseNeo4jContainer]
42
+
43
+ [ UsedImplicitly ]
44
+ public sealed class Neo4jDefaultConfiguration : Neo4jContainerTest
45
+ {
46
+ public Neo4jDefaultConfiguration ( )
47
+ : base ( new Neo4jBuilder ( ) . Build ( ) )
48
+ {
49
+ }
50
+ }
51
+
52
+ [ UsedImplicitly ]
53
+ public sealed class Neo4jEnterpriseConfiguration : Neo4jContainerTest
54
+ {
55
+ public Neo4jEnterpriseConfiguration ( )
56
+ : base ( new Neo4jBuilder ( )
57
+ . WithEnterpriseEdition ( )
58
+ . Build ( ) )
59
+ {
60
+ }
61
+
62
+ [ Fact ]
63
+ [ Trait ( nameof ( DockerCli . DockerPlatform ) , nameof ( DockerCli . DockerPlatform . Linux ) ) ]
64
+ public async Task DatabaseShouldReturnEnterpriseEdition ( )
65
+ {
66
+ // Given
67
+ await using var driver = GraphDatabase . Driver ( _neo4jContainer . GetConnectionString ( ) ) ;
68
+
69
+ // When
70
+ await using var session = driver . AsyncSession ( sessionConfigBuilder => sessionConfigBuilder . WithDatabase ( Neo4jDatabase ) ) ;
71
+ var result = await session . RunAsync ( "CALL dbms.components() YIELD edition RETURN edition" ) ;
72
+ var record = await result . SingleAsync ( ) ;
73
+ var edition = record [ "edition" ] . As < string > ( ) ;
74
+
75
+ // Then
76
+ Assert . Equal ( "enterprise" , edition ) ;
77
+ }
78
+ }
34
79
}
0 commit comments