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