Skip to content

Commit

Permalink
🐛 Egenskaper er et sett fremfor en liste
Browse files Browse the repository at this point in the history
* Da unngÄr vi duplikate egenskaper, da det ikke gir mening Ä ha
samme egenskap flere ganger pÄ en oppgave

Co-authored-by: Jakob Havstein Eriksen <[email protected]>
  • Loading branch information
chsko and havstein committed Feb 1, 2024
1 parent 3470fe0 commit c4d30ef
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class Oppgave private constructor(

private var ferdigstiltAvIdent: String? = null
private var ferdigstiltAvOid: UUID? = null
private val egenskaper = mutableListOf<Egenskap>()
private val egenskaper = mutableSetOf<Egenskap>()
private var tildeltTil: Saksbehandler? = null
private var pÄVent: Boolean = false

Expand Down Expand Up @@ -63,7 +63,7 @@ class Oppgave private constructor(
}

fun accept(visitor: OppgaveVisitor) {
visitor.visitOppgave(id, egenskap, tilstand, vedtaksperiodeId, utbetalingId, hendelseId, ferdigstiltAvOid, ferdigstiltAvIdent, egenskaper, tildeltTil, pÄVent, kanAvvises, totrinnsvurdering)
visitor.visitOppgave(id, egenskap, tilstand, vedtaksperiodeId, utbetalingId, hendelseId, ferdigstiltAvOid, ferdigstiltAvIdent, egenskaper.toList(), tildeltTil, pÄVent, kanAvvises, totrinnsvurdering)
totrinnsvurdering?.accept(visitor)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ data class OppgaveFraDatabaseForVisning(
val aktĂžrId: String,
val vedtaksperiodeId: UUID,
val navn: PersonnavnFraDatabase,
val egenskaper: List<EgenskapForDatabase>,
val egenskaper: Set<EgenskapForDatabase>,
val tildelt: SaksbehandlerFraDatabase? = null,
val pÄVent: Boolean = false,
val opprettet: LocalDateTime,
Expand All @@ -41,7 +41,7 @@ data class AntallOppgaverFraDatabase(
data class BehandletOppgaveFraDatabaseForVisning(
val id: Long,
val aktĂžrId: String,
val egenskaper: List<EgenskapForDatabase>,
val egenskaper: Set<EgenskapForDatabase>,
val ferdigstiltTidspunkt: LocalDateTime,
val ferdigstiltAv: String?,
val navn: PersonnavnFraDatabase,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ class OppgaveDao(dataSource: DataSource) : HelseDao(dataSource), OppgaveReposito
row.stringOrNull("mellomnavn"),
row.string("etternavn"),
),
egenskaper = row.array<String>("egenskaper").toList().map { enumValueOf(it) },
egenskaper = row.array<String>("egenskaper").map { enumValueOf<EgenskapForDatabase>(it) }.toSet(),
tildelt = row.uuidOrNull("oid")?.let {
SaksbehandlerFraDatabase(
epostadresse = row.string("epost"),
Expand All @@ -188,7 +188,7 @@ class OppgaveDao(dataSource: DataSource) : HelseDao(dataSource), OppgaveReposito
}
}

internal fun finnEgenskaper(vedtaksperiodeId: UUID, utbetalingId: UUID): List<EgenskapForDatabase>? = asSQL(
internal fun finnEgenskaper(vedtaksperiodeId: UUID, utbetalingId: UUID): Set<EgenskapForDatabase>? = asSQL(
"""
SELECT o.egenskaper FROM oppgave o
INNER JOIN vedtak v ON o.vedtak_ref = v.id
Expand All @@ -200,7 +200,7 @@ class OppgaveDao(dataSource: DataSource) : HelseDao(dataSource), OppgaveReposito
"vedtaksperiodeId" to vedtaksperiodeId,
"utbetalingId" to utbetalingId
)
).single { row -> row.array<String>("egenskaper").toList().map { enumValueOf(it) } }
).single { row -> row.array<String>("egenskaper").map { enumValueOf<EgenskapForDatabase>(it) }.toSet() }

internal fun finnAntallOppgaver(saksbehandlerOid: UUID): AntallOppgaverFraDatabase {
return asSQL(
Expand Down Expand Up @@ -256,7 +256,7 @@ class OppgaveDao(dataSource: DataSource) : HelseDao(dataSource), OppgaveReposito
BehandletOppgaveFraDatabaseForVisning(
id = row.long("oppgave_id"),
aktĂžrId = row.string("aktor_id"),
egenskaper = row.array<String>("egenskaper").toList().map { enumValueOf(it) },
egenskaper = row.array<String>("egenskaper").map { enumValueOf<EgenskapForDatabase>(it) }.toSet(),
ferdigstiltTidspunkt = row.localDateTime("ferdigstilt_tidspunkt"),
ferdigstiltAv = row.stringOrNull("ferdigstilt_av"),
navn = PersonnavnFraDatabase(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ internal object OppgaveMapper {
)
}

internal fun List<EgenskapForDatabase>.tilEgenskaperForVisning() = tilModellversjoner().map { egenskap ->
internal fun Set<EgenskapForDatabase>.tilEgenskaperForVisning() = tilModellversjoner().map { egenskap ->
Oppgaveegenskap(egenskap.tilApiversjon(), egenskap.kategori.tilApiversjon()) }

internal fun AntallOppgaverFraDatabase.tilApiversjon(): AntallOppgaver {
Expand All @@ -76,7 +76,7 @@ internal object OppgaveMapper {
)
}

private fun List<EgenskapForDatabase>.tilModellversjoner(): List<Egenskap> = this.map { it.tilModellversjon() }
private fun Set<EgenskapForDatabase>.tilModellversjoner(): List<Egenskap> = this.map { it.tilModellversjon() }

private fun List<Egenskap>.periodetype(): Periodetype {
val egenskap = single { egenskap -> egenskap.kategori == Egenskap.Kategori.Periodetype }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ class OppgaveDaoTest : DatabaseIntegrationTest() {
val fĂžrsteOppgave = oppgaver.first()
assertEquals(OPPGAVE_ID, fĂžrsteOppgave.id)
assertEquals(aktĂžrId, fĂžrsteOppgave.aktĂžrId)
assertEquals(listOf(EGENSKAP), fĂžrsteOppgave.egenskaper)
assertEquals(setOf(EGENSKAP), fĂžrsteOppgave.egenskaper)
assertEquals(FORNAVN, fĂžrsteOppgave.navn.fornavn)
assertEquals(MELLOMNAVN, fĂžrsteOppgave.navn.mellomnavn)
assertEquals(ETTERNAVN, fĂžrsteOppgave.navn.etternavn)
Expand Down Expand Up @@ -325,7 +325,7 @@ class OppgaveDaoTest : DatabaseIntegrationTest() {
val fĂžrsteOppgave = oppgaver.first()
assertEquals(OPPGAVE_ID, fĂžrsteOppgave.id)
assertEquals(aktĂžrId, fĂžrsteOppgave.aktĂžrId)
assertEquals(listOf(EGENSKAP), fĂžrsteOppgave.egenskaper)
assertEquals(setOf(EGENSKAP), fĂžrsteOppgave.egenskaper)
assertEquals(SAKSBEHANDLER_NAVN, fĂžrsteOppgave.ferdigstiltAv)
assertEquals(FORNAVN, fĂžrsteOppgave.navn.fornavn)
assertEquals(MELLOMNAVN, fĂžrsteOppgave.navn.mellomnavn)
Expand Down Expand Up @@ -955,8 +955,8 @@ class OppgaveDaoTest : DatabaseIntegrationTest() {

val egenskaperOppgaveId1 = oppgaveDao.finnEgenskaper(VEDTAKSPERIODE, UTBETALING_ID)
val egenskaperOppgaveId2 = oppgaveDao.finnEgenskaper(vedtaksperiodeId2, utbetalingId2)
assertEquals(listOf(SØKNAD), egenskaperOppgaveId1)
assertEquals(listOf(SØKNAD, PÅ_VENT), egenskaperOppgaveId2)
assertEquals(setOf(SØKNAD), egenskaperOppgaveId1)
assertEquals(setOf(SØKNAD, PÅ_VENT), egenskaperOppgaveId2)

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ internal class OppgaveMediatorTest {
private const val SAKSBEHANDLERNAVN = "Hen Saksbehandler"
private const val OPPGAVETYPE_SØKNAD = "SØKNAD"
private val EGENSKAP_SØKNAD = EgenskapForDatabase.SØKNAD
private val EGENSKAPER = listOf(EgenskapForDatabase.SØKNAD, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.FORSTEGANGSBEHANDLING)
private val EGENSKAPER = setOf(EgenskapForDatabase.SØKNAD, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.FORSTEGANGSBEHANDLING)
}

private val oppgaveDao = mockk<OppgaveDao>(relaxed = true)
Expand Down Expand Up @@ -351,7 +351,7 @@ internal class OppgaveMediatorTest {
val opprettet = LocalDateTime.now()
val vedtaksperiodeId = UUID.randomUUID()
val opprinneligSĂžknadsdato = LocalDateTime.now()
val egenskaper = listOf(egenskap, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.FORSTEGANGSBEHANDLING)
val egenskaper = setOf(egenskap, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.FORSTEGANGSBEHANDLING)
every { oppgaveDao.finnOppgaverForVisning(any(), any()) } returns listOf(
oppgaveFraDatabaseForVisning(
oppgaveId = 1L,
Expand All @@ -377,7 +377,7 @@ internal class OppgaveMediatorTest {
val opprettet = LocalDateTime.now()
val vedtaksperiodeId = UUID.randomUUID()
val opprinneligSĂžknadsdato = LocalDateTime.now()
val egenskaper = listOf(egenskap, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.SØKNAD)
val egenskaper = setOf(egenskap, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.SØKNAD)
every { oppgaveDao.finnOppgaverForVisning(any(), any()) } returns listOf(
oppgaveFraDatabaseForVisning(
oppgaveId = 1L,
Expand All @@ -403,7 +403,7 @@ internal class OppgaveMediatorTest {
val opprettet = LocalDateTime.now()
val vedtaksperiodeId = UUID.randomUUID()
val opprinneligSĂžknadsdato = LocalDateTime.now()
val egenskaper = listOf(egenskap, EgenskapForDatabase.FORSTEGANGSBEHANDLING, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.SØKNAD)
val egenskaper = setOf(egenskap, EgenskapForDatabase.FORSTEGANGSBEHANDLING, EgenskapForDatabase.EN_ARBEIDSGIVER, EgenskapForDatabase.SØKNAD)
every { oppgaveDao.finnOppgaverForVisning(any(), any()) } returns listOf(
oppgaveFraDatabaseForVisning(
oppgaveId = 1L,
Expand All @@ -429,7 +429,7 @@ internal class OppgaveMediatorTest {
val opprettet = LocalDateTime.now()
val vedtaksperiodeId = UUID.randomUUID()
val opprinneligSĂžknadsdato = LocalDateTime.now()
val egenskaper = listOf(egenskap, EgenskapForDatabase.FORSTEGANGSBEHANDLING, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.SØKNAD)
val egenskaper = setOf(egenskap, EgenskapForDatabase.FORSTEGANGSBEHANDLING, EgenskapForDatabase.UTBETALING_TIL_SYKMELDT, EgenskapForDatabase.SØKNAD)
every { oppgaveDao.finnOppgaverForVisning(ekskluderEgenskaper = any(), saksbehandlerOid = any()) } returns listOf(
oppgaveFraDatabaseForVisning(
oppgaveId = 1L,
Expand Down Expand Up @@ -477,7 +477,7 @@ internal class OppgaveMediatorTest {
private fun behandletOppgaveFraDatabaseForVisning(
oppgaveId: Long = nextLong(),
aktĂžrId: String = nextLong(1000000000000, 2000000000000).toString(),
egenskaper: List<EgenskapForDatabase> = EGENSKAPER,
egenskaper: Set<EgenskapForDatabase> = EGENSKAPER,
ferdigstiltAv: String? = "saksbehandler",
personnavnFraDatabase: PersonnavnFraDatabase = PersonnavnFraDatabase("navn", "mellomnavn", "etternavn"),
ferdigstiltTidspunkt: LocalDateTime = LocalDateTime.now(),
Expand All @@ -494,7 +494,7 @@ internal class OppgaveMediatorTest {

private fun oppgaveFraDatabaseForVisning(
oppgaveId: Long = nextLong(),
egenskaper: List<EgenskapForDatabase> = EGENSKAPER,
egenskaper: Set<EgenskapForDatabase> = EGENSKAPER,
aktĂžrId: String = nextLong(1000000000000, 2000000000000).toString(),
opprettet: LocalDateTime = LocalDateTime.now(),
opprinneligSĂžknadsdato: LocalDateTime = LocalDateTime.now(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ internal class OppgaveMapperTest {
aktĂžrId = aktĂžrId,
vedtaksperiodeId = vedtaksperiodeId,
navn = PersonnavnFraDatabase(fornavn, mellomnavn, etternavn),
egenskaper = listOf(SØKNAD, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, EN_ARBEIDSGIVER),
egenskaper = setOf(SØKNAD, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, EN_ARBEIDSGIVER),
tildelt = saksbehandler,
pÄVent = true,
opprettet = opprettet,
Expand Down Expand Up @@ -98,7 +98,7 @@ internal class OppgaveMapperTest {
aktĂžrId = aktĂžrId,
vedtaksperiodeId = vedtaksperiodeId,
navn = PersonnavnFraDatabase(fornavn, mellomnavn, etternavn),
egenskaper = listOf(egenskapSomMapperTilPeriodetype, DELVIS_REFUSJON, SØKNAD, EN_ARBEIDSGIVER),
egenskaper = setOf(egenskapSomMapperTilPeriodetype, DELVIS_REFUSJON, SØKNAD, EN_ARBEIDSGIVER),
tildelt = saksbehandler,
pÄVent = true,
opprettet = opprettet,
Expand All @@ -121,7 +121,7 @@ internal class OppgaveMapperTest {
aktĂžrId = aktĂžrId,
vedtaksperiodeId = vedtaksperiodeId,
navn = PersonnavnFraDatabase(fornavn, mellomnavn, etternavn),
egenskaper = listOf(egenskapSomMapperTilPeriodetype, DELVIS_REFUSJON, SØKNAD, EN_ARBEIDSGIVER),
egenskaper = setOf(egenskapSomMapperTilPeriodetype, DELVIS_REFUSJON, SØKNAD, EN_ARBEIDSGIVER),
tildelt = saksbehandler,
pÄVent = true,
opprettet = opprettet,
Expand All @@ -147,7 +147,7 @@ internal class OppgaveMapperTest {
aktĂžrId = aktĂžrId,
vedtaksperiodeId = vedtaksperiodeId,
navn = PersonnavnFraDatabase(fornavn, mellomnavn, etternavn),
egenskaper = listOf(egenskapSomMapperTilOppgavetype, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, EN_ARBEIDSGIVER),
egenskaper = setOf(egenskapSomMapperTilOppgavetype, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, EN_ARBEIDSGIVER),
tildelt = saksbehandler,
pÄVent = true,
opprettet = opprettet,
Expand All @@ -165,7 +165,7 @@ internal class OppgaveMapperTest {
@EnumSource(names = ["SØKNAD", "REVURDERING"], mode = EnumSource.Mode.EXCLUDE)
fun `map til oppgavetype kaster exception nÄr det mangler en egenskap som er oppgavetype`(egenskapSomIkkeMapperTilOppgavetype: EgenskapForDatabase) {
// MĂ„ gjĂžres fordi vi skal ha kun Ă©n av disse egenskapene pr. kategori.
val andreEgenskaper = listOfNotNull(
val andreEgenskaper = setOfNotNull(
if (egenskapSomIkkeMapperTilOppgavetype in listOf(INFOTRYGDFORLENGELSE, FORLENGELSE, FORSTEGANGSBEHANDLING, OVERGANG_FRA_IT)) null else FORSTEGANGSBEHANDLING,
if (egenskapSomIkkeMapperTilOppgavetype in listOf(DELVIS_REFUSJON, UTBETALING_TIL_SYKMELDT, UTBETALING_TIL_ARBEIDSGIVER, INGEN_UTBETALING)) null else DELVIS_REFUSJON,
if (egenskapSomIkkeMapperTilOppgavetype in listOf(EN_ARBEIDSGIVER, FLERE_ARBEIDSGIVERE)) null else EN_ARBEIDSGIVER
Expand Down Expand Up @@ -202,7 +202,7 @@ internal class OppgaveMapperTest {
aktĂžrId = aktĂžrId,
vedtaksperiodeId = vedtaksperiodeId,
navn = PersonnavnFraDatabase(fornavn, mellomnavn, etternavn),
egenskaper = listOf(egenskapSomMapperTilAntallArbeidsforhold, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, SØKNAD),
egenskaper = setOf(egenskapSomMapperTilAntallArbeidsforhold, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, SØKNAD),
tildelt = saksbehandler,
pÄVent = true,
opprettet = opprettet,
Expand All @@ -220,7 +220,7 @@ internal class OppgaveMapperTest {
@EnumSource(names = ["EN_ARBEIDSGIVER", "FLERE_ARBEIDSGIVERE"], mode = EnumSource.Mode.EXCLUDE)
fun `map til antallArbeidsforhold kaster exception nÄr det mangler en egenskap som er antallArbeidsforhold`(egenskapSomIkkeMapperTilAntallArbeidsforhold: EgenskapForDatabase) {
// MĂ„ gjĂžres fordi vi skal ha kun Ă©n av disse egenskapene pr. kategori.
val andreEgenskaper = listOfNotNull(
val andreEgenskaper = setOfNotNull(
if (egenskapSomIkkeMapperTilAntallArbeidsforhold in listOf(INFOTRYGDFORLENGELSE, FORLENGELSE, FORSTEGANGSBEHANDLING, OVERGANG_FRA_IT)) null else FORSTEGANGSBEHANDLING,
if (egenskapSomIkkeMapperTilAntallArbeidsforhold in listOf(DELVIS_REFUSJON, UTBETALING_TIL_SYKMELDT, UTBETALING_TIL_ARBEIDSGIVER, INGEN_UTBETALING)) null else DELVIS_REFUSJON,
if (egenskapSomIkkeMapperTilAntallArbeidsforhold in listOf(SØKNAD, REVURDERING)) null else SØKNAD
Expand All @@ -246,7 +246,7 @@ internal class OppgaveMapperTest {

@Test
fun `map EgenskapForDatabase til OppgaveEgenskap (api)`() {
val egenskaperForDatabase = listOf(SØKNAD, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, EN_ARBEIDSGIVER)
val egenskaperForDatabase = setOf(SØKNAD, DELVIS_REFUSJON, FORSTEGANGSBEHANDLING, EN_ARBEIDSGIVER)
val oppgaveEgenskaper = egenskaperForDatabase.tilEgenskaperForVisning()

assertEquals(
Expand Down

0 comments on commit c4d30ef

Please sign in to comment.