Skip to content

Commit ecf1f3e

Browse files
committed
mongodb: use ServiceConnection
1 parent 962dba1 commit ecf1f3e

File tree

10 files changed

+74
-42
lines changed

10 files changed

+74
-42
lines changed

generators/spring-boot/generators/cucumber/templates/src/test/java/_package_/cucumber/CucumberTestContextConfiguration.java.ejs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,14 @@
1919
package <%= packageName %>.cucumber;
2020

2121
import <%= packageName %>.IntegrationTest;
22+
import <%= packageName %>.config.DatabaseTestcontainer;
2223
import <%= packageName %>.security.AuthoritiesConstants;
2324

2425
import io.cucumber.spring.CucumberContextConfiguration;
2526

27+
import org.testcontainers.junit.jupiter.Testcontainers;
28+
29+
import org.springframework.boot.testcontainers.context.ImportTestcontainers;
2630
<%_ if (reactive) { _%>
2731
import org.springframework.boot.webtestclient.autoconfigure.AutoConfigureWebTestClient;
2832
<%_ } else { _%>
@@ -36,6 +40,10 @@ import org.springframework.test.context.ActiveProfiles;
3640
@ActiveProfiles({ "test", "test<%- locals.defaultEnvironment %>" })
3741
<%_ } _%>
3842
@CucumberContextConfiguration
43+
<%_ if (databaseTypeMongodb) { _%>
44+
@Testcontainers
45+
@ImportTestcontainers(DatabaseTestcontainer.class)
46+
<%_ } _%>
3947
@IntegrationTest
4048
<%_ if (reactive) { _%>
4149
@AutoConfigureWebTestClient(timeout = IntegrationTest.DEFAULT_TIMEOUT)

generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/service/UserServiceIT.java.ejs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package <%= packageName %>.service;
2020

2121
import <%= packageName %>.IntegrationTest;
2222
import <%= packageName %>.config.Constants;
23+
import <%= packageName %>.config.DatabaseTestcontainer;
2324
<%_ if ((databaseTypeSql || databaseTypeMongodb || databaseTypeNeo4j || databaseTypeCouchbase) && authenticationTypeSession && !reactive) { _%>
2425
import <%= packageName %>.domain.PersistentToken;
2526
<%_ } _%>
@@ -51,6 +52,7 @@ import org.junit.jupiter.api.AfterEach;
5152
import org.junit.jupiter.api.BeforeEach;
5253
import org.junit.jupiter.api.Test;
5354
import org.springframework.beans.factory.annotation.Autowired;
55+
import org.springframework.boot.testcontainers.context.ImportTestcontainers;
5456
<%_ if (searchEngineElasticsearch) { _%>
5557
import org.springframework.test.context.bean.override.mockito.MockitoSpyBean;
5658
<%_ } _%>
@@ -134,9 +136,15 @@ import org.springframework.cache.Cache;
134136
import java.util.Objects;
135137
<%_ } _%>
136138

139+
import org.testcontainers.junit.jupiter.Testcontainers;
140+
137141
/**
138142
* Integration tests for {@link UserService}.
139143
*/
144+
<%_ if (databaseTypeMongodb) { _%>
145+
@Testcontainers
146+
@ImportTestcontainers(DatabaseTestcontainer.class)
147+
<%_ } _%>
140148
@IntegrationTest
141149
<%_ if (databaseTypeSql && !reactive) { _%>
142150
@Transactional

generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/PublicUserResourceIT.java.ejs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ package <%= packageName %>.web.rest;
2121
import static org.assertj.core.api.Assertions.assertThat;
2222

2323
import <%= packageName %>.IntegrationTest;
24+
import <%= packageName %>.config.DatabaseTestcontainer;
2425
<%_ if (databaseTypeSql && reactive) { _%>
2526
import <%= packageName %>.config.Constants;
2627
<%_ } _%>
@@ -42,6 +43,7 @@ import <%= packageName %>.repository.EntityManager;
4243
import org.junit.jupiter.api.AfterEach;
4344
import org.junit.jupiter.api.BeforeEach;
4445
import org.junit.jupiter.api.Test;
46+
import org.springframework.boot.testcontainers.context.ImportTestcontainers;
4547
import org.springframework.beans.factory.annotation.Autowired;
4648
<%_ if (reactive) { _%>
4749
import org.springframework.boot.webtestclient.autoconfigure.AutoConfigureWebTestClient;
@@ -93,6 +95,8 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder
9395
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
9496
<%_ } _%>
9597

98+
import org.testcontainers.junit.jupiter.Testcontainers;
99+
96100
/**
97101
* Integration tests for the {@link PublicUserResource} REST controller.
98102
*/
@@ -102,6 +106,10 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
102106
@AutoConfigureMockMvc
103107
<%_ } _%>
104108
@WithMockUser(authorities = AuthoritiesConstants.ADMIN)
109+
<%_ if (databaseTypeMongodb) { _%>
110+
@Testcontainers
111+
@ImportTestcontainers(DatabaseTestcontainer.class)
112+
<%_ } _%>
105113
@IntegrationTest
106114
class PublicUserResourceIT {
107115

generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/UserResourceIT.java.ejs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ if (!reactive && databaseTypeSql) {
2323
saveMethod = 'saveAndFlush';
2424
}
2525
_%>
26+
import <%= packageName %>.config.DatabaseTestcontainer;
2627
import <%= packageName %>.IntegrationTest;
2728

2829
<%_ if (databaseTypeSql && reactive) { _%>
@@ -55,6 +56,7 @@ import org.junit.jupiter.api.AfterEach;
5556
import org.junit.jupiter.api.BeforeEach;
5657
import org.junit.jupiter.api.Test;
5758
import org.springframework.beans.factory.annotation.Autowired;
59+
import org.springframework.boot.testcontainers.context.ImportTestcontainers;
5860
<%_ if (reactive) { _%>
5961
import org.springframework.boot.webtestclient.autoconfigure.AutoConfigureWebTestClient;
6062
<%_ } else { _%>
@@ -110,6 +112,8 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder
110112
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
111113
<%_ } _%>
112114

115+
import org.testcontainers.junit.jupiter.Testcontainers;
116+
113117
/**
114118
* Integration tests for the {@link UserResource} REST controller.
115119
*/
@@ -119,6 +123,10 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
119123
@AutoConfigureMockMvc
120124
<%_ } _%>
121125
@WithMockUser(authorities = AuthoritiesConstants.ADMIN)
126+
<%_ if (databaseTypeMongodb) { _%>
127+
@Testcontainers
128+
@ImportTestcontainers(DatabaseTestcontainer.class)
129+
<%_ } _%>
122130
@IntegrationTest
123131
class UserResourceIT {
124132

generators/spring-boot/templates/src/test/java/_package_/_entityPackage_/web/rest/_entityClass_ResourceIT.java.ejs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ _%>
6060
import <%= packageName %>.web.rest.TestUtil;
6161
<% } %>
6262
import <%= packageName %>.IntegrationTest;
63+
import <%= packageName %>.config.DatabaseTestcontainer;
6364
import <%= entityAbsolutePackage %>.domain.<%= persistClass %>;
6465
<%_
6566
var imported = [];
@@ -121,6 +122,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
121122
import org.mockito.junit.jupiter.MockitoExtension;
122123
<%_ } _%>
123124
import org.springframework.beans.factory.annotation.Autowired;
125+
import org.springframework.boot.testcontainers.context.ImportTestcontainers;
124126
<%_ if (reactive) { _%>
125127
import org.springframework.boot.webtestclient.autoconfigure.AutoConfigureWebTestClient;
126128
<%_ } else { _%>
@@ -247,9 +249,16 @@ import static org.awaitility.Awaitility.await;
247249
import <%= entityAbsolutePackage %>.domain.enumeration.<%= field.fieldType %>;
248250
<%_ }
249251
} _%>
252+
253+
import org.testcontainers.junit.jupiter.Testcontainers;
254+
250255
/**
251256
* Integration tests for the {@link <%= entityClass %>Resource} REST controller.
252257
*/
258+
<%_ if (databaseTypeMongodb) { _%>
259+
@Testcontainers
260+
@ImportTestcontainers(DatabaseTestcontainer.class)
261+
<%_ } _%>
253262
@IntegrationTest
254263
<%_ if (skipJunitTests) { _%>
255264
@Disabled("<%- skipJunitTests %>")

generators/spring-boot/templates/src/test/java/_package_/web/rest/AccountResourceIT.java.ejs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package <%= packageName %>.web.rest;
2020

2121
import <%= packageName %>.IntegrationTest;
2222
import <%= packageName %>.config.Constants;
23+
import <%= packageName %>.config.DatabaseTestcontainer;
2324
<%_ if (authenticationTypeSession && !reactive) { _%>
2425
import <%= packageName %>.domain.PersistentToken;
2526
<%_ } _%>
@@ -50,6 +51,7 @@ import org.junit.jupiter.api.Test;
5051
import org.junit.jupiter.params.ParameterizedTest;
5152
import org.junit.jupiter.params.provider.MethodSource;
5253
import org.springframework.beans.factory.annotation.Autowired;
54+
import org.springframework.boot.testcontainers.context.ImportTestcontainers;
5355
<%_ if (reactive) { _%>
5456
import org.springframework.boot.webtestclient.autoconfigure.AutoConfigureWebTestClient;
5557
<%_ } else { _%>
@@ -102,6 +104,8 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
102104
import static org.springframework.security.test.web.servlet.response.SecurityMockMvcResultHandlers.exportTestSecurityContext;
103105
<%_ } _%>
104106

107+
import org.testcontainers.junit.jupiter.Testcontainers;
108+
105109
/**
106110
* Integration tests for the {@link AccountResource} REST controller.
107111
*/
@@ -110,6 +114,10 @@ import static org.springframework.security.test.web.servlet.response.SecurityMoc
110114
<%_ } else { _%>
111115
@AutoConfigureMockMvc
112116
<%_ } _%>
117+
<%_ if (databaseTypeMongodb) { _%>
118+
@Testcontainers
119+
@ImportTestcontainers(DatabaseTestcontainer.class)
120+
<%_ } _%>
113121
@IntegrationTest
114122
class AccountResourceIT {
115123
static final String TEST_USER_LOGIN = "test";

generators/spring-data/generators/mongodb/__snapshots__/generator.spec.ts.snap

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ exports[`generator - mongodb gateway-jwt-reactive(false)-maven-enableTranslation
254254
"src/test/java/tech/jhipster/config/CRLFLogConverterTest.java": {
255255
"stateCleared": "modified",
256256
},
257-
"src/test/java/tech/jhipster/config/MongoDbTestContainer.java": {
257+
"src/test/java/tech/jhipster/config/DatabaseTestcontainer.java": {
258258
"stateCleared": "modified",
259259
},
260260
"src/test/java/tech/jhipster/config/SpringBootTestClassOrderer.java": {
@@ -586,10 +586,10 @@ exports[`generator - mongodb gateway-jwt-reactive(true)-gradle-enableTranslation
586586
"src/test/java/com/mycompany/config/AsyncSyncConfiguration.java": {
587587
"stateCleared": "modified",
588588
},
589-
"src/test/java/com/mycompany/config/JHipsterBlockHoundIntegration.java": {
589+
"src/test/java/com/mycompany/config/DatabaseTestcontainer.java": {
590590
"stateCleared": "modified",
591591
},
592-
"src/test/java/com/mycompany/config/MongoDbTestContainer.java": {
592+
"src/test/java/com/mycompany/config/JHipsterBlockHoundIntegration.java": {
593593
"stateCleared": "modified",
594594
},
595595
"src/test/java/com/mycompany/config/SpringBootTestClassOrderer.java": {
@@ -900,10 +900,10 @@ exports[`generator - mongodb gateway-oauth2-reactive(true)-gradle-enableTranslat
900900
"src/test/java/com/mycompany/config/AsyncSyncConfiguration.java": {
901901
"stateCleared": "modified",
902902
},
903-
"src/test/java/com/mycompany/config/JHipsterBlockHoundIntegration.java": {
903+
"src/test/java/com/mycompany/config/DatabaseTestcontainer.java": {
904904
"stateCleared": "modified",
905905
},
906-
"src/test/java/com/mycompany/config/MongoDbTestContainer.java": {
906+
"src/test/java/com/mycompany/config/JHipsterBlockHoundIntegration.java": {
907907
"stateCleared": "modified",
908908
},
909909
"src/test/java/com/mycompany/config/SpringBootTestClassOrderer.java": {
@@ -1169,7 +1169,7 @@ exports[`generator - mongodb microservice-jwt-reactive(false)-maven-enableTransl
11691169
"src/test/java/tech/jhipster/config/CRLFLogConverterTest.java": {
11701170
"stateCleared": "modified",
11711171
},
1172-
"src/test/java/tech/jhipster/config/MongoDbTestContainer.java": {
1172+
"src/test/java/tech/jhipster/config/DatabaseTestcontainer.java": {
11731173
"stateCleared": "modified",
11741174
},
11751175
"src/test/java/tech/jhipster/config/SpringBootTestClassOrderer.java": {
@@ -1453,10 +1453,10 @@ exports[`generator - mongodb microservice-jwt-reactive(true)-gradle-enableTransl
14531453
"src/test/java/com/mycompany/config/AsyncSyncConfiguration.java": {
14541454
"stateCleared": "modified",
14551455
},
1456-
"src/test/java/com/mycompany/config/JHipsterBlockHoundIntegration.java": {
1456+
"src/test/java/com/mycompany/config/DatabaseTestcontainer.java": {
14571457
"stateCleared": "modified",
14581458
},
1459-
"src/test/java/com/mycompany/config/MongoDbTestContainer.java": {
1459+
"src/test/java/com/mycompany/config/JHipsterBlockHoundIntegration.java": {
14601460
"stateCleared": "modified",
14611461
},
14621462
"src/test/java/com/mycompany/config/SpringBootTestClassOrderer.java": {
@@ -1734,10 +1734,10 @@ exports[`generator - mongodb microservice-oauth2-reactive(true)-gradle-enableTra
17341734
"src/test/java/com/mycompany/config/AsyncSyncConfiguration.java": {
17351735
"stateCleared": "modified",
17361736
},
1737-
"src/test/java/com/mycompany/config/JHipsterBlockHoundIntegration.java": {
1737+
"src/test/java/com/mycompany/config/DatabaseTestcontainer.java": {
17381738
"stateCleared": "modified",
17391739
},
1740-
"src/test/java/com/mycompany/config/MongoDbTestContainer.java": {
1740+
"src/test/java/com/mycompany/config/JHipsterBlockHoundIntegration.java": {
17411741
"stateCleared": "modified",
17421742
},
17431743
"src/test/java/com/mycompany/config/SpringBootTestClassOrderer.java": {
@@ -2063,7 +2063,7 @@ exports[`generator - mongodb monolith-jwt-reactive(false)-maven-enableTranslatio
20632063
"src/test/java/tech/jhipster/config/CRLFLogConverterTest.java": {
20642064
"stateCleared": "modified",
20652065
},
2066-
"src/test/java/tech/jhipster/config/MongoDbTestContainer.java": {
2066+
"src/test/java/tech/jhipster/config/DatabaseTestcontainer.java": {
20672067
"stateCleared": "modified",
20682068
},
20692069
"src/test/java/tech/jhipster/config/SpringBootTestClassOrderer.java": {
@@ -2386,10 +2386,10 @@ exports[`generator - mongodb monolith-jwt-reactive(true)-gradle-enableTranslatio
23862386
"src/test/java/com/mycompany/config/AsyncSyncConfiguration.java": {
23872387
"stateCleared": "modified",
23882388
},
2389-
"src/test/java/com/mycompany/config/JHipsterBlockHoundIntegration.java": {
2389+
"src/test/java/com/mycompany/config/DatabaseTestcontainer.java": {
23902390
"stateCleared": "modified",
23912391
},
2392-
"src/test/java/com/mycompany/config/MongoDbTestContainer.java": {
2392+
"src/test/java/com/mycompany/config/JHipsterBlockHoundIntegration.java": {
23932393
"stateCleared": "modified",
23942394
},
23952395
"src/test/java/com/mycompany/config/SpringBootTestClassOrderer.java": {
@@ -2631,7 +2631,7 @@ exports[`generator - mongodb monolith-oauth2-reactive(false)-maven-enableTransla
26312631
"src/test/java/tech/jhipster/config/CRLFLogConverterTest.java": {
26322632
"stateCleared": "modified",
26332633
},
2634-
"src/test/java/tech/jhipster/config/MongoDbTestContainer.java": {
2634+
"src/test/java/tech/jhipster/config/DatabaseTestcontainer.java": {
26352635
"stateCleared": "modified",
26362636
},
26372637
"src/test/java/tech/jhipster/config/SpringBootTestClassOrderer.java": {
@@ -2921,10 +2921,10 @@ exports[`generator - mongodb monolith-oauth2-reactive(true)-gradle-enableTransla
29212921
"src/test/java/com/mycompany/config/AsyncSyncConfiguration.java": {
29222922
"stateCleared": "modified",
29232923
},
2924-
"src/test/java/com/mycompany/config/JHipsterBlockHoundIntegration.java": {
2924+
"src/test/java/com/mycompany/config/DatabaseTestcontainer.java": {
29252925
"stateCleared": "modified",
29262926
},
2927-
"src/test/java/com/mycompany/config/MongoDbTestContainer.java": {
2927+
"src/test/java/com/mycompany/config/JHipsterBlockHoundIntegration.java": {
29282928
"stateCleared": "modified",
29292929
},
29302930
"src/test/java/com/mycompany/config/SpringBootTestClassOrderer.java": {
@@ -3259,7 +3259,7 @@ exports[`generator - mongodb monolith-session-reactive(false)-maven-enableTransl
32593259
"src/test/java/tech/jhipster/config/CRLFLogConverterTest.java": {
32603260
"stateCleared": "modified",
32613261
},
3262-
"src/test/java/tech/jhipster/config/MongoDbTestContainer.java": {
3262+
"src/test/java/tech/jhipster/config/DatabaseTestcontainer.java": {
32633263
"stateCleared": "modified",
32643264
},
32653265
"src/test/java/tech/jhipster/config/SpringBootTestClassOrderer.java": {
@@ -3588,10 +3588,10 @@ exports[`generator - mongodb monolith-session-reactive(true)-gradle-enableTransl
35883588
"src/test/java/com/mycompany/config/AsyncSyncConfiguration.java": {
35893589
"stateCleared": "modified",
35903590
},
3591-
"src/test/java/com/mycompany/config/JHipsterBlockHoundIntegration.java": {
3591+
"src/test/java/com/mycompany/config/DatabaseTestcontainer.java": {
35923592
"stateCleared": "modified",
35933593
},
3594-
"src/test/java/com/mycompany/config/MongoDbTestContainer.java": {
3594+
"src/test/java/com/mycompany/config/JHipsterBlockHoundIntegration.java": {
35953595
"stateCleared": "modified",
35963596
},
35973597
"src/test/java/com/mycompany/config/SpringBootTestClassOrderer.java": {

generators/spring-data/generators/mongodb/files.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export const mongoDbFiles = asWriteFilesSection<JavaApplication>({
3737
{
3838
path: `${SERVER_TEST_SRC_DIR}_package_/`,
3939
renameTo: moveToJavaPackageTestDir,
40-
templates: ['config/MongoDbTestContainer.java'],
40+
templates: ['config/DatabaseTestcontainer.java'],
4141
},
4242
],
4343
});

generators/spring-data/generators/mongodb/generator.ts

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export default class MongoDBGenerator extends SpringBootApplicationGenerator {
4141
'9.0.0-beta.1': [
4242
`${application.javaPackageSrcDir}TestContainersSpringContextCustomizerFactory.java`,
4343
`${application.javaPackageSrcDir}config/EmbeddedMongo.java`,
44+
`${application.javaPackageSrcDir}config/MongoDbTestContainer.java`,
4445
`${application.srcTestResources}META-INF/spring.factories`,
4546
],
4647
});
@@ -89,18 +90,6 @@ export default class MongoDBGenerator extends SpringBootApplicationGenerator {
8990
]);
9091
}
9192
},
92-
integrationTest({ application, source }) {
93-
source.editJavaFile!(`${application.javaPackageTestDir}IntegrationTest.java`, {
94-
imports: [`${application.packageName}.config.MongoDbTestContainer`],
95-
annotations: [
96-
{
97-
package: 'org.springframework.boot.testcontainers.context',
98-
annotation: 'ImportTestcontainers',
99-
parameters: (_, cb) => cb.addKeyValue('value', 'MongoDbTestContainer.class'),
100-
},
101-
],
102-
});
103-
},
10493
blockhound({ application, source }) {
10594
const { reactive } = application;
10695
if (reactive) {

generators/spring-data/generators/mongodb/templates/src/test/java/_package_/config/MongoDbTestContainer.java.ejs renamed to generators/spring-data/generators/mongodb/templates/src/test/java/_package_/config/DatabaseTestcontainer.java.ejs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,17 @@ package <%= packageName %>.config;
2020

2121
import java.util.Collections;
2222

23-
import org.springframework.boot.test.context.TestConfiguration;
24-
import org.springframework.test.context.DynamicPropertyRegistry;
25-
import org.springframework.test.context.DynamicPropertySource;
23+
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
2624
import org.slf4j.Logger;
2725
import org.slf4j.LoggerFactory;
2826
import org.testcontainers.containers.output.Slf4jLogConsumer;
2927
import org.testcontainers.mongodb.MongoDBContainer;
3028
import org.testcontainers.junit.jupiter.Container;
3129

32-
public interface MongoDbTestContainer {
30+
public interface DatabaseTestcontainer {
3331
@Container
32+
@ServiceConnection
3433
MongoDBContainer mongoDbContainer = new MongoDBContainer("<%- dockerContainers.mongodb %>").withReuse(true).withLogConsumer(
35-
new Slf4jLogConsumer(LoggerFactory.getLogger(MongoDbTestContainer.class))
34+
new Slf4jLogConsumer(LoggerFactory.getLogger(DatabaseTestcontainer.class))
3635
);
37-
38-
@DynamicPropertySource
39-
static void registerProperties(DynamicPropertyRegistry registry) {
40-
registry.add("spring.mongodb.uri", mongoDbContainer::getReplicaSetUrl);
41-
}
4236
}

0 commit comments

Comments
 (0)