♻️ Refaktorere tester og kode
Co-authored-by: Hege Haavaldsen <hege.haavaldsen@nav.no>
This commit is contained in:
parent
164c554cbc
commit
e8d27f85f2
4 changed files with 273 additions and 120 deletions
|
@ -25,16 +25,15 @@ class FeilmeldingRepository {
|
|||
it[FeilmeldingTable.dato] = feilmelding.dato
|
||||
it[FeilmeldingTable.arbeidsstatus] = feilmelding.arbeidsstatus
|
||||
it[FeilmeldingTable.haster] = feilmelding.haster
|
||||
|
||||
if (feilmelding.aktorid != null){
|
||||
it[FeilmeldingTable.aktorid] = feilmelding.aktorid
|
||||
feilmelding.aktorid?.also { aktorid ->
|
||||
it[FeilmeldingTable.aktorid] = aktorid
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun radTilFeilmelding(rad: ResultRow) = Feilmelding(
|
||||
internal fun radTilFeilmelding(rad: ResultRow) = Feilmelding(
|
||||
id = rad[id],
|
||||
tittel = rad[tittel],
|
||||
beskrivelse = rad[beskrivelse],
|
||||
|
@ -50,7 +49,7 @@ class FeilmeldingRepository {
|
|||
}
|
||||
|
||||
fun hentSokteFeilmeldinger(sokeord: String): List<Feilmelding> = transaction {
|
||||
val sok = "%${sokeord.lowercase()}%"
|
||||
val sok = "%${sokeord.lowercase().trim()}%"
|
||||
|
||||
FeilmeldingTable.select(
|
||||
(FeilmeldingTable.tittel.lowerCase() like sok)
|
||||
|
@ -60,14 +59,12 @@ class FeilmeldingRepository {
|
|||
}
|
||||
|
||||
fun oppdaterFeilmelding(feilmelding: Feilmelding) = transaction {
|
||||
val id = feilmelding.id
|
||||
if (id != null) {
|
||||
FeilmeldingTable.update({ FeilmeldingTable.id eq id }) {
|
||||
it[FeilmeldingTable.tittel] = feilmelding.tittel
|
||||
it[FeilmeldingTable.beskrivelse] = feilmelding.beskrivelse
|
||||
it[FeilmeldingTable.arbeidsstatus] = feilmelding.arbeidsstatus
|
||||
it[FeilmeldingTable.haster] = feilmelding.haster
|
||||
}
|
||||
checkNotNull(feilmelding.id) { "Id kan ikke være null når vi skal oppdatere feilmelding" }
|
||||
FeilmeldingTable.update({ FeilmeldingTable.id eq feilmelding.id }) {
|
||||
it[FeilmeldingTable.tittel] = feilmelding.tittel
|
||||
it[FeilmeldingTable.beskrivelse] = feilmelding.beskrivelse
|
||||
it[FeilmeldingTable.arbeidsstatus] = feilmelding.arbeidsstatus
|
||||
it[FeilmeldingTable.haster] = feilmelding.haster
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ import java.time.LocalDateTime
|
|||
* Objekt for feilmeldinger i Sprik
|
||||
* */
|
||||
@Serializable
|
||||
class Feilmelding(
|
||||
data class Feilmelding(
|
||||
val id: Int?,
|
||||
val tittel: String,
|
||||
val beskrivelse: String,
|
||||
|
|
|
@ -8,20 +8,30 @@ import no.nav.helse.sprik.modell.Feilmelding
|
|||
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
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.*
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.TestInstance
|
||||
import java.time.LocalDateTime
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFalse
|
||||
import kotlin.test.assertNull
|
||||
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()
|
||||
private companion object {
|
||||
val feilmelding = Feilmelding(
|
||||
null,
|
||||
"Test",
|
||||
"Testesen",
|
||||
LocalDateTime.of(2023,1,1,8,0),
|
||||
0,
|
||||
true,
|
||||
null,
|
||||
null
|
||||
)
|
||||
}
|
||||
|
||||
fun getId() = transaction {
|
||||
FeilmeldingTable.selectAll().single()[FeilmeldingTable.id]
|
||||
|
@ -32,12 +42,6 @@ class FeilmeldingTest {
|
|||
ExposedDatabase.connect(database.dataSource)
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
fun lagreFeilmelding() {
|
||||
val feilmelding = Feilmelding(null, "Test", "Testesen", LocalDateTime.of(2023,1,1,8,0), 0, true, null, null)
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
fun wipe() {
|
||||
transaction {
|
||||
|
@ -45,9 +49,9 @@ class FeilmeldingTest {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
fun `Sett opp testdatabasen riktig`(){
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
transaction {
|
||||
assertEquals(1, FeilmeldingTable.selectAll().map {
|
||||
it
|
||||
|
@ -56,59 +60,94 @@ class FeilmeldingTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
fun `Lagrer feilmelding i databasen`() {
|
||||
fun `Lagrer feilmelding uten aktørid i databasen`() {
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
transaction {
|
||||
val actual = FeilmeldingTable.selectAll().single()
|
||||
assertEquals("Test", actual[FeilmeldingTable.tittel])
|
||||
assertEquals("Testesen", actual[FeilmeldingTable.beskrivelse])
|
||||
assertEquals(LocalDateTime.of(2023, 1, 1, 8, 0), actual[FeilmeldingTable.dato])
|
||||
assertEquals(1, actual[FeilmeldingTable.id])
|
||||
val forventetFeilmelding = Feilmelding(
|
||||
getId(),
|
||||
"Test",
|
||||
"Testesen",
|
||||
LocalDateTime.of(2023,1,1,8,0),
|
||||
0,
|
||||
true,
|
||||
null,
|
||||
null
|
||||
)
|
||||
val faktiskFeilmelding = feilmeldingRepository.radTilFeilmelding(FeilmeldingTable.selectAll().single())
|
||||
assertEquals(forventetFeilmelding, faktiskFeilmelding)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Lagrer feilmelding med aktørid i databasen`() {
|
||||
feilmeldingRepository.lagre(feilmelding.copy(aktorid = 12345678))
|
||||
transaction {
|
||||
val forventetFeilmelding = Feilmelding(
|
||||
getId(),
|
||||
"Test",
|
||||
"Testesen",
|
||||
LocalDateTime.of(2023,1,1,8,0),
|
||||
0,
|
||||
true,
|
||||
null,
|
||||
12345678
|
||||
)
|
||||
val faktiskFeilmelding = feilmeldingRepository.radTilFeilmelding(FeilmeldingTable.selectAll().single())
|
||||
assertEquals(forventetFeilmelding, faktiskFeilmelding)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
fun `Henter alle feilmeldinger i databasen`() {
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
transaction {
|
||||
val resultat: List<Feilmelding> = feilmeldingRepository.hentAlleFeilmeldinger()
|
||||
val actual = FeilmeldingTable.selectAll()
|
||||
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)
|
||||
val forventet = FeilmeldingTable.selectAll().map { it }
|
||||
assertEquals(forventet.size, resultat.size)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Henter feilmeldinger som matcher søk`() {
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
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`() {
|
||||
fun `Henter alle feilmeldinger som har søkestreng som substreng`() {
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
feilmeldingRepository.lagre(feilmelding.copy(tittel = "Heste"))
|
||||
val sokeresultat: List<Feilmelding> = feilmeldingRepository.hentSokteFeilmeldinger("este")
|
||||
assertEquals(1, sokeresultat.size)
|
||||
assertEquals("Test", sokeresultat[0].tittel)
|
||||
assertEquals("Testesen", sokeresultat[0].beskrivelse)
|
||||
assertEquals(2, sokeresultat.size)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Finner ingen feilmeldinger som matcher søk`() {
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
val sokeresultat: List<Feilmelding> = feilmeldingRepository.hentSokteFeilmeldinger("abrakadabra")
|
||||
assertEquals(0, sokeresultat.size)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Søk er ikke case sensitivt`() {
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
val sokeresultat: List<Feilmelding> = feilmeldingRepository.hentSokteFeilmeldinger("test")
|
||||
assertEquals(1, sokeresultat.size)
|
||||
assertEquals("Test", sokeresultat[0].tittel)
|
||||
assertEquals("Testesen", sokeresultat[0].beskrivelse)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Søk er ikke mellomrom-sensitiv`() {
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
val sokeresultat: List<Feilmelding> = feilmeldingRepository.hentSokteFeilmeldinger("Test ")
|
||||
assertEquals(1, sokeresultat.size)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Oppdaterer en feilmelding`() {
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
val oppdatertFeilmelding = Feilmelding(getId(), "Oppdatert", "Oppdatert feil", LocalDateTime.of(2023, 1, 1, 8, 0), 1, false, null, null)
|
||||
feilmeldingRepository.oppdaterFeilmelding(oppdatertFeilmelding)
|
||||
val actualOppdatert = transaction { FeilmeldingTable.selectAll().single() }
|
||||
|
@ -118,10 +157,36 @@ class FeilmeldingTest {
|
|||
assertEquals(1, actualOppdatert[FeilmeldingTable.arbeidsstatus])
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Prøver å oppdatere feilmelding uten id`() {
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
val oppdatertFeilmelding = Feilmelding(null, "Oppdatert", "Oppdatert feil", LocalDateTime.of(2023, 1, 1, 8, 0), 1, false, null, null)
|
||||
assertThrows<IllegalStateException> {
|
||||
feilmeldingRepository.oppdaterFeilmelding(oppdatertFeilmelding)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Kommentar er tom når feilmelding opprettes`() {
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
val initiellKommentar = transaction { FeilmeldingTable.selectAll().single()[FeilmeldingTable.kommentar] }
|
||||
assertNull(initiellKommentar)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Oppdaterer feilmeldingskommentar`() {
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
feilmeldingRepository.oppdaterKommentar(getId(), "Feilen fikses nå!")
|
||||
val actual = transaction { FeilmeldingTable.selectAll().single() }
|
||||
assertEquals("Feilen fikses nå!", actual[FeilmeldingTable.kommentar])
|
||||
val oppdatertKommentar = transaction { FeilmeldingTable.selectAll().single()[FeilmeldingTable.kommentar] }
|
||||
assertEquals("Feilen fikses nå!", oppdatertKommentar)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Ny kommentar skal overskrive gammel`() {
|
||||
feilmeldingRepository.lagre(feilmelding)
|
||||
feilmeldingRepository.oppdaterKommentar(getId(), "Initiell kommentar")
|
||||
feilmeldingRepository.oppdaterKommentar(getId(), "Oppdatert kommentar")
|
||||
val oppdatertKommentar = transaction { FeilmeldingTable.selectAll().single()[FeilmeldingTable.kommentar] }
|
||||
assertEquals("Oppdatert kommentar", oppdatertKommentar)
|
||||
}
|
||||
}
|
Reference in a new issue