Skip to content

Commit 3cacdea

Browse files
committed
test: add DatabaseContainer for MongoDB integration using Testcontainers
1 parent 2ed264f commit 3cacdea

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package org.soujava.demos.mongodb.config;
2+
3+
import org.eclipse.jnosql.communication.Settings;
4+
import org.eclipse.jnosql.databases.mongodb.communication.MongoDBDocumentConfiguration;
5+
import org.eclipse.jnosql.databases.mongodb.communication.MongoDBDocumentConfigurations;
6+
import org.eclipse.jnosql.databases.mongodb.communication.MongoDBDocumentManager;
7+
import org.eclipse.jnosql.databases.mongodb.communication.MongoDBDocumentManagerFactory;
8+
import org.eclipse.jnosql.mapping.core.config.MappingConfigurations;
9+
import org.testcontainers.containers.GenericContainer;
10+
import org.testcontainers.containers.wait.strategy.Wait;
11+
12+
import java.util.HashMap;
13+
import java.util.Map;
14+
15+
public enum DatabaseContainer {
16+
17+
INSTANCE;
18+
19+
private final GenericContainer<?> mongodb =
20+
new GenericContainer<>("mongo:latest")
21+
.withExposedPorts(27017)
22+
.waitingFor(Wait.defaultWaitStrategy());
23+
24+
{
25+
mongodb.start();
26+
}
27+
public MongoDBDocumentManager get(String database) {
28+
Settings settings = getSettings(database);
29+
MongoDBDocumentConfiguration configuration = new MongoDBDocumentConfiguration();
30+
MongoDBDocumentManagerFactory factory = configuration.apply(settings);
31+
return factory.apply(database);
32+
}
33+
34+
35+
private Settings getSettings(String database) {
36+
Map<String,Object> settings = new HashMap<>();
37+
settings.put(MongoDBDocumentConfigurations.HOST.get()+".1", host());
38+
settings.put(MappingConfigurations.DOCUMENT_DATABASE.get(), database);
39+
return Settings.of(settings);
40+
}
41+
42+
public String host() {
43+
return mongodb.getHost() + ":" + mongodb.getFirstMappedPort();
44+
}
45+
}

0 commit comments

Comments
 (0)