From fa14b550526a31574cc1102c78876a58d4b406cc Mon Sep 17 00:00:00 2001 From: Sondre Larsen Ovrid Date: Mon, 2 Dec 2024 14:59:12 +0100 Subject: [PATCH 1/4] =?UTF-8?q?Lag=20repository=20for=20hendelsar=20og=20t?= =?UTF-8?q?ilh=C3=B8yrande=20testar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../database/PostgresTable.java | 16 ++ .../hendelsesfilter/HendelseModell.kt | 29 +++ .../hendelsesfilter/HendelseRepository.kt | 197 +++++++++++++++++ .../config/ApplicationConfigTest.java | 4 +- .../hendelsesfilter/HendelseRepositoryTest.kt | 206 ++++++++++++++++++ .../HendelsesfilterTestUtil.kt | 56 +++++ .../veilarbportefolje/util/TestDataUtils.kt | 6 + 7 files changed, 513 insertions(+), 1 deletion(-) create mode 100644 src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseModell.kt create mode 100644 src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepository.kt create mode 100644 src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt create mode 100644 src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelsesfilterTestUtil.kt diff --git a/src/main/java/no/nav/pto/veilarbportefolje/database/PostgresTable.java b/src/main/java/no/nav/pto/veilarbportefolje/database/PostgresTable.java index de68f42f26..6b179366af 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/database/PostgresTable.java +++ b/src/main/java/no/nav/pto/veilarbportefolje/database/PostgresTable.java @@ -402,4 +402,20 @@ private TILTAKSHENDELSE() { /* no-op*/ } public static final String AVSENDER = "AVSENDER"; public static final String SIST_ENDRET = "SIST_ENDRET"; } + + public static final class HENDELSE { + private HENDELSE() { /* no-op */ } + + public static final String TABLE_NAME = "FILTERHENDELSER"; + public static final String ID = "ID"; + public static final String PERSON_IDENT = "PERSON_IDENT"; + public static final String HENDELSE_NAVN = "HENDELSE_NAVN"; + public static final String HENDELSE_DATO = "HENDELSE_DATO"; + public static final String HENDELSE_LENKE = "HENDELSE_LENKE"; + public static final String HENDELSE_DETALJER = "HENDELSE_DETALJER"; + public static final String KATEGORI = "KATEGORI"; + public static final String AVSENDER = "AVSENDER"; + public static final String OPPRETTET = "OPPRETTET"; + public static final String SIST_ENDRET = "SIST_ENDRET"; + } } diff --git a/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseModell.kt b/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseModell.kt new file mode 100644 index 0000000000..d168a06e5e --- /dev/null +++ b/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseModell.kt @@ -0,0 +1,29 @@ +import no.nav.common.types.identer.NorskIdent +import java.net.URL +import java.time.ZonedDateTime +import java.util.* + +enum class Kategori { + UTGATT_VARSEL +} + +enum class Operasjon { + START, + STOPP, + OPPDATER +} + +data class Hendelse( + val id: UUID, + val personIdent: NorskIdent, + val avsender: String, + val kategori: Kategori, + val hendelse: HendelseInnhold +) { + data class HendelseInnhold( + val beskrivelse: String, + val dato: ZonedDateTime, + val lenke: URL, + val detaljer: String? + ) +} \ No newline at end of file diff --git a/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepository.kt b/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepository.kt new file mode 100644 index 0000000000..c89a25017b --- /dev/null +++ b/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepository.kt @@ -0,0 +1,197 @@ +package no.nav.pto.veilarbportefolje.hendelsesfilter + +import Hendelse +import Kategori +import no.nav.common.types.identer.NorskIdent +import no.nav.pto.veilarbportefolje.database.PostgresTable.HENDELSE +import no.nav.pto.veilarbportefolje.util.DateUtils.toTimestamp +import no.nav.pto.veilarbportefolje.util.DateUtils.toZonedDateTime +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.dao.EmptyResultDataAccessException +import org.springframework.jdbc.core.JdbcTemplate +import org.springframework.stereotype.Repository +import java.net.URI +import java.sql.ResultSet +import java.time.ZonedDateTime +import java.util.* + +@Repository +class HendelseRepository( + @Autowired private val jdbcTemplate: JdbcTemplate +) { + + /** + * Henter en hendelse: + * + * * dersom en hendelse med ID [id] eksisterer returneres denne + * * dersom ingen hendelse med ID [id] eksisterer kastes en [IngenHendelseMedIdException] + */ + fun get(id: UUID): Hendelse { + // language=postgresql + val sql = "SELECT * FROM ${HENDELSE.TABLE_NAME} WHERE ${HENDELSE.ID} = ?" + val resultat = try { + jdbcTemplate.queryForObject(sql, ::toHendelse, id) + } catch (ex: EmptyResultDataAccessException) { + throw IngenHendelseMedIdException(id = id.toString(), cause = ex) + } + + return resultat + ?: throw RuntimeException("Ukjent feil ved henting av hendelse med ID $id. Forventet å få en instans av ${Hendelse::class.simpleName} men fikk null.") + } + + /** + * Henter den eldste hendelsen: + * + * * dersom minst en hendelse eksisterer for [personIdent] returneres den eldste av disse + * * dersom ingen hendelser eksisterer for [personIdent] kastes en [IngenHendelseForPersonException] + */ + fun getEldste(personIdent: NorskIdent): Hendelse { + // language=postgresql + val sql = """ + SELECT * FROM ${HENDELSE.TABLE_NAME} WHERE ${HENDELSE.PERSON_IDENT} = ? + ORDER BY ${HENDELSE.HENDELSE_DATO} LIMIT 1 + """.trimIndent() + + val resultat = try { + jdbcTemplate.queryForObject(sql, ::toHendelse, personIdent.get()) + } catch (ex: EmptyResultDataAccessException) { + throw IngenHendelseForPersonException(cause = ex) + } + + return resultat + ?: throw RuntimeException("Ukjent feil ved henting av hendelse for person. Forventet å få en instans av ${Hendelse::class.simpleName} men fikk null.") + } + + /** + * Lagre en hendelse: + * + * * dersom ingen hendelse med samme [Hendelse.id] eksisterer fra før lagres hendelsen + * * dersom en hendelse med samme [Hendelse.id] eksisterer fra før kastes [HendelseIdEksistererAlleredeException]. + */ + fun insert(hendelse: Hendelse) { + val (id, personIdent, avsender, kategori, hendelseInnhold) = hendelse + val (navn, dato, lenke, detaljer) = hendelseInnhold + + // language=postgresql + val sql = """ + INSERT INTO ${HENDELSE.TABLE_NAME} ( + ${HENDELSE.ID}, + ${HENDELSE.PERSON_IDENT}, + ${HENDELSE.HENDELSE_NAVN}, + ${HENDELSE.HENDELSE_DATO}, + ${HENDELSE.HENDELSE_LENKE}, + ${HENDELSE.HENDELSE_DETALJER}, + ${HENDELSE.KATEGORI}, + ${HENDELSE.AVSENDER}, + ${HENDELSE.OPPRETTET}, + ${HENDELSE.SIST_ENDRET} + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + ON CONFLICT (${HENDELSE.ID}) DO NOTHING + """ + + val timestampAkkuratNaa = toTimestamp(ZonedDateTime.now()) + val affectedRows = jdbcTemplate.update( + sql, + id, + personIdent.get(), + navn, + toTimestamp(dato), + lenke.toString(), + detaljer, + kategori.name, + avsender, + timestampAkkuratNaa, + timestampAkkuratNaa, + ) + + if (affectedRows == 0) { + throw HendelseIdEksistererAlleredeException("Hendelse med id $id eksisterer allerede.") + } + } + + /** + * Oppdater en hendelse: + * + * * dersom en hendelse med samme [Hendelse.id] eksisterer fra før oppdateres denne med data fra [hendelse] + * * dersom ingen hendelse med samme [Hendelse.id] eksisterer fra før kastes [IngenHendelseMedIdException] + */ + fun update(hendelse: Hendelse) { + val (id, personIdent, avsender, kategori, hendelseInnhold) = hendelse + val (navn, dato, lenke, detaljer) = hendelseInnhold + + // language=postgresql + val sql = """ + UPDATE ${HENDELSE.TABLE_NAME} SET ( + ${HENDELSE.PERSON_IDENT}, + ${HENDELSE.HENDELSE_NAVN}, + ${HENDELSE.HENDELSE_DATO}, + ${HENDELSE.HENDELSE_LENKE}, + ${HENDELSE.HENDELSE_DETALJER}, + ${HENDELSE.KATEGORI}, + ${HENDELSE.AVSENDER}, + ${HENDELSE.SIST_ENDRET} + ) = (?, ?, ?, ?, ?, ?, ?, ?) + WHERE ${HENDELSE.ID} = ? + """ + + val affectedRows = jdbcTemplate.update( + sql, + personIdent.get(), + navn, + toTimestamp(dato), + lenke.toString(), + detaljer, + kategori.name, + avsender, + toTimestamp(ZonedDateTime.now()), + id + ) + + if (affectedRows == 0) { + throw IngenHendelseMedIdException(id.toString()) + } + } + + /** + * Slett en hendelse: + * + * * dersom en hendelse eksisterer med ID lik [id] slettes hendelsen + * * dersom ingen hendelse eksisterer med ID lik [id] kastes [IngenHendelseMedIdException] + */ + fun delete(id: UUID) { + val sql = "DELETE FROM ${HENDELSE.TABLE_NAME} WHERE ${HENDELSE.ID} = ?" + val affectedRows = jdbcTemplate.update(sql, id) + + if (affectedRows == 0) { + throw IngenHendelseMedIdException(id.toString()) + } + } + +} + +private fun toHendelse(resultSet: ResultSet, affectedRows: Int): Hendelse { + return Hendelse( + id = UUID.fromString(resultSet.getString(HENDELSE.ID)), + personIdent = NorskIdent(resultSet.getString(HENDELSE.PERSON_IDENT)), + avsender = resultSet.getString(HENDELSE.AVSENDER), + kategori = Kategori.valueOf(resultSet.getString(HENDELSE.KATEGORI)), + hendelse = Hendelse.HendelseInnhold( + beskrivelse = resultSet.getString(HENDELSE.HENDELSE_NAVN), + dato = toZonedDateTime(resultSet.getTimestamp(HENDELSE.HENDELSE_DATO)), + lenke = URI.create(resultSet.getString(HENDELSE.HENDELSE_LENKE)).toURL(), + detaljer = resultSet.getString(HENDELSE.HENDELSE_DETALJER), + ) + ) +} + +data class HendelseIdEksistererAlleredeException(override val message: String) : RuntimeException(message) +data class IngenHendelseMedIdException( + val id: String, + override val message: String = "Fant ingen hendelse med id $id.", + override val cause: Throwable? = null +) : RuntimeException(message, cause) + +data class IngenHendelseForPersonException( + override val message: String = "Fant ingen hendelse for personen.", + override val cause: Throwable +) : RuntimeException(message) \ No newline at end of file diff --git a/src/test/java/no/nav/pto/veilarbportefolje/config/ApplicationConfigTest.java b/src/test/java/no/nav/pto/veilarbportefolje/config/ApplicationConfigTest.java index a80114b772..495dbea189 100644 --- a/src/test/java/no/nav/pto/veilarbportefolje/config/ApplicationConfigTest.java +++ b/src/test/java/no/nav/pto/veilarbportefolje/config/ApplicationConfigTest.java @@ -32,6 +32,7 @@ import no.nav.pto.veilarbportefolje.ensligforsorger.EnsligeForsorgereService; import no.nav.pto.veilarbportefolje.fargekategori.FargekategoriRepository; import no.nav.pto.veilarbportefolje.fargekategori.FargekategoriService; +import no.nav.pto.veilarbportefolje.hendelsesfilter.HendelseRepository; import no.nav.pto.veilarbportefolje.huskelapp.HuskelappRepository; import no.nav.pto.veilarbportefolje.huskelapp.HuskelappService; import no.nav.pto.veilarbportefolje.kodeverk.KodeverkClient; @@ -173,7 +174,8 @@ ProfileringRepository.class, ArbeidssoekerDataRepository.class, TiltakshendelseRepository.class, - TiltakshendelseService.class + TiltakshendelseService.class, + HendelseRepository.class, }) public class ApplicationConfigTest { diff --git a/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt b/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt new file mode 100644 index 0000000000..0fb4b4d9ca --- /dev/null +++ b/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt @@ -0,0 +1,206 @@ +package no.nav.pto.veilarbportefolje.hendelsesfilter + +import no.nav.pto.veilarbportefolje.config.ApplicationConfigTest +import no.nav.pto.veilarbportefolje.database.PostgresTable.HENDELSE +import no.nav.pto.veilarbportefolje.util.TestDataUtils.randomNorskIdent +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.jdbc.core.JdbcTemplate +import java.time.ZonedDateTime +import java.util.UUID.randomUUID + +@SpringBootTest(classes = [ApplicationConfigTest::class]) +class HendelseRepositoryTest( + @Autowired val hendelseRepository: HendelseRepository, + @Autowired val jdbcTemplate: JdbcTemplate +) { + + @BeforeEach + fun reset() { + jdbcTemplate.update("TRUNCATE TABLE ${HENDELSE.TABLE_NAME}") + } + + @Test + fun `skal lagre Hendelse når hendelse med ID ikke eksisterer fra før`() { + // Given + val hendelse = genererRandomHendelse() + + // When + val resultatAvOpprettelse = try { + hendelseRepository.insert(hendelse) + } catch (ex: RuntimeException) { + ex + } + + // Then + // Sjekker her bare at hendelse lagres - sjekk på innhold er i egen test + val resultatAvHenting = hendelseRepository.get(hendelse.id) + assertThat(resultatAvOpprettelse).isNotInstanceOf(RuntimeException::class.java) + assertThat(resultatAvHenting).isNotNull + } + + @Test + fun `skal kaste HendelseIdEksistererAlleredeException ved opprettelse når hendelse med ID eksisterer fra før`() { + // Given + val opprinneligHendelse = genererRandomHendelse() + hendelseRepository.insert(opprinneligHendelse) + + // When + val nyHendelseMedSammeId = genererRandomHendelse().copy(id = opprinneligHendelse.id) + val resultatAvOpprettelse = try { + hendelseRepository.insert(nyHendelseMedSammeId) + } catch (ex: RuntimeException) { + ex + } + + // Then + assertThat(resultatAvOpprettelse).isNotNull + assertThat(resultatAvOpprettelse).isInstanceOf(HendelseIdEksistererAlleredeException::class.java) + } + + @Test + fun `skal hente Hendelse når hendelse med ID eksisterer`() { + // Given + val hendelse = genererRandomHendelse() + hendelseRepository.insert(hendelse) + + // When + val resultatAvHenting = hendelseRepository.get(hendelse.id) + + // Then + val forventetHendelse = hendelse.copy() + assertThat(resultatAvHenting).isEqualTo(forventetHendelse) + } + + @Test + fun `skal kaste IngenHendelseMedIdException ved henting når ingen hendelse med ID eksisterer`() { + // Given + val hendelseIdSomIkkeEksisterer = randomUUID() + + // When + val resultatAvHenting = try { + hendelseRepository.get(hendelseIdSomIkkeEksisterer) + } catch (ex: IngenHendelseMedIdException) { + ex + } + + // Then + assertThat(resultatAvHenting).isInstanceOf(IngenHendelseMedIdException::class.java) + } + + @Test + fun `skal hente den eldste Hendelse når flere hendelser eksisterer for person`() { + // Given + val personIdent = randomNorskIdent() + val naa = ZonedDateTime.now() + val hendelseEldste = genererRandomHendelse(personIdent = personIdent, hendelseDato = naa.minusDays(2)) + val hendelseNestEldste = genererRandomHendelse(personIdent = personIdent, hendelseDato = naa.minusDays(1)) + val hendelseNyeste = genererRandomHendelse(personIdent = personIdent, hendelseDato = naa) + hendelseRepository.insert(hendelseNyeste) + hendelseRepository.insert(hendelseNestEldste) + hendelseRepository.insert(hendelseEldste) + + // When + val resultatAvHenting = hendelseRepository.getEldste(personIdent) + + // Then + val forventetHendelse = hendelseEldste.copy() + assertThat(resultatAvHenting).isEqualTo(forventetHendelse) + } + + @Test + fun `skal kaste IngenHendelseForPersonException ved henting av eldste når ingen hendelser eksisterer for person`() { + // Given + val personIdent = randomNorskIdent() + + // When + val resultatAvHenting = try { + hendelseRepository.getEldste(personIdent) + } catch (ex: IngenHendelseForPersonException) { + ex + } + + // Then + assertThat(resultatAvHenting).isInstanceOf(IngenHendelseForPersonException::class.java) + } + + @Test + fun `skal oppdatere hendelse når hendelse med ID eksisterer`() { + // Given + val opprinneligHendelse = genererRandomHendelse() + hendelseRepository.insert(opprinneligHendelse) + + // When + val hendelseMedSammeIDOgOppdatertData = + genererRandomHendelse().copy(id = opprinneligHendelse.id, personIdent = opprinneligHendelse.personIdent) + val resultatAvOppdatering = try { + hendelseRepository.update(hendelseMedSammeIDOgOppdatertData) + } catch (ex: RuntimeException) { + ex + } + + // Then + val resultatAvHenting = hendelseRepository.get(hendelseMedSammeIDOgOppdatertData.id) + assertThat(resultatAvOppdatering).isNotInstanceOf(IngenHendelseMedIdException::class.java) + assertThat(hendelseMedSammeIDOgOppdatertData).isEqualTo(resultatAvHenting) + } + + @Test + fun `skal kaste IngenHendelseMedIdException ved oppdatering når hendelse med ID ikke eksisterer`() { + // Given + val hendelseIdSomIkkeEksisterer = randomUUID() + + // When + val hendelseMedIdSomIkkeEksisterer = genererRandomHendelse(id = hendelseIdSomIkkeEksisterer) + val resultatAvOppdatering = try { + hendelseRepository.update(hendelseMedIdSomIkkeEksisterer) + } catch (ex: RuntimeException) { + ex + } + + // Then + assertThat(resultatAvOppdatering).isInstanceOf(IngenHendelseMedIdException::class.java) + } + + @Test + fun `skal slette hendelse når hendelse med ID eksisterer`() { + // Given + val hendelse = genererRandomHendelse() + hendelseRepository.insert(hendelse) + + // When + val resultatAvSletting = try { + hendelseRepository.delete(hendelse.id) + } catch (ex: RuntimeException) { + ex + } + + // Then + val resultatAvHenting = try { + hendelseRepository.get(hendelse.id) + } catch (ex: IngenHendelseMedIdException) { + ex + } + assertThat(resultatAvSletting).isNotInstanceOf(IngenHendelseMedIdException::class.java) + assertThat(resultatAvHenting).isInstanceOf(IngenHendelseMedIdException::class.java) + } + + @Test + fun `skal kaste IngenHendelseMedIdException ved sletting når ingen hendelse med ID eksisterer`() { + // Given + val hendelseIdSomIkkeEksisterer = genererRandomHendelse() + + // When + val resultatAvSletting = try { + hendelseRepository.delete(hendelseIdSomIkkeEksisterer.id) + } catch (ex: RuntimeException) { + ex + } + + // Then + assertThat(resultatAvSletting).isInstanceOf(IngenHendelseMedIdException::class.java) + } +} diff --git a/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelsesfilterTestUtil.kt b/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelsesfilterTestUtil.kt new file mode 100644 index 0000000000..35369bee41 --- /dev/null +++ b/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelsesfilterTestUtil.kt @@ -0,0 +1,56 @@ +package no.nav.pto.veilarbportefolje.hendelsesfilter + +import Hendelse +import Kategori +import no.nav.common.types.identer.NorskIdent +import no.nav.pto.veilarbportefolje.util.TestDataUtils.randomNorskIdent +import no.nav.pto.veilarbportefolje.util.TestDataUtils.randomZonedDate +import java.net.URI +import java.net.URL +import java.time.ZonedDateTime +import java.util.* +import kotlin.random.Random + +fun genererRandomHendelse( + id: UUID = UUID.randomUUID(), + personIdent: NorskIdent = randomNorskIdent(), + avsender: String = randomAvsender(), + kategori: Kategori = randomKategori(), + hendelseBeskrivelse: String = randomBeskrivelse(), + hendelseDato: ZonedDateTime = randomZonedDate(), + hendelseLenke: URL = randomUrl(), + hendelseDetaljer: String? = randomDetaljer(), +): Hendelse { + return Hendelse( + id = id, + personIdent = personIdent, + avsender = avsender, + kategori = kategori, + hendelse = Hendelse.HendelseInnhold( + beskrivelse = hendelseBeskrivelse, + dato = hendelseDato, + lenke = hendelseLenke, + detaljer = hendelseDetaljer + ) + ) +} + +private fun randomUrl(): URL = + URI.create("https://veilarbpersonflate.intern.dev.nav.no/${Random.nextInt(until = 10)}").toURL() + +private fun randomBeskrivelse() = "Beskrivelse_${Random.nextInt(until = 10)}" + +private fun randomAvsender() = "Avsender_${Random.nextInt(until = 10)}" + +fun randomKategori(): Kategori { + val kategoriValues = Kategori.entries + return Random.nextInt(kategoriValues.size).let { kategoriValues[it] } +} + +fun randomDetaljer(): String? { + return if (Random.nextBoolean()) { + "" + } else { + null + } +} \ No newline at end of file diff --git a/src/test/java/no/nav/pto/veilarbportefolje/util/TestDataUtils.kt b/src/test/java/no/nav/pto/veilarbportefolje/util/TestDataUtils.kt index 8c6c0660f7..169c7308b9 100644 --- a/src/test/java/no/nav/pto/veilarbportefolje/util/TestDataUtils.kt +++ b/src/test/java/no/nav/pto/veilarbportefolje/util/TestDataUtils.kt @@ -11,6 +11,7 @@ import com.nimbusds.jwt.SignedJWT import lombok.SneakyThrows import no.nav.common.types.identer.AktorId import no.nav.common.types.identer.Fnr +import no.nav.common.types.identer.NorskIdent import no.nav.pto.veilarbportefolje.domene.value.NavKontor import no.nav.pto.veilarbportefolje.domene.value.PersonId import no.nav.pto.veilarbportefolje.domene.value.VeilederId @@ -42,6 +43,11 @@ object TestDataUtils { return PersonId.of(ThreadLocalRandom.current().nextInt().toString()) } + @JvmStatic + fun randomNorskIdent(): NorskIdent { + return NorskIdent.of(ThreadLocalRandom.current().nextInt().toString()) + } + @JvmStatic fun randomVeilederId(): VeilederId { val zIdent = "Z" + randomDigits(6) From ed73cc1e808e0a187b2df7cf2144b23374b8200f Mon Sep 17 00:00:00 2001 From: Sondre Larsen Ovrid Date: Tue, 3 Dec 2024 10:00:30 +0100 Subject: [PATCH 2/4] PR-tilbakemeldingar --- .../pto/veilarbportefolje/hendelsesfilter/HendelseModell.kt | 2 +- .../veilarbportefolje/hendelsesfilter/HendelseRepository.kt | 2 +- .../hendelsesfilter/HendelsesfilterTestUtil.kt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseModell.kt b/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseModell.kt index d168a06e5e..438ab930a6 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseModell.kt +++ b/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseModell.kt @@ -26,4 +26,4 @@ data class Hendelse( val lenke: URL, val detaljer: String? ) -} \ No newline at end of file +} diff --git a/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepository.kt b/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepository.kt index c89a25017b..251c7aef9a 100644 --- a/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepository.kt +++ b/src/main/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepository.kt @@ -194,4 +194,4 @@ data class IngenHendelseMedIdException( data class IngenHendelseForPersonException( override val message: String = "Fant ingen hendelse for personen.", override val cause: Throwable -) : RuntimeException(message) \ No newline at end of file +) : RuntimeException(message) diff --git a/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelsesfilterTestUtil.kt b/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelsesfilterTestUtil.kt index 35369bee41..da6290fcb7 100644 --- a/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelsesfilterTestUtil.kt +++ b/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelsesfilterTestUtil.kt @@ -49,8 +49,8 @@ fun randomKategori(): Kategori { fun randomDetaljer(): String? { return if (Random.nextBoolean()) { - "" + "Detaljer_${Random.nextInt(until = 10)}" } else { null } -} \ No newline at end of file +} From 21e344c437875f255ec0f2a1e1e3a317cdeba6c7 Mon Sep 17 00:00:00 2001 From: Sondre Larsen Ovrid Date: Tue, 3 Dec 2024 10:12:13 +0100 Subject: [PATCH 3/4] =?UTF-8?q?PR-tilbakemeldinger:=20treng=20ikkje=20bruk?= =?UTF-8?q?e=20"copy"=20kan=20heller=20overstyre=20"named=20arguments"=20i?= =?UTF-8?q?=20konstrukt=C3=B8ren?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hendelsesfilter/HendelseRepositoryTest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt b/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt index 0fb4b4d9ca..00402c542d 100644 --- a/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt +++ b/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt @@ -49,7 +49,7 @@ class HendelseRepositoryTest( hendelseRepository.insert(opprinneligHendelse) // When - val nyHendelseMedSammeId = genererRandomHendelse().copy(id = opprinneligHendelse.id) + val nyHendelseMedSammeId = genererRandomHendelse(id = opprinneligHendelse.id) val resultatAvOpprettelse = try { hendelseRepository.insert(nyHendelseMedSammeId) } catch (ex: RuntimeException) { @@ -135,7 +135,7 @@ class HendelseRepositoryTest( // When val hendelseMedSammeIDOgOppdatertData = - genererRandomHendelse().copy(id = opprinneligHendelse.id, personIdent = opprinneligHendelse.personIdent) + genererRandomHendelse(id = opprinneligHendelse.id, personIdent = opprinneligHendelse.personIdent) val resultatAvOppdatering = try { hendelseRepository.update(hendelseMedSammeIDOgOppdatertData) } catch (ex: RuntimeException) { From a671ecbc76482517a975c6a83c11470b05d78934 Mon Sep 17 00:00:00 2001 From: Sondre Larsen Ovrid Date: Tue, 3 Dec 2024 10:19:13 +0100 Subject: [PATCH 4/4] Fiks test som feila pga. tidspresisjon --- .../hendelsesfilter/HendelseRepositoryTest.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt b/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt index 00402c542d..8e5d879146 100644 --- a/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt +++ b/src/test/java/no/nav/pto/veilarbportefolje/hendelsesfilter/HendelseRepositoryTest.kt @@ -10,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.SpringBootTest import org.springframework.jdbc.core.JdbcTemplate import java.time.ZonedDateTime +import java.time.temporal.ChronoUnit import java.util.UUID.randomUUID @SpringBootTest(classes = [ApplicationConfigTest::class]) @@ -95,7 +96,7 @@ class HendelseRepositoryTest( fun `skal hente den eldste Hendelse når flere hendelser eksisterer for person`() { // Given val personIdent = randomNorskIdent() - val naa = ZonedDateTime.now() + val naa = ZonedDateTime.now().truncatedTo(ChronoUnit.MICROS) val hendelseEldste = genererRandomHendelse(personIdent = personIdent, hendelseDato = naa.minusDays(2)) val hendelseNestEldste = genererRandomHendelse(personIdent = personIdent, hendelseDato = naa.minusDays(1)) val hendelseNyeste = genererRandomHendelse(personIdent = personIdent, hendelseDato = naa)