From e4214ddf4778db91e7c9c06848715067afc2ddfb Mon Sep 17 00:00:00 2001 From: throndi <56258085+throndi@users.noreply.github.com> Date: Fri, 20 Oct 2023 13:18:05 +0200 Subject: [PATCH 1/2] =?UTF-8?q?Skal=20opprette=20oppf=C3=B8lgingsoppgave?= =?UTF-8?q?=20om=20barn=20er=20f=C3=B8dt=20m=C3=A5neden=20etter=20terminda?= =?UTF-8?q?to?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../handler/ForelderBarnHandler.kt | 53 +++++++++++++++---- 2 files changed, 43 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index a330749d..bdf891cd 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ 7.0.1 3.5.0 3.1.0 - 3.0_20230921075936_3adfc44 + 3.0_20231020124114_c84c4b4 2.0_20230825103733_1ac52c2 2.20230905101454_06fa3d7 3.0.4 diff --git a/src/main/kotlin/no/nav/familie/ef/personhendelse/handler/ForelderBarnHandler.kt b/src/main/kotlin/no/nav/familie/ef/personhendelse/handler/ForelderBarnHandler.kt index d938c8f9..a0ccbc42 100644 --- a/src/main/kotlin/no/nav/familie/ef/personhendelse/handler/ForelderBarnHandler.kt +++ b/src/main/kotlin/no/nav/familie/ef/personhendelse/handler/ForelderBarnHandler.kt @@ -34,23 +34,54 @@ class ForelderBarnHandler(val sakClient: SakClient) : PersonhendelseHandler { secureLogger.info("Nye barn for bruker er ${nyeBarnForBruker.nyeBarn}, hendelseId : ${personhendelse.hendelseId}") val barnFødtFørTermin = nyeBarnForBruker.filtrerÅrsak(NyttBarnÅrsak.FØDT_FØR_TERMIN) + val barnFødtEtterTermin = nyeBarnForBruker.filtrerÅrsak(NyttBarnÅrsak.FØDT_ETTER_TERMIN) val nyeBarnSomIkkeFinnesPåBehandlingen = nyeBarnForBruker.filtrerÅrsak(NyttBarnÅrsak.BARN_FINNES_IKKE_PÅ_BEHANDLING) + if (barnFødtFørTermin.isNotEmpty()) { - val nyeBarnTekst = if (nyeBarnSomIkkeFinnesPåBehandlingen.isNotEmpty()) { - "Bruker har også fått et nytt/nye barn ${nyeBarnSomIkkeFinnesPåBehandlingen.separerteIdenterMedStønadstype()}. " - } else { - "" - } - return OpprettOppgave( - "Bruker er innvilget stønad for ufødt(e) barn ${barnFødtFørTermin.separerteIdenterMedStønadstype()}. " + - "Barnet er registrert født i måneden før oppgitt termindato. " + - nyeBarnTekst + - "Vurder saken.", - ) + return opprettOppgaveBarnFødtFørTermin(nyeBarnSomIkkeFinnesPåBehandlingen, barnFødtFørTermin) + } + if (barnFødtEtterTermin.isNotEmpty()) { + return opprettOppgaveBarnFødtEtterTermin(nyeBarnSomIkkeFinnesPåBehandlingen, barnFødtEtterTermin) } + return OpprettOppgave("Bruker har fått et nytt/nye barn ${nyeBarnSomIkkeFinnesPåBehandlingen.separerteIdenterMedStønadstype()} som ikke finnes på behandling.") } + private fun opprettOppgaveBarnFødtFørTermin( + nyeBarnSomIkkeFinnesPåBehandlingen: List, + barnFødtFørTermin: List, + ): OpprettOppgave { + val nyeBarnTekst = nyeBarnTekst(nyeBarnSomIkkeFinnesPåBehandlingen) + return OpprettOppgave( + "Bruker er innvilget stønad for ufødt(e) barn ${barnFødtFørTermin.separerteIdenterMedStønadstype()}. " + + "Barnet er registrert født i måneden før oppgitt termindato. " + + nyeBarnTekst + + "Vurder saken.", + ) + } + + private fun opprettOppgaveBarnFødtEtterTermin( + nyeBarnSomIkkeFinnesPåBehandlingen: List, + barnFødtEtterTermin: List, + ): OpprettOppgave { + val nyeBarnTekst = nyeBarnTekst(nyeBarnSomIkkeFinnesPåBehandlingen) + return OpprettOppgave( + "Bruker er innvilget stønad for ufødt(e) barn ${barnFødtEtterTermin.separerteIdenterMedStønadstype()}. " + + "Barnet er registrert født i måneden etter oppgitt termindato. " + + nyeBarnTekst + + "Vurder saken.", + ) + } + + private fun nyeBarnTekst(nyeBarnSomIkkeFinnesPåBehandlingen: List): String { + val nyeBarnTekst = if (nyeBarnSomIkkeFinnesPåBehandlingen.isNotEmpty()) { + "Bruker har også fått et nytt/nye barn ${nyeBarnSomIkkeFinnesPåBehandlingen.separerteIdenterMedStønadstype()}. " + } else { + "" + } + return nyeBarnTekst + } + private fun NyeBarnDto.filtrerÅrsak(årsak: NyttBarnÅrsak) = this.nyeBarn.filter { it.årsak == årsak } private fun List.separerteIdenterMedStønadstype() = this.joinToString(", ") { it.personIdent + " (${it.stønadstype.name.enumToReadable()})" } From 48ff99dc86fdf86d22cdf800212ab8aed3dca5fe Mon Sep 17 00:00:00 2001 From: throndi <56258085+throndi@users.noreply.github.com> Date: Mon, 30 Oct 2023 09:58:28 +0100 Subject: [PATCH 2/2] =?UTF-8?q?Enhetstester=20ifm=20ForelderBarnHandler=20?= =?UTF-8?q?og=20terminbarn=20som=20er=20f=C3=B8dt=20for=20sent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/ForelderBarnHandlerTest.kt | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/test/kotlin/no/nav/familie/ef/personhendelse/handler/ForelderBarnHandlerTest.kt b/src/test/kotlin/no/nav/familie/ef/personhendelse/handler/ForelderBarnHandlerTest.kt index 9a1770a4..222fc613 100644 --- a/src/test/kotlin/no/nav/familie/ef/personhendelse/handler/ForelderBarnHandlerTest.kt +++ b/src/test/kotlin/no/nav/familie/ef/personhendelse/handler/ForelderBarnHandlerTest.kt @@ -110,6 +110,38 @@ class ForelderBarnHandlerTest { "Vurder saken.", ) } + @Test + internal fun `finnNyeBarnForBruker inneholder for sent født terminbarn og nytt barn, forvent at oppgave opprettes`() { + mockNyeBarn( + NyttBarn(barn1Fnr, StønadType.OVERGANGSSTØNAD, NyttBarnÅrsak.FØDT_ETTER_TERMIN), + NyttBarn(barn2Fnr, StønadType.SKOLEPENGER, NyttBarnÅrsak.BARN_FINNES_IKKE_PÅ_BEHANDLING), + ) + every { pdlClient.hentPerson(personIdent) } returns person + service.håndterPersonhendelse(personhendelse) + verify(exactly = 1) { oppgaveClient.opprettOppgave(any()) } + assertThat(slot.captured.beskrivelse) + .isEqualTo( + "Personhendelse: Bruker er innvilget stønad for ufødt(e) barn fnr (Overgangsstønad). " + + "Barnet er registrert født i måneden etter oppgitt termindato. " + + "Bruker har også fått et nytt/nye barn fnr2 (Skolepenger). " + + "Vurder saken.", + ) + } + @Test + internal fun `finnNyeBarnForBruker inneholder for sent født terminbarn, forvent at oppgave opprettes`() { + mockNyeBarn( + NyttBarn(barn1Fnr, StønadType.OVERGANGSSTØNAD, NyttBarnÅrsak.FØDT_ETTER_TERMIN), + ) + every { pdlClient.hentPerson(personIdent) } returns person + service.håndterPersonhendelse(personhendelse) + verify(exactly = 1) { oppgaveClient.opprettOppgave(any()) } + assertThat(slot.captured.beskrivelse) + .isEqualTo( + "Personhendelse: Bruker er innvilget stønad for ufødt(e) barn fnr (Overgangsstønad). " + + "Barnet er registrert født i måneden etter oppgitt termindato. " + + "Vurder saken.", + ) + } private fun mockNyeBarn(vararg nyeBarn: NyttBarn) { every { sakClient.finnNyeBarnForBruker(any()) } returns NyeBarnDto(nyeBarn.toList())