Skip to content

Commit 7ff7f46

Browse files
committed
lag èn hikari instans, så man slipper unødvendig mange connections under test
1 parent 630597c commit 7ff7f46

File tree

4 files changed

+26
-0
lines changed

4 files changed

+26
-0
lines changed

core/src/test/kotlin/no/javazone/feedback/FeedbackEndpointsTest.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ import io.ktor.serialization.kotlinx.json.*
99
import io.ktor.server.testing.*
1010
import kotlinx.serialization.json.Json
1111
import no.javazone.feedback.database.TestDatabase
12+
import no.javazone.feedback.database.setupDatabase
1213
import no.javazone.feedback.request.channel.*
1314
import org.junit.jupiter.api.AfterAll
1415
import org.junit.jupiter.api.Assertions.assertEquals
1516
import org.junit.jupiter.api.Assertions.assertTrue
1617
import org.junit.jupiter.api.BeforeAll
18+
import org.junit.jupiter.api.BeforeEach
1719
import org.junit.jupiter.api.Test
1820

1921
class FeedbackEndpointsTest {
@@ -22,6 +24,7 @@ class FeedbackEndpointsTest {
2224
@JvmStatic
2325
fun setup() {
2426
TestDatabase.start()
27+
setupDatabase(TestDatabase.config())
2528
}
2629

2730
@AfterAll
@@ -31,6 +34,11 @@ class FeedbackEndpointsTest {
3134
}
3235
}
3336

37+
@BeforeEach
38+
fun cleanDatabase() {
39+
TestDatabase.cleanDatabase()
40+
}
41+
3442
@Test
3543
fun `test create feedback channel successfully`() = testApplication {
3644
application {

database/src/main/kotlin/no/javazone/feedback/database/SetupDatabase.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,13 @@ import org.jetbrains.exposed.sql.Database
1010
import kotlin.String
1111
import kotlin.use
1212

13+
private var currentDataSource: HikariDataSource? = null
14+
1315
fun setupDatabase(
1416
databaseConfig: FeedbackDatabaseConfig
1517
) {
18+
if (currentDataSource != null) return
19+
1620
val connectionPoolConfig = HikariConfig().apply {
1721
jdbcUrl = "jdbc:postgresql://${databaseConfig.host}:${databaseConfig.port}/${databaseConfig.databaseName}"
1822
username = databaseConfig.username
@@ -21,6 +25,7 @@ fun setupDatabase(
2125
maximumPoolSize = 10
2226
}
2327
val dataSource = HikariDataSource(connectionPoolConfig)
28+
currentDataSource = dataSource
2429
Database.connect(dataSource)
2530

2631
dataSource.connection.use {

database/src/main/kotlin/no/javazone/feedback/database/TestDatabase.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package no.javazone.feedback.database
22

3+
import org.jetbrains.exposed.sql.transactions.transaction
34
import org.testcontainers.containers.PostgreSQLContainer
45
import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy
56

@@ -27,4 +28,10 @@ object TestDatabase {
2728
password = container.password
2829
)
2930
}
31+
32+
fun cleanDatabase() {
33+
transaction {
34+
exec("TRUNCATE feedback_rating, feedback, rating_type, feedback_channel RESTART IDENTITY CASCADE")
35+
}
36+
}
3037
}

database/src/test/kotlin/no/javazone/feedback/database/repository/FeedbackRepositoryDbTest.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import org.junit.jupiter.api.Assertions.assertEquals
1111
import org.junit.jupiter.api.Assertions.assertInstanceOf
1212
import org.junit.jupiter.api.Assertions.assertNotNull
1313
import org.junit.jupiter.api.BeforeAll
14+
import org.junit.jupiter.api.BeforeEach
1415
import org.junit.jupiter.api.Test
1516
import org.junit.jupiter.api.assertThrows
1617

@@ -30,6 +31,11 @@ class FeedbackRepositoryDbTest {
3031
}
3132
}
3233

34+
@BeforeEach
35+
fun cleanDatabase() {
36+
TestDatabase.cleanDatabase()
37+
}
38+
3339
@Test
3440
fun `should throw ExternalIdAlreadyExistsError when inserting channel with duplicate external id`() {
3541
val channel = FeedbackChannel(

0 commit comments

Comments
 (0)