Skip to content

Commit

Permalink
Fjerner bruk av utledning av fødselsdato fra fødselsnummer i AlderPåB…
Browse files Browse the repository at this point in the history
…a… (#2698)

* Fjerner bruk av utledning av fødselsdato av fødselsnummer i AlderPåBarnRegel

* Skal hente fødselsdato av registerdata, og bruke termindato om denne ikke finnes

* Skal ikke bruke localdate.now() i testmapping

* Legger barnID inn i feilmelding for å finne igjen utskudd som smeller
  • Loading branch information
throndi authored Oct 29, 2024
1 parent d5ab6b1 commit 3b4d71d
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ import no.nav.familie.kontrakter.ef.søknad.SøknadBarnetilsyn
import no.nav.familie.kontrakter.ef.søknad.SøknadOvergangsstønad
import no.nav.familie.kontrakter.ef.søknad.SøknadSkolepenger
import no.nav.familie.kontrakter.ef.søknad.TestsøknadBuilder
import no.nav.familie.kontrakter.felles.Fødselsnummer
import no.nav.familie.kontrakter.felles.Månedsperiode
import no.nav.familie.kontrakter.felles.Ressurs
import no.nav.familie.kontrakter.felles.ef.StønadType
Expand Down Expand Up @@ -292,7 +291,10 @@ class TestSaksbehandlingController(
harSkalHaSammeAdresse = true,
ikkeRegistrertPåSøkersAdresseBeskrivelse = "Fordi",
erBarnetFødt = true,
fødselTermindato = Fødselsnummer(it.key).fødselsdato,
fødselTermindato =
it.value.fødselsdato
.first()
.fødselsdato ?: error("Fødselsdato kan ikke være null"),
annenForelder =
TestsøknadBuilder.Builder().defaultAnnenForelder(
ikkeOppgittAnnenForelderBegrunnelse = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import no.nav.familie.ef.sak.vilkår.dto.BarnepassDto
import no.nav.familie.ef.sak.vilkår.dto.PersonaliaDto
import no.nav.familie.ef.sak.vilkår.dto.VilkårGrunnlagDto
import no.nav.familie.ef.sak.vilkår.dto.tilDto
import no.nav.familie.kontrakter.felles.Fødselsnummer
import no.nav.familie.kontrakter.felles.ef.StønadType
import org.springframework.stereotype.Service
import java.time.LocalDate
Expand Down Expand Up @@ -129,8 +128,7 @@ class VilkårGrunnlagService(
return barnMedsamværMapper
.slåSammenBarnMedSamvær(søknadsgrunnlag, barnMedSamværRegistergrunnlag, barnepass)
.sortedByDescending {
it.registergrunnlag.fødselsnummer?.let { fødsesnummer -> Fødselsnummer(fødsesnummer).fødselsdato }
?: it.søknadsgrunnlag.fødselTermindato
it.registergrunnlag.fødselsdato ?: it.søknadsgrunnlag.fødselTermindato
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import no.nav.familie.ef.sak.vilkår.Delvilkårsvurdering
import no.nav.familie.ef.sak.vilkår.VilkårType
import no.nav.familie.ef.sak.vilkår.Vilkårsresultat
import no.nav.familie.ef.sak.vilkår.Vurdering
import no.nav.familie.ef.sak.vilkår.dto.VilkårGrunnlagDto
import no.nav.familie.ef.sak.vilkår.regler.HovedregelMetadata
import no.nav.familie.ef.sak.vilkår.regler.NesteRegel
import no.nav.familie.ef.sak.vilkår.regler.RegelId
Expand All @@ -15,7 +16,6 @@ import no.nav.familie.ef.sak.vilkår.regler.Vilkårsregel
import no.nav.familie.ef.sak.vilkår.regler.jaNeiSvarRegel
import no.nav.familie.ef.sak.vilkår.regler.regelIder
import no.nav.familie.ef.sak.vilkår.regler.vilkår.AlderPåBarnRegelUtil.harFullførtFjerdetrinn
import no.nav.familie.kontrakter.felles.Fødselsnummer
import java.time.LocalDate
import java.util.UUID

Expand Down Expand Up @@ -63,15 +63,17 @@ class AlderPåBarnRegel :
metadata: HovedregelMetadata,
barnId: UUID?,
): Boolean {
val fødselsdato =
metadata.barn
.firstOrNull { it.id == barnId }
?.personIdent
?.let { Fødselsnummer(it).fødselsdato }
?: error("Finner ikke ident til barn=$barnId")
val fødselsdato = metadata.finnFødselsdatoEllerTermindatoForBarn(barnId)
return harFullførtFjerdetrinn(fødselsdato)
}

private fun HovedregelMetadata.finnFødselsdatoEllerTermindatoForBarn(barnId: UUID?): LocalDate =
vilkårgrunnlagDto.finnFødselsdatoForBarn(barnId)
?: barn.firstOrNull { it.id == barnId }?.fødselTermindato
?: error("Kunne ikke finne hverken fødselsdato fra registerdata eller termindato for barnID=$barnId")

private fun VilkårGrunnlagDto.finnFødselsdatoForBarn(barnId: UUID?): LocalDate? = barnMedSamvær.firstOrNull { it.barnId == barnId }?.registergrunnlag?.fødselsdato

companion object {
private val unntakAlderMapping =
setOf(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ internal class OppdaterVilkårTest {
søknadBarnId = null,
personIdent = "01472152579",
navn = null,
fødselTermindato = null,
fødselTermindato = LocalDate.now().minusYears(3),
)
val barnUtenSøknad = barn.copy(id = UUID.randomUUID())
val metadata =
Expand Down Expand Up @@ -89,7 +89,7 @@ internal class OppdaterVilkårTest {
søknadBarnId = null,
personIdent = FnrGenerator.generer(LocalDate.now().minusYears(5)),
navn = null,
fødselTermindato = null,
fødselTermindato = LocalDate.now().minusYears(5),
)
val barnUtenSøknad =
barn.copy(
Expand Down Expand Up @@ -133,7 +133,7 @@ internal class OppdaterVilkårTest {
søknadBarnId = null,
personIdent = "03441983106",
navn = null,
fødselTermindato = null,
fødselTermindato = LocalDate.now().minusYears(5),
)
val barnUtenSøknad = barn.copy(id = UUID.randomUUID())
val metadata =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,65 @@ import io.mockk.mockk
import no.nav.familie.ef.sak.repository.behandling
import no.nav.familie.ef.sak.repository.behandlingBarn
import no.nav.familie.ef.sak.vilkår.Vilkårsresultat
import no.nav.familie.ef.sak.vilkår.dto.BarnMedSamværDto
import no.nav.familie.ef.sak.vilkår.dto.BarnMedSamværRegistergrunnlagDto
import no.nav.familie.ef.sak.vilkår.dto.BarnMedSamværSøknadsgrunnlagDto
import no.nav.familie.ef.sak.vilkår.dto.VilkårGrunnlagDto
import no.nav.familie.ef.sak.vilkår.regler.HovedregelMetadata
import no.nav.familie.ef.sak.vilkår.regler.vilkår.AlderPåBarnRegel
import org.assertj.core.api.Assertions
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import java.time.LocalDate
import java.util.UUID

class AktivitetspliktigAlderPåBarnRegelTest {
val barnId = UUID.randomUUID()
val hovedregelMetadataMock = mockk<HovedregelMetadata>()
val behandlingBarnMedDnr = behandlingBarn(behandlingId = UUID.randomUUID(), personIdent = "06431960727", søknadBarnId = UUID.randomUUID())
val behandlingBarnMedDnr = behandlingBarn(behandlingId = UUID.randomUUID(), personIdent = "06431960727", søknadBarnId = UUID.randomUUID(), fødselTermindato = LocalDate.now().minusYears(5))
val behandlingBarn2 = behandlingBarn(behandlingId = UUID.randomUUID(), personIdent = "03041983106", søknadBarnId = UUID.randomUUID())
val vilkårGrunnlagDto = mockk<VilkårGrunnlagDto>()
val barnMedSamværSøknadsgrunnlagDto = mockk<BarnMedSamværSøknadsgrunnlagDto>()
val barnMedSamværRegistergrunnlagDto = mockk<BarnMedSamværRegistergrunnlagDto>()
val barnMedSamvær = BarnMedSamværDto(barnId, barnMedSamværSøknadsgrunnlagDto, barnMedSamværRegistergrunnlagDto)

@BeforeEach
fun setup() {
every { hovedregelMetadataMock.barn } returns listOf(behandlingBarnMedDnr, behandlingBarn2)
every { hovedregelMetadataMock.behandling } returns behandling()
every { hovedregelMetadataMock.vilkårgrunnlagDto } returns vilkårGrunnlagDto
every { vilkårGrunnlagDto.barnMedSamvær } returns listOf(barnMedSamvær)
}

@Test
fun `Vilkår ikke tatt stilling til og har fullført fjerdetrinn - skal automatisk oppfylle vilkår`() {
fun `skal bruke fødselTermindato hvis fødselsdato ikke finnes i registerdata`() {
val listDelvilkårsvurdering =
AlderPåBarnRegel().initiereDelvilkårsvurdering(
hovedregelMetadataMock,
Vilkårsresultat.IKKE_TATT_STILLING_TIL,
behandlingBarnMedDnr.id,
)

Assertions.assertThat(listDelvilkårsvurdering.size).isEqualTo(1)
Assertions.assertThat(listDelvilkårsvurdering.first().resultat).isEqualTo(Vilkårsresultat.AUTOMATISK_OPPFYLT)
}

@Test
fun `skal bruke fødselsdato av registerdata hvis datoen finnes der`() {
every { barnMedSamværRegistergrunnlagDto.fødselsdato } returns LocalDate.now().minusYears(50)
every { vilkårGrunnlagDto.barnMedSamvær } returns listOf(BarnMedSamværDto(barnId, barnMedSamværSøknadsgrunnlagDto, barnMedSamværRegistergrunnlagDto))
val listDelvilkårsvurdering =
AlderPåBarnRegel().initiereDelvilkårsvurdering(
hovedregelMetadataMock,
Vilkårsresultat.IKKE_TATT_STILLING_TIL,
barnId,
)
Assertions.assertThat(listDelvilkårsvurdering.size).isEqualTo(1)
Assertions.assertThat(listDelvilkårsvurdering.first().resultat).isEqualTo(Vilkårsresultat.IKKE_TATT_STILLING_TIL)
}

@Test
fun `Vilkår ikke tatt stilling til og har ikke fullført fjerdetrinn - skal automatisk oppfylle vilkår`() {
val listDelvilkårsvurdering =
AlderPåBarnRegel().initiereDelvilkårsvurdering(
hovedregelMetadataMock,
Expand Down

0 comments on commit 3b4d71d

Please sign in to comment.