@@ -14,50 +14,70 @@ import (
14
14
15
15
func TestMongoDB (t * testing.T ) {
16
16
type tests struct {
17
- name string
18
- image string
17
+ name string
18
+ opts []testcontainers. ContainerCustomizer
19
19
}
20
20
testCases := []tests {
21
21
{
22
- name : "From Docker Hub" ,
23
- image : "mongo:6" ,
22
+ name : "From Docker Hub" ,
23
+ opts : []testcontainers.ContainerCustomizer {
24
+ testcontainers .WithImage ("mongo:6" ),
25
+ },
24
26
},
25
27
{
26
- name : "Community Server" ,
27
- image : "mongodb/mongodb-community-server:7.0.2-ubi8" ,
28
+ name : "Community Server" ,
29
+ opts : []testcontainers.ContainerCustomizer {
30
+ testcontainers .WithImage ("mongodb/mongodb-community-server:7.0.2-ubi8" ),
31
+ },
28
32
},
29
33
{
30
- name : "Enterprise Server" ,
31
- image : "mongodb/mongodb-enterprise-server:7.0.0-ubi8" ,
34
+ name : "Enterprise Server" ,
35
+ opts : []testcontainers.ContainerCustomizer {
36
+ testcontainers .WithImage ("mongodb/mongodb-enterprise-server:7.0.0-ubi8" ),
37
+ },
38
+ },
39
+ {
40
+ name : "With Replica set and mongo:4" ,
41
+ opts : []testcontainers.ContainerCustomizer {
42
+ testcontainers .WithImage ("mongo:4" ),
43
+ mongodb .WithReplicaSet (),
44
+ },
45
+ },
46
+ {
47
+ name : "With Replica set and mongo:6" ,
48
+ opts : []testcontainers.ContainerCustomizer {
49
+ testcontainers .WithImage ("mongo:6" ),
50
+ mongodb .WithReplicaSet (),
51
+ },
32
52
},
33
53
}
34
54
35
55
for _ , tc := range testCases {
36
- image := tc . image
37
- t .Run (image , func (t * testing.T ) {
38
- t .Parallel ()
56
+ tc := tc
57
+ t .Run (tc . name , func (tt * testing.T ) {
58
+ tt .Parallel ()
39
59
40
60
ctx := context .Background ()
41
61
42
- mongodbContainer , err := mongodb .RunContainer (ctx , testcontainers . WithImage ( image ) )
62
+ mongodbContainer , err := mongodb .RunContainer (ctx , tc . opts ... )
43
63
if err != nil {
44
- t .Fatalf ("failed to start container: %s" , err )
64
+ tt .Fatalf ("failed to start container: %s" , err )
45
65
}
46
66
47
67
defer func () {
48
68
if err := mongodbContainer .Terminate (ctx ); err != nil {
49
- t .Fatalf ("failed to terminate container: %s" , err )
69
+ tt .Fatalf ("failed to terminate container: %s" , err )
50
70
}
51
71
}()
52
72
53
73
endpoint , err := mongodbContainer .ConnectionString (ctx )
54
74
if err != nil {
55
- t .Fatalf ("failed to get connection string: %s" , err )
75
+ tt .Fatalf ("failed to get connection string: %s" , err )
56
76
}
57
77
58
78
mongoClient , err := mongo .Connect (ctx , options .Client ().ApplyURI (endpoint ))
59
79
if err != nil {
60
- t .Fatalf ("failed to connect to MongoDB: %s" , err )
80
+ tt .Fatalf ("failed to connect to MongoDB: %s" , err )
61
81
}
62
82
63
83
err = mongoClient .Ping (ctx , nil )
@@ -66,7 +86,7 @@ func TestMongoDB(t *testing.T) {
66
86
}
67
87
68
88
if mongoClient .Database ("test" ).Name () != "test" {
69
- t .Fatalf ("failed to connect to the correct database" )
89
+ tt .Fatalf ("failed to connect to the correct database" )
70
90
}
71
91
})
72
92
}
0 commit comments