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())