⚗️ Hjelpefunksjoner for å skrive tester til databasen

Co-authored-by: Markus A. R. Johansen <markus.aleksander.rakil.johansen@nav.no>
Co-authored-by: Amalie Erdal Mansåker <amalie.erdal.mansaker@nav.no>
Co-authored-by: Hege Haavaldsen <hege.haavaldsen@nav.no>
Co-authored-by: Helene Arnesen <helene.arnesen@nav.no>
This commit is contained in:
Sindre Kjelsrud 2023-07-10 16:23:06 +02:00
parent 77abcef166
commit 9c5613c707

View file

@ -0,0 +1,43 @@
package no.nav.helse.sprik
import com.zaxxer.hikari.HikariConfig
import no.nav.helse.sprik.db.Database
import org.flywaydb.core.Flyway
import org.junit.jupiter.api.Test
import org.testcontainers.containers.PostgreSQLContainer
import kotlin.test.assertEquals
// Lager Docker-container som databasen kan kjør på, og setter opp env-variabler for oss
fun postgres() = PostgreSQLContainer<Nothing>("postgres:15").apply {
withReuse(true)
withLabel("App", "db")
start()
println("Databasen har startet opp på port $firstMappedPort")
}
// Lager en testconfig for oss for å connecte til databasen
fun dbconfig(): HikariConfig {
val postgres = postgres()
return HikariConfig().apply {
jdbcUrl = postgres.jdbcUrl
username = postgres.username
password = postgres.password
maximumPoolSize = 2
minimumIdle = 1
idleTimeout = 500000
connectionTimeout = 10000
maxLifetime = 600000
initializationFailTimeout = 5000
}
}
// Migrerer databasen
fun Database.configureFlyway(): Database = this.also { database ->
Flyway.configure()
.dataSource(database.dataSource)
.failOnMissingLocations(true)
.cleanDisabled(false)
.load()
.also(Flyway::clean)
.migrate()
}