From 8a70c5dd43fc3789270d6f5ce7fb8e6d666ceb61 Mon Sep 17 00:00:00 2001 From: Nils Martin Sande Date: Fri, 13 Sep 2024 10:24:24 +0200 Subject: [PATCH] =?UTF-8?q?La=20inn=20st=C3=B8tte=20for=20GBR=20statsborge?= =?UTF-8?q?re=20i=20inngangsregler=20v2=20og=20v3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/InngangsReglerV2.kt | 11 +++-- .../application/InngangsReglerV3.kt | 5 ++ .../application/RegelId.kt | 4 ++ .../application/RegelEvalTest.kt | 46 +++++++++++++++++++ 4 files changed, 63 insertions(+), 3 deletions(-) diff --git a/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/InngangsReglerV2.kt b/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/InngangsReglerV2.kt index 6bec13fd..91d8405e 100644 --- a/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/InngangsReglerV2.kt +++ b/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/InngangsReglerV2.kt @@ -3,7 +3,7 @@ package no.nav.paw.arbeidssokerregisteret.application import no.nav.paw.arbeidssokerregisteret.application.opplysninger.DomeneOpplysning.* import no.nav.paw.arbeidssokerregisteret.application.opplysninger.Opplysning -object InngangsReglerV2: Regler { +object InngangsReglerV2 : Regler { override val regler: List = listOf( IkkeFunnet( PersonIkkeFunnet, @@ -42,6 +42,11 @@ object InngangsReglerV2: Regler { !IkkeBosatt, vedTreff = ::grunnlagForGodkjenning ), + ErStatsborgerILandMedAvtale( + ErGbrStatsborger, + ErOver18Aar, + vedTreff = ::grunnlagForGodkjenning + ), EuEoesStatsborgerMenHarStatusIkkeBosatt( ErEuEoesStatsborger, !ErNorskStatsborger, @@ -60,8 +65,8 @@ object InngangsReglerV2: Regler { ) } -data object ErNorskEllerTredjelandsborger: Condition { +data object ErNorskEllerTredjelandsborger : Condition { override fun eval(opplysninger: Iterable): Boolean = - ErNorskStatsborger in opplysninger || ErEuEoesStatsborger !in opplysninger + ErNorskStatsborger in opplysninger || (ErEuEoesStatsborger !in opplysninger && ErGbrStatsborger !in opplysninger) } diff --git a/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/InngangsReglerV3.kt b/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/InngangsReglerV3.kt index 22831785..37fb4be6 100644 --- a/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/InngangsReglerV3.kt +++ b/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/InngangsReglerV3.kt @@ -40,6 +40,11 @@ object InngangsReglerV3: Regler { !ErNorskStatsborger, vedTreff = ::grunnlagForGodkjenning ), + ErStatsborgerILandMedAvtale( + ErGbrStatsborger, + ErOver18Aar, + vedTreff = ::grunnlagForGodkjenning + ), IkkeBosattINorgeIHenholdTilFolkeregisterloven( !BosattEtterFregLoven, ErNorskEllerTredjelandsborger, diff --git a/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/RegelId.kt b/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/RegelId.kt index fcbc2c8b..8f08741d 100644 --- a/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/RegelId.kt +++ b/domain/arbeidssoeker-regler/src/main/kotlin/no/nav/paw/arbeidssokerregisteret/application/RegelId.kt @@ -42,6 +42,10 @@ data object EuEoesStatsborgerOver18Aar : DomeneRegelId { override val beskrivelse: String = "Er EU/EØS statsborger" } +data object ErStatsborgerILandMedAvtale : DomeneRegelId { + override val beskrivelse: String = "Er statsborger i land med avtale" +} + /** * Egentlig ikke nødvendig å ha en egen regel for dette, men pga. Arena så trenger vi denne. * Arena sjekker om personen er EU/EØS statsborger og er utflyttet (som gir status 'ikke bosatt'). diff --git a/domain/arbeidssoeker-regler/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/application/RegelEvalTest.kt b/domain/arbeidssoeker-regler/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/application/RegelEvalTest.kt index 2b485da8..3bb21064 100644 --- a/domain/arbeidssoeker-regler/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/application/RegelEvalTest.kt +++ b/domain/arbeidssoeker-regler/src/test/kotlin/no/nav/paw/arbeidssokerregisteret/application/RegelEvalTest.kt @@ -2,10 +2,15 @@ package no.nav.paw.arbeidssokerregisteret.application import arrow.core.Either import arrow.core.NonEmptyList +import arrow.core.left +import arrow.core.nonEmptyListOf +import arrow.core.raise.result import io.kotest.core.spec.style.FreeSpec import io.kotest.matchers.collections.shouldContainExactlyInAnyOrder import io.kotest.matchers.should +import io.kotest.matchers.shouldBe import io.kotest.matchers.types.shouldBeInstanceOf +import io.kotest.matchers.types.shouldNotBeInstanceOf import no.nav.paw.arbeidssokerregisteret.application.opplysninger.DomeneOpplysning typealias Avvist = Either.Left> @@ -260,5 +265,46 @@ class RegelEvalTest : FreeSpec({ } } } + "Statsborgere i land med og uten avtaler" - { + "Gbr statsborger over 18 år skal godkjennes" { + InngangsReglerV2.evaluer( + listOf( + DomeneOpplysning.ErOver18Aar, + DomeneOpplysning.ErGbrStatsborger + ) + ) should { result -> + result.shouldBeInstanceOf() + } + } + "Gbr statsborger under 18 år skal avvises" { + InngangsReglerV2.evaluer( + listOf( + DomeneOpplysning.ErUnder18Aar, + DomeneOpplysning.ErGbrStatsborger + ) + ) should { result -> + result.shouldBeInstanceOf() + result.value.map { it.regel.id } shouldBe nonEmptyListOf(Under18Aar) + } + } + "3. lands statsborger under 18 år skal avvises" { + InngangsReglerV2.evaluer( + listOf( + DomeneOpplysning.ErUnder18Aar + ) + ) should { result -> + result.shouldBeInstanceOf() + result.value.map { it.regel.id } shouldContainExactlyInAnyOrder nonEmptyListOf(Under18Aar, IkkeBosattINorgeIHenholdTilFolkeregisterloven) + } + } + "3. lands statsborger over 18 år skal avvises" { + InngangsReglerV2.evaluer( + listOf() + ) should { result -> + result.shouldBeInstanceOf() + result.value.map { it.regel.id } shouldContainExactlyInAnyOrder nonEmptyListOf(IkkeBosattINorgeIHenholdTilFolkeregisterloven) + } + } + } } }) \ No newline at end of file