From 4ed392b3bdd47a72f3ea23565e282b360f32a5af Mon Sep 17 00:00:00 2001 From: bragejahren <70642183+bragejahren@users.noreply.github.com> Date: Fri, 6 Dec 2024 14:19:36 +0100 Subject: [PATCH] Korrigerer hvordan vi utleder om opplysningsplikt-hjemler skal vises (#4952) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Favro: [NAV-23449](https://favro.com/organization/98c34fb974ce445eac854de0/1844bbac3b6605eacc8f5543?card=NAV-23449) ### 💰 Hva skal gjøres, og hvorfor? Opplysningsplikt-hjemler vises alltid i brev dersom det ikke finnes opplysningsplikt-vilkår i behandlingen. Fikser dette slik at vi kun viser opplysningsplikt-hjemler dersom opplysningsplikt-vilkåret finnes og det er satt til `IKKE_OPPFYLT`. ### ✅ Checklist - [x] Jeg har testet mine endringer i henhold til akseptansekriteriene 🕵️ - [ ] Jeg har config- eller sql-endringer. - [x] Jeg har skrevet tester. ### 💬 Ønsker du en muntlig gjennomgang? - [ ] Ja - [x] Nei --- .../brev/hjemler/HjemmeltekstUtleder.kt | 3 +- .../domene/Vilk\303\245rsvurdering.kt" | 10 - .../familie/ba/sak/common/DataGenerator.kt | 19 +- .../brev/hjemler/HjemmeltekstUtlederTest.kt | 72 ++++++++ .../domene/Vilk\303\245rsvurderingTest.kt" | 173 ------------------ 5 files changed, 85 insertions(+), 192 deletions(-) delete mode 100644 "src/test/enhetstester/kotlin/no/nav/familie/ba/sak/kjerne/vilk\303\245rsvurdering/domene/Vilk\303\245rsvurderingTest.kt" diff --git a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/brev/hjemler/HjemmeltekstUtleder.kt b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/brev/hjemler/HjemmeltekstUtleder.kt index fc334951e91..3ed1f6f2654 100644 --- a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/brev/hjemler/HjemmeltekstUtleder.kt +++ b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/brev/hjemler/HjemmeltekstUtleder.kt @@ -2,6 +2,7 @@ package no.nav.familie.ba.sak.kjerne.brev.hjemler import no.nav.familie.ba.sak.common.FunksjonellFeil import no.nav.familie.ba.sak.integrasjoner.sanity.SanityService +import no.nav.familie.ba.sak.kjerne.autovedtak.fødselshendelse.Resultat import no.nav.familie.ba.sak.kjerne.brev.slåSammen import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.PersongrunnlagService import no.nav.familie.ba.sak.kjerne.vedtak.domene.VedtaksperiodeMedBegrunnelser @@ -51,7 +52,7 @@ class HjemmeltekstUtleder( utledOrdinæreHjemler( sanityBegrunnelser = sanitybegrunnelser, sanityEøsBegrunnelser = sanityEøsBegrunnelser, - opplysningspliktHjemlerSkalMedIBrev = !vilkårsvurdering.erOpplysningspliktVilkårOppfylt(), + opplysningspliktHjemlerSkalMedIBrev = vilkårsvurdering.finnOpplysningspliktVilkår()?.resultat == Resultat.IKKE_OPPFYLT, finnesVedtaksperiodeMedFritekst = sorterteVedtaksperioderMedBegrunnelser.any { it.fritekster.isNotEmpty() }, ), folketrygdlovenHjemler = utledFolketrygdlovenHjemler(sanityBegrunnelser = sanitybegrunnelser, sanityEøsBegrunnelser = sanityEøsBegrunnelser), diff --git "a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vilk\303\245rsvurdering/domene/Vilk\303\245rsvurdering.kt" "b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vilk\303\245rsvurdering/domene/Vilk\303\245rsvurdering.kt" index 7ff4acda18d..6dca4cb325a 100644 --- "a/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vilk\303\245rsvurdering/domene/Vilk\303\245rsvurdering.kt" +++ "b/src/main/kotlin/no/nav/familie/ba/sak/kjerne/vilk\303\245rsvurdering/domene/Vilk\303\245rsvurdering.kt" @@ -14,7 +14,6 @@ import jakarta.persistence.OneToMany import jakarta.persistence.SequenceGenerator import jakarta.persistence.Table import no.nav.familie.ba.sak.common.BaseEntitet -import no.nav.familie.ba.sak.kjerne.autovedtak.fødselshendelse.Resultat import no.nav.familie.ba.sak.kjerne.behandling.domene.Behandling import no.nav.familie.ba.sak.kjerne.grunnlag.personopplysninger.PersonopplysningGrunnlag import no.nav.familie.ba.sak.sikkerhet.RollestyringMotDatabase @@ -85,15 +84,6 @@ data class Vilkårsvurdering( .andreVurderinger .singleOrNull { it.type == AnnenVurderingType.OPPLYSNINGSPLIKT } - fun erOpplysningspliktVilkårOppfylt(): Boolean { - val opplysningspliktVilkår = - personResultater - .single { it.erSøkersResultater() } - .andreVurderinger - .singleOrNull { it.type == AnnenVurderingType.OPPLYSNINGSPLIKT } - return opplysningspliktVilkår?.resultat == Resultat.OPPFYLT - } - fun hentPersonResultaterTil(aktørId: String): List = personResultater.find { it.aktør.aktørId == aktørId }?.vilkårResultater?.toList() ?: throw IllegalStateException("Fant ikke personresultat for $aktørId") diff --git a/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/common/DataGenerator.kt b/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/common/DataGenerator.kt index 1345021cd2f..0344e24a956 100644 --- a/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/common/DataGenerator.kt +++ b/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/common/DataGenerator.kt @@ -823,6 +823,7 @@ fun lagVilkårsvurdering( resultat: Resultat, søkerPeriodeFom: LocalDate? = LocalDate.now().minusMonths(1), søkerPeriodeTom: LocalDate? = LocalDate.now().plusYears(2), + medAndreVurderinger: Boolean = true, ): Vilkårsvurdering { val vilkårsvurdering = Vilkårsvurdering( @@ -855,14 +856,16 @@ fun lagVilkårsvurdering( ), ), ) - personResultat.andreVurderinger.add( - AnnenVurdering( - personResultat = personResultat, - resultat = resultat, - type = AnnenVurderingType.OPPLYSNINGSPLIKT, - begrunnelse = null, - ), - ) + if (medAndreVurderinger) { + personResultat.andreVurderinger.add( + AnnenVurdering( + personResultat = personResultat, + resultat = resultat, + type = AnnenVurderingType.OPPLYSNINGSPLIKT, + begrunnelse = null, + ), + ) + } vilkårsvurdering.personResultater = setOf(personResultat) return vilkårsvurdering diff --git a/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/kjerne/brev/hjemler/HjemmeltekstUtlederTest.kt b/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/kjerne/brev/hjemler/HjemmeltekstUtlederTest.kt index 4a77f6273ca..2d2bfcea59f 100644 --- a/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/kjerne/brev/hjemler/HjemmeltekstUtlederTest.kt +++ b/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/kjerne/brev/hjemler/HjemmeltekstUtlederTest.kt @@ -201,6 +201,78 @@ class HjemmeltekstUtlederTest { assertThat(hjemler).isEqualTo("barnetrygdloven §§ 2, 4, 10 og 11") } + @Test + fun `skal ikke inkludere hjemmel 17 og 18 hvis andreVurderinger ikke inneholder opplysningsplikt-vilkår`() { + // Arrange + val søker = randomAktør() + + val behandling = lagBehandling() + + val vedtaksperioderMedBegrunnelser = + listOf( + lagVedtaksperiodeMedBegrunnelser( + begrunnelser = + mutableSetOf( + lagVedtaksbegrunnelse( + standardbegrunnelse = Standardbegrunnelse.INNVILGET_BOSATT_I_RIKTET, + ), + ), + ), + lagVedtaksperiodeMedBegrunnelser( + begrunnelser = + mutableSetOf( + lagVedtaksbegrunnelse( + standardbegrunnelse = Standardbegrunnelse.INNVILGET_SATSENDRING, + ), + ), + ), + ) + + every { refusjonEøsService.harRefusjonEøsPåBehandling(behandlingId = behandling.id) } returns false + every { persongrunnlagService.hentSøkersMålform(behandlingId = behandling.id) } returns Målform.NB + + every { + vilkårsvurderingService.hentAktivForBehandling(behandlingId = behandling.id) + } returns + lagVilkårsvurdering( + søkerAktør = søker, + behandling = behandling, + resultat = Resultat.OPPFYLT, + medAndreVurderinger = false, + ) + + every { + sanityService.hentSanityBegrunnelser() + } returns + mapOf( + Standardbegrunnelse.INNVILGET_BOSATT_I_RIKTET to + lagSanityBegrunnelse( + apiNavn = Standardbegrunnelse.INNVILGET_BOSATT_I_RIKTET.sanityApiNavn, + hjemler = listOf("11", "4", "2", "10"), + ), + Standardbegrunnelse.INNVILGET_SATSENDRING to + lagSanityBegrunnelse( + apiNavn = Standardbegrunnelse.INNVILGET_SATSENDRING.sanityApiNavn, + hjemler = listOf("10"), + ), + ) + + every { + sanityService.hentSanityEØSBegrunnelser() + } returns emptyMap() + + // Act + val hjemler = + hjemmeltekstUtleder.utledHjemmeltekst( + behandlingId = behandling.id, + vedtakKorrigertHjemmelSkalMedIBrev = false, + sorterteVedtaksperioderMedBegrunnelser = vedtaksperioderMedBegrunnelser, + ) + + // Assert + assertThat(hjemler).isEqualTo("barnetrygdloven §§ 2, 4, 10 og 11") + } + @Test fun `skal inkludere hjemmel for fritekst`() { // Arrange diff --git "a/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/kjerne/vilk\303\245rsvurdering/domene/Vilk\303\245rsvurderingTest.kt" "b/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/kjerne/vilk\303\245rsvurdering/domene/Vilk\303\245rsvurderingTest.kt" deleted file mode 100644 index f4c02441aac..00000000000 --- "a/src/test/enhetstester/kotlin/no/nav/familie/ba/sak/kjerne/vilk\303\245rsvurdering/domene/Vilk\303\245rsvurderingTest.kt" +++ /dev/null @@ -1,173 +0,0 @@ -package no.nav.familie.ba.sak.kjerne.vilkårsvurdering.domene - -import no.nav.familie.ba.sak.common.lagAnnenVurdering -import no.nav.familie.ba.sak.common.lagPersonResultat -import no.nav.familie.ba.sak.common.lagVilkårResultat -import no.nav.familie.ba.sak.common.lagVilkårsvurdering -import no.nav.familie.ba.sak.kjerne.autovedtak.fødselshendelse.Resultat -import org.assertj.core.api.Assertions.assertThat -import org.junit.jupiter.api.Nested -import org.junit.jupiter.api.Test -import org.junit.jupiter.api.assertThrows - -class VilkårsvurderingTest { - @Nested - inner class ErOpplysningspliktVilkårOppfyltTest { - @Test - fun `skal exception om personresultater er tom`() { - // Arrange - val vilkårsvurdering = - lagVilkårsvurdering( - lagPersonResultater = { emptySet() }, - ) - - // Act & assert - val exception = - assertThrows { - vilkårsvurdering.erOpplysningspliktVilkårOppfylt() - } - assertThat(exception.message).isEqualTo("Collection contains no element matching the predicate.") - } - - @Test - fun `skal kaste exception om ingen vilkår er for søker`() { - // Arrange - val vilkårsvurdering = - lagVilkårsvurdering( - lagPersonResultater = { vilkårsvurdering -> - setOf( - lagPersonResultat( - vilkårsvurdering = vilkårsvurdering, - aktør = vilkårsvurdering.behandling.fagsak.aktør, - lagVilkårResultater = { personResultat -> - setOf( - lagVilkårResultat( - personResultat = personResultat, - vilkårType = Vilkår.UNDER_18_ÅR, - ), - ) - }, - lagAnnenVurderinger = { emptySet() }, - ), - ) - }, - ) - - // Act & assert - val exception = - assertThrows { - vilkårsvurdering.erOpplysningspliktVilkårOppfylt() - } - assertThat(exception.message).isEqualTo("Collection contains no element matching the predicate.") - } - - @Test - fun `skal returnere false om annen vurdering er tom`() { - // Arrange - val vilkårsvurdering = - lagVilkårsvurdering( - lagPersonResultater = { vilkårsvurdering -> - setOf( - lagPersonResultat( - vilkårsvurdering = vilkårsvurdering, - aktør = vilkårsvurdering.behandling.fagsak.aktør, - lagVilkårResultater = { personResultat -> - setOf( - lagVilkårResultat( - personResultat = personResultat, - vilkårType = Vilkår.BOR_MED_SØKER, - ), - ) - }, - lagAnnenVurderinger = { emptySet() }, - ), - ) - }, - ) - - // Act - val erOpplysningspliktVilkårOppfylt = vilkårsvurdering.erOpplysningspliktVilkårOppfylt() - - // Assert - assertThat(erOpplysningspliktVilkårOppfylt).isFalse() - } - - @Test - fun `skal returnere false om annen vurdering opplysningsplikt ikke er oppfylt`() { - // Arrange - val vilkårsvurdering = - lagVilkårsvurdering( - lagPersonResultater = { vilkårsvurdering -> - setOf( - lagPersonResultat( - vilkårsvurdering = vilkårsvurdering, - aktør = vilkårsvurdering.behandling.fagsak.aktør, - lagVilkårResultater = { personResultat -> - setOf( - lagVilkårResultat( - personResultat = personResultat, - vilkårType = Vilkår.BOR_MED_SØKER, - ), - ) - }, - lagAnnenVurderinger = { - setOf( - lagAnnenVurdering( - personResultat = it, - type = AnnenVurderingType.OPPLYSNINGSPLIKT, - resultat = Resultat.IKKE_OPPFYLT, - ), - ) - }, - ), - ) - }, - ) - - // Act - val erOpplysningspliktVilkårOppfylt = vilkårsvurdering.erOpplysningspliktVilkårOppfylt() - - // Assert - assertThat(erOpplysningspliktVilkårOppfylt).isFalse() - } - - @Test - fun `skal returnere true om annen vurdering opplysningsplikt er oppfylt`() { - // Arrange - val vilkårsvurdering = - lagVilkårsvurdering( - lagPersonResultater = { vilkårsvurdering -> - setOf( - lagPersonResultat( - vilkårsvurdering = vilkårsvurdering, - aktør = vilkårsvurdering.behandling.fagsak.aktør, - lagVilkårResultater = { personResultat -> - setOf( - lagVilkårResultat( - personResultat = personResultat, - vilkårType = Vilkår.BOR_MED_SØKER, - ), - ) - }, - lagAnnenVurderinger = { - setOf( - lagAnnenVurdering( - personResultat = it, - type = AnnenVurderingType.OPPLYSNINGSPLIKT, - resultat = Resultat.OPPFYLT, - ), - ) - }, - ), - ) - }, - ) - - // Act - val erOpplysningspliktVilkårOppfylt = vilkårsvurdering.erOpplysningspliktVilkårOppfylt() - - // Assert - assertThat(erOpplysningspliktVilkårOppfylt).isTrue() - } - } -}