Skip to content

Commit 2f05339

Browse files
committed
chore: fix tests
1 parent 867124f commit 2f05339

7 files changed

Lines changed: 64 additions & 48 deletions

File tree

boot-kotlin-co/pom.xml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
</dependency>
5353
<dependency>
5454
<groupId>org.jetbrains.kotlin</groupId>
55-
<artifactId>kotlin-stdlib-jdk8</artifactId>
55+
<artifactId>kotlin-stdlib</artifactId>
5656
</dependency>
5757
<dependency>
5858
<groupId>org.jetbrains.kotlinx</groupId>
@@ -101,6 +101,12 @@
101101
<artifactId>springmockk</artifactId>
102102
<version>${springmockk.version}</version>
103103
</dependency>
104+
<dependency>
105+
<groupId>org.springframework.boot</groupId>
106+
<artifactId>spring-boot-testcontainers</artifactId>
107+
<scope>test</scope>
108+
</dependency>
109+
104110
<dependency>
105111
<groupId>org.testcontainers</groupId>
106112
<artifactId>mongodb</artifactId>
@@ -181,6 +187,4 @@
181187
</snapshots>
182188
</pluginRepository>
183189
</pluginRepositories>
184-
185-
186190
</project>

boot-kotlin-co/src/main/kotlin/com/example/demo/DemoApplication.kt

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import kotlinx.coroutines.flow.Flow
44
import org.slf4j.LoggerFactory
55
import org.springframework.boot.SpringApplication
66
import org.springframework.boot.autoconfigure.SpringBootApplication
7-
import org.springframework.context.event.ContextRefreshedEvent
7+
import org.springframework.boot.context.event.ApplicationReadyEvent
88
import org.springframework.context.event.EventListener
99
import org.springframework.data.annotation.Id
1010
import org.springframework.data.mongodb.core.mapping.Document
@@ -13,7 +13,15 @@ import org.springframework.http.HttpStatus
1313
import org.springframework.http.ProblemDetail
1414
import org.springframework.http.ResponseEntity
1515
import org.springframework.stereotype.Component
16-
import org.springframework.web.bind.annotation.*
16+
import org.springframework.web.bind.annotation.DeleteMapping
17+
import org.springframework.web.bind.annotation.ExceptionHandler
18+
import org.springframework.web.bind.annotation.GetMapping
19+
import org.springframework.web.bind.annotation.PathVariable
20+
import org.springframework.web.bind.annotation.PostMapping
21+
import org.springframework.web.bind.annotation.PutMapping
22+
import org.springframework.web.bind.annotation.RequestBody
23+
import org.springframework.web.bind.annotation.RequestMapping
24+
import org.springframework.web.bind.annotation.RestController
1725
import java.net.URI
1826
import java.time.LocalDateTime
1927

@@ -81,12 +89,14 @@ class DataInitializer(val posts: PostRepository) {
8189
private val log = LoggerFactory.getLogger(DataInitializer::class.java)
8290
}
8391

84-
@EventListener(value = [ContextRefreshedEvent::class])
92+
@EventListener(value = [ApplicationReadyEvent::class])
8593
suspend fun run() {
8694
log.info("start data initialization ...")
8795

88-
val samplePosts = listOf("Post one", "Post two").map { Post(title = it, content = "content of $it") }
89-
posts.saveAll(samplePosts).collect { log.debug("saved post: $it") }
96+
val samplePosts = listOf("Post one", "Post two")
97+
.map { Post(title = it, content = "content of $it") }
98+
posts.saveAll(samplePosts)
99+
.collect { log.debug("saved post: $it") }
90100

91101
log.info("data initialization is done ...")
92102
}

boot-kotlin-co/src/test/kotlin/com/example/demo/ApplicationTests.kt

Lines changed: 0 additions & 31 deletions
This file was deleted.

boot-kotlin-co/src/test/kotlin/com/example/demo/IntegrationTests.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,14 @@ import org.junit.jupiter.api.BeforeAll
66
import org.junit.jupiter.api.Test
77
import org.springframework.boot.test.context.SpringBootTest
88
import org.springframework.boot.test.web.server.LocalServerPort
9+
import org.springframework.context.annotation.Import
910
import org.springframework.http.HttpStatus
1011
import org.springframework.http.MediaType
1112
import org.springframework.web.reactive.function.client.WebClient
1213
import reactor.test.StepVerifier
1314

1415
@SpringBootTest(classes = [DemoApplication::class], webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
16+
@Import(TestcontainersConfiguration::class)
1517
class IntegrationTests {
1618

1719
private lateinit var client: WebClient

boot-kotlin-co/src/test/kotlin/com/example/demo/PostRepositoryTest.kt

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import org.junit.jupiter.api.Test
99
import org.slf4j.LoggerFactory
1010
import org.springframework.beans.factory.annotation.Autowired
1111
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest
12+
import org.springframework.context.annotation.Import
1213
import org.springframework.data.mongodb.core.ReactiveMongoTemplate
1314
import org.springframework.test.context.DynamicPropertyRegistry
1415
import org.springframework.test.context.DynamicPropertySource
@@ -19,19 +20,20 @@ import org.testcontainers.junit.jupiter.Testcontainers
1920

2021
@Testcontainers
2122
@DataMongoTest
23+
@Import(TestcontainersConfiguration::class)
2224
class PostRepositoryTest {
2325
companion object {
2426
private val log = LoggerFactory.getLogger(PostRepositoryTest::class.java)
2527

26-
@Container
27-
val mongoDBContainer: MongoDBContainer = MongoDBContainer("mongo")
28-
29-
@DynamicPropertySource
30-
fun registerDynamicProperties(registry: DynamicPropertyRegistry) {
31-
registry.add("spring.data.mongodb.uri") {
32-
mongoDBContainer.replicaSetUrl
33-
}
34-
}
28+
// @Container
29+
// val mongoDBContainer: MongoDBContainer = MongoDBContainer("mongo")
30+
//
31+
// @DynamicPropertySource
32+
// fun registerDynamicProperties(registry: DynamicPropertyRegistry) {
33+
// registry.add("spring.data.mongodb.uri") {
34+
// mongoDBContainer.replicaSetUrl
35+
// }
36+
// }
3537

3638
}
3739

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.example.demo
2+
3+
import org.springframework.boot.fromApplication
4+
import org.springframework.boot.with
5+
6+
7+
fun main(args: Array<String>) {
8+
fromApplication<DemoApplication>().with(TestcontainersConfiguration::class).run(*args)
9+
}
10+
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.example.demo
2+
3+
import org.springframework.boot.test.context.TestConfiguration
4+
import org.springframework.boot.testcontainers.service.connection.ServiceConnection
5+
import org.springframework.context.annotation.Bean
6+
import org.testcontainers.containers.MongoDBContainer
7+
import org.testcontainers.utility.DockerImageName
8+
9+
@TestConfiguration(proxyBeanMethods = false)
10+
class TestcontainersConfiguration {
11+
12+
@Bean
13+
@ServiceConnection
14+
fun mongoDbContainer(): MongoDBContainer {
15+
return MongoDBContainer(DockerImageName.parse("mongo:latest"))
16+
}
17+
18+
}
19+

0 commit comments

Comments
 (0)