2023-07-11 14:28:25 +02:00
package no.nav.helse.sprik
import com.zaxxer.hikari.HikariConfig
import no.nav.helse.sprik.db.Database
import no.nav.helse.sprik.db.FeilmeldingRepository
import no.nav.helse.sprik.db.FeilmeldingTable
2023-07-17 16:11:35 +02:00
import no.nav.helse.sprik.modell.Feilmelding
2023-07-11 14:28:25 +02:00
import org.jetbrains.exposed.sql.deleteAll
import org.jetbrains.exposed.sql.selectAll
import org.jetbrains.exposed.sql.transactions.transaction
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeAll
2023-07-26 12:36:44 +02:00
import org.junit.jupiter.api.BeforeEach
2023-07-11 14:28:25 +02:00
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.TestInstance
2023-07-11 15:37:01 +02:00
import java.time.LocalDateTime
2023-07-11 14:28:25 +02:00
import kotlin.test.assertEquals
2023-08-01 15:37:49 +02:00
import kotlin.test.assertFalse
2023-07-11 14:28:25 +02:00
import org.jetbrains.exposed.sql.Database as ExposedDatabase
@TestInstance ( TestInstance . Lifecycle . PER _CLASS )
class FeilmeldingTest {
private val database = Database ( dbconfig ( ) ) . configureFlyway ( )
private val feilmeldingRepository = FeilmeldingRepository ( )
2023-08-01 15:37:49 +02:00
2023-08-02 09:44:50 +02:00
fun getId ( ) = transaction {
FeilmeldingTable . selectAll ( ) . single ( ) [ FeilmeldingTable . id ]
}
2023-07-11 14:28:25 +02:00
@BeforeAll
fun setup ( ) {
ExposedDatabase . connect ( database . dataSource )
}
2023-07-26 12:36:44 +02:00
@BeforeEach
fun lagreFeilmelding ( ) {
2023-08-02 09:44:50 +02:00
val feilmelding = Feilmelding ( null , " Test " , " Testesen " , LocalDateTime . of ( 2023 , 1 , 1 , 8 , 0 ) , 0 , true )
2023-07-26 12:36:44 +02:00
feilmeldingRepository . lagre ( feilmelding )
}
2023-07-11 14:28:25 +02:00
@AfterEach
fun wipe ( ) {
transaction {
FeilmeldingTable . deleteAll ( )
}
}
2023-08-02 09:44:50 +02:00
2023-07-11 15:37:01 +02:00
@Test
fun `Sett opp testdatabasen riktig` ( ) {
transaction {
assertEquals ( 1 , FeilmeldingTable . selectAll ( ) . map {
it
} . size )
}
}
2023-07-11 14:28:25 +02:00
@Test
fun `Lagrer feilmelding i databasen` ( ) {
transaction {
val actual = FeilmeldingTable . selectAll ( ) . single ( )
2023-07-17 16:11:35 +02:00
assertEquals ( " Test " , actual [ FeilmeldingTable . tittel ] )
assertEquals ( " Testesen " , actual [ FeilmeldingTable . beskrivelse ] )
2023-07-11 15:37:01 +02:00
assertEquals ( LocalDateTime . of ( 2023 , 1 , 1 , 8 , 0 ) , actual [ FeilmeldingTable . dato ] )
2023-08-02 09:44:50 +02:00
assertEquals ( 1 , actual [ FeilmeldingTable . id ] )
2023-07-11 14:28:25 +02:00
}
}
2023-07-20 15:51:05 +02:00
@Test
fun `Henter alle feilmeldinger i databasen` ( ) {
transaction {
2023-07-26 12:18:03 +02:00
val resultat : List < Feilmelding > = feilmeldingRepository . hentAlleFeilmeldinger ( )
2023-07-20 15:51:05 +02:00
val actual = FeilmeldingTable . selectAll ( )
2023-07-26 12:18:03 +02:00
assertEquals ( actual . map { it } . size , resultat . size )
assertEquals ( " Test " , resultat [ 0 ] . tittel )
assertEquals ( " Testesen " , resultat [ 0 ] . beskrivelse )
assertEquals ( LocalDateTime . of ( 2023 , 1 , 1 , 8 , 0 ) , resultat [ 0 ] . dato )
2023-07-20 15:51:05 +02:00
}
}
2023-07-26 12:18:03 +02:00
@Test
fun `Henter feilmeldinger som matcher søk` ( ) {
val sokeresultat : List < Feilmelding > = feilmeldingRepository . hentSokteFeilmeldinger ( " Test " )
assertEquals ( 1 , sokeresultat . size )
assertEquals ( " Test " , sokeresultat [ 0 ] . tittel )
assertEquals ( " Testesen " , sokeresultat [ 0 ] . beskrivelse )
}
@Test
fun `Henter feilmeldinger som har søkestreng som substreng` ( ) {
2023-07-26 13:26:17 +02:00
val sokeresultat : List < Feilmelding > = feilmeldingRepository . hentSokteFeilmeldinger ( " este " )
2023-07-26 12:18:03 +02:00
assertEquals ( 1 , sokeresultat . size )
assertEquals ( " Test " , sokeresultat [ 0 ] . tittel )
assertEquals ( " Testesen " , sokeresultat [ 0 ] . beskrivelse )
}
@Test
fun `Finner ingen feilmeldinger som matcher søk` ( ) {
val sokeresultat : List < Feilmelding > = feilmeldingRepository . hentSokteFeilmeldinger ( " abrakadabra " )
assertEquals ( 0 , sokeresultat . size )
}
2023-07-26 13:26:17 +02:00
@Test
fun `Søk er ikke case sensitivt` ( ) {
val sokeresultat : List < Feilmelding > = feilmeldingRepository . hentSokteFeilmeldinger ( " test " )
assertEquals ( 1 , sokeresultat . size )
assertEquals ( " Test " , sokeresultat [ 0 ] . tittel )
assertEquals ( " Testesen " , sokeresultat [ 0 ] . beskrivelse )
}
2023-08-01 14:11:52 +02:00
@Test
fun `Oppdaterer en feilmelding` ( ) {
2023-08-02 09:44:50 +02:00
val oppdatertFeilmelding = Feilmelding ( getId ( ) , " Oppdatert " , " Oppdatert feil " , LocalDateTime . of ( 2023 , 1 , 1 , 8 , 0 ) , 1 , false )
2023-08-01 15:37:49 +02:00
feilmeldingRepository . oppdaterFeilmelding ( oppdatertFeilmelding )
2023-08-02 09:44:50 +02:00
val actualOppdatert = transaction { FeilmeldingTable . selectAll ( ) . single ( ) }
assertEquals ( " Oppdatert " , actualOppdatert [ FeilmeldingTable . tittel ] )
assertEquals ( " Oppdatert feil " , actualOppdatert [ FeilmeldingTable . beskrivelse ] )
assertFalse ( actualOppdatert [ FeilmeldingTable . haster ] )
assertEquals ( 1 , actualOppdatert [ FeilmeldingTable . arbeidsstatus ] )
2023-08-01 14:11:52 +02:00
}
2023-08-02 09:44:50 +02:00
2023-07-11 14:28:25 +02:00
}