Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Filtrerer bort husstandsmedlemsperioder som er utenfor forespurt periode #323

Merged
merged 1 commit into from
Mar 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,11 @@ class OppdaterRelatertePersoner(
// henter alle barn av BM/BP
val barnListe = hentBarn(Personident(personIdOgPeriode.personId))

// Alle husstandsmedlemmer lagres i tabell relatert_person. Det sjekkes om husstandsmedlem finnes i liste over barn.
// Alle husstandsmedlemmer innenfor aktuell periode lagres i tabell relatert_person.
// Det sjekkes om husstandsmedlem finnes i liste over barn.
// erBarnAvmBp settes lik true i så fall. Tester slik at person ikke lagres som eget husstandsmedlem.
husstandsmedlemmerListe.forEach { husstandsmedlem ->
if (husstandsmedlem.personId != personIdOgPeriode.personId) {
if (husstandsmedlem.personId != personIdOgPeriode.personId && husstandsmedlemInnenforPeriode(personIdOgPeriode, husstandsmedlem)) {
persistenceService.opprettRelatertPerson(
RelatertPersonBo(
grunnlagspakkeId = grunnlagspakkeId,
Expand Down Expand Up @@ -102,6 +103,27 @@ class OppdaterRelatertePersoner(
return this
}

private fun husstandsmedlemInnenforPeriode(personIdOgPeriode: PersonIdOgPeriodeRequest, husstandsmedlem: PersonBo): Boolean {
if (husstandsmedlem.husstandsmedlemPeriodeFra == null) {
return husstandsmedlem.husstandsmedlemPeriodeTil == null || husstandsmedlem.husstandsmedlemPeriodeTil.isAfter(
personIdOgPeriode.periodeFra,
)
}

if (husstandsmedlem.husstandsmedlemPeriodeTil == null) {
return husstandsmedlem.husstandsmedlemPeriodeFra.isBefore(personIdOgPeriode.periodeTil)
}

if (husstandsmedlem.husstandsmedlemPeriodeFra.isAfter(personIdOgPeriode.periodeTil.minusDays(1))) {
return false
}

if (husstandsmedlem.husstandsmedlemPeriodeTil.isAfter(personIdOgPeriode.periodeFra)) {
return true
}
return false
}

private fun hentHusstandsmedlemmer(husstandsmedlemmerRequest: String): List<PersonBo> {
LOGGER.info("Kaller bidrag-person Husstandsmedlemmer")
SECURE_LOGGER.info("Kaller bidrag-person Husstandsmedlemmer med request: $husstandsmedlemmerRequest")
Expand Down
85 changes: 85 additions & 0 deletions src/test/kotlin/no/nav/bidrag/grunnlag/TestUtil.kt
Original file line number Diff line number Diff line change
Expand Up @@ -994,6 +994,91 @@ class TestUtil {
),
)

fun byggHentHusstandsmedlemmerResponseTestPerioder() = HusstandsmedlemmerDto(
immutableListOf(
Husstand(
gyldigFraOgMed = LocalDate.parse("2011-01-01"),
gyldigTilOgMed = LocalDate.parse("2011-10-01"),
adressenavn = "adressenavn1",
husnummer = "husnummer1",
husbokstav = "husbokstav1",
bruksenhetsnummer = "bruksenhetsnummer1",
postnummer = "postnr1",
bydelsnummer = "bydelsnummer1",
kommunenummer = "kommunenummer1",
matrikkelId = 12345,
immutableListOf(
Husstandsmedlem(
gyldigFraOgMed = LocalDate.parse("2011-01-01"),
gyldigTilOgMed = LocalDate.parse("2011-02-01"),
personId = Personident("111"),
navn = "fornavn1 mellomnavn1 etternavn1",
fødselsdato = LocalDate.parse("2001-04-17"),
),
Husstandsmedlem(
gyldigFraOgMed = LocalDate.parse("2011-05-17"),
gyldigTilOgMed = LocalDate.parse("2018-01-01"),
personId = Personident("111"),
navn = "fornavn1 mellomnavn1 etternavn1",
fødselsdato = LocalDate.parse("2001-04-17"),
),
Husstandsmedlem(
gyldigFraOgMed = LocalDate.parse("2011-01-01"),
gyldigTilOgMed = LocalDate.parse("2011-12-01"),
personId = Personident("333"),
navn = "fornavn3 mellomnavn3 etternavn3",
fødselsdato = LocalDate.parse("2001-04-17"),
),
Husstandsmedlem(
gyldigFraOgMed = LocalDate.parse("2011-05-01"),
gyldigTilOgMed = LocalDate.parse("2011-06-01"),
personId = Personident("444"),
navn = "fornavn4 mellomnavn4 etternavn4",
fødselsdato = LocalDate.parse("1974-02-01"),
),
),
),
Husstand(
gyldigFraOgMed = LocalDate.parse("2011-10-01"),
gyldigTilOgMed = null,
adressenavn = "adressenavn2",
husnummer = "husnummer2",
husbokstav = "husbokstav2",
bruksenhetsnummer = "bruksenhetsnummer2",
postnummer = "postnr2",
bydelsnummer = "bydelsnummer2",
kommunenummer = "kommunenummer2",
matrikkelId = 54321,
immutableListOf(
Husstandsmedlem(
gyldigFraOgMed = LocalDate.parse("2018-01-01"),
gyldigTilOgMed = LocalDate.parse("2021-04-17"),
personId = Personident("111"),
navn = "fornavn1 mellomnavn1 etternavn1",
fødselsdato = LocalDate.parse("2001-04-17"),
dødsdato = null,
),
Husstandsmedlem(
gyldigFraOgMed = LocalDate.parse("2022-04-17"),
gyldigTilOgMed = null,
personId = Personident("111"),
navn = "fornavn1 mellomnavn1 etternavn1",
fødselsdato = LocalDate.parse("2001-04-17"),
dødsdato = null,
),
Husstandsmedlem(
gyldigFraOgMed = LocalDate.parse("2020-01-01"),
gyldigTilOgMed = null,
personId = Personident("555"),
navn = "fornavn5 mellomnavn5 etternavn5",
fødselsdato = LocalDate.parse("1985-07-17"),
dødsdato = null,
),
),
),
),
)

fun byggHentSivilstandResponse() = SivilstandPdlHistorikkDto(
immutableListOf(
SivilstandPdlDto(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -359,11 +359,6 @@ class OppdaterGrunnlagspakkeServiceTest {

@Test
fun `Skal oppdatere grunnlagspakke med egne barn i husstanden fra PDL via bidrag-person`() {
Mockito.`when`(persistenceServiceMock.opprettRelatertPerson(GrunnlagspakkeServiceMockTest.MockitoHelper.capture(relatertPersonBoCaptor)))
.thenReturn(
TestUtil.byggEgetBarnIHusstanden(),
)

Mockito.`when`(
bidragPersonConsumerMock.hentForelderBarnRelasjon(
GrunnlagspakkeServiceMockTest.MockitoHelper.any(
Expand Down Expand Up @@ -391,6 +386,11 @@ class OppdaterGrunnlagspakkeServiceTest {
)
.thenReturn(RestResponse.Success(TestUtil.byggHentHusstandsmedlemmerResponse()))

Mockito.`when`(persistenceServiceMock.opprettRelatertPerson(GrunnlagspakkeServiceMockTest.MockitoHelper.capture(relatertPersonBoCaptor)))
.thenReturn(
TestUtil.byggEgetBarnIHusstanden(),
)

val grunnlagspakkeIdOpprettet = TestUtil.byggGrunnlagspakke().grunnlagspakkeId
val oppdatertGrunnlagspakke = oppdaterGrunnlagspakkeService.oppdaterGrunnlagspakke(
grunnlagspakkeIdOpprettet,
Expand All @@ -408,7 +408,7 @@ class OppdaterGrunnlagspakkeServiceTest {
{ Assertions.assertThat(oppdatertGrunnlagspakke).isNotNull() },

// sjekk relatertPersonBo
{ Assertions.assertThat(relatertPersonListe.size).isEqualTo(8) },
{ Assertions.assertThat(relatertPersonListe.size).isEqualTo(5) },
{ Assertions.assertThat(relatertPersonListe[0]?.partPersonId).isEqualTo("12345678910") },
{ Assertions.assertThat(relatertPersonListe[0]?.relatertPersonPersonId).isEqualTo("111") },
{ Assertions.assertThat(relatertPersonListe[0]?.aktiv).isTrue() },
Expand All @@ -431,10 +431,6 @@ class OppdaterGrunnlagspakkeServiceTest {
Assertions.assertThat(oppdatertGrunnlagspakke.grunnlagTypeResponsListe[0].status)
.isEqualTo(GrunnlagRequestStatus.HENTET)
},
{
Assertions.assertThat(oppdatertGrunnlagspakke.grunnlagTypeResponsListe[0].statusMelding)
.isEqualTo("Antall husstandsmedlemmer funnet: 6")
},
)
}

Expand Down Expand Up @@ -470,7 +466,7 @@ class OppdaterGrunnlagspakkeServiceTest {
),
),
)
.thenReturn(RestResponse.Success(TestUtil.byggHentHusstandsmedlemmerResponse()))
.thenReturn(RestResponse.Success(TestUtil.byggHentHusstandsmedlemmerResponseTestPerioder()))

val grunnlagspakkeIdOpprettet = TestUtil.byggGrunnlagspakke().grunnlagspakkeId
val oppdatertGrunnlagspakke = oppdaterGrunnlagspakkeService.oppdaterGrunnlagspakke(
Expand All @@ -491,35 +487,16 @@ class OppdaterGrunnlagspakkeServiceTest {
{ Assertions.assertThat(husstandsmedlemListe?.get(0)?.partPersonId).isEqualTo("12345678910") },
{ Assertions.assertThat(husstandsmedlemListe?.get(0)?.relatertPersonPersonId).isEqualTo("111") },
{ Assertions.assertThat(husstandsmedlemListe?.get(0)?.navn).isEqualTo("fornavn1 mellomnavn1 etternavn1") },
{ Assertions.assertThat(husstandsmedlemListe?.get(0)?.husstandsmedlemPeriodeFra).isEqualTo(LocalDate.parse("2011-01-01")) },
{ Assertions.assertThat(husstandsmedlemListe?.get(0)?.husstandsmedlemPeriodeTil).isEqualTo(LocalDate.parse("2011-02-01")) },
{ Assertions.assertThat(husstandsmedlemListe?.get(0)?.husstandsmedlemPeriodeFra).isEqualTo(LocalDate.parse("2011-05-17")) },
{ Assertions.assertThat(husstandsmedlemListe?.get(0)?.husstandsmedlemPeriodeTil).isEqualTo(LocalDate.parse("2021-04-17")) },
{ Assertions.assertThat(husstandsmedlemListe?.get(0)?.hentetTidspunkt).isNotNull() },

{ Assertions.assertThat(husstandsmedlemListe?.get(1)?.partPersonId).isEqualTo("12345678910") },
{ Assertions.assertThat(husstandsmedlemListe?.get(1)?.relatertPersonPersonId).isEqualTo("111") },
{ Assertions.assertThat(husstandsmedlemListe?.get(1)?.navn).isEqualTo("fornavn1 mellomnavn1 etternavn1") },
{ Assertions.assertThat(husstandsmedlemListe?.get(1)?.husstandsmedlemPeriodeFra).isEqualTo(LocalDate.parse("2011-05-17")) },
{ Assertions.assertThat(husstandsmedlemListe?.get(1)?.relatertPersonPersonId).isEqualTo("555") },
{ Assertions.assertThat(husstandsmedlemListe?.get(1)?.navn).isEqualTo("fornavn5 mellomnavn5 etternavn5") },
{ Assertions.assertThat(husstandsmedlemListe?.get(1)?.husstandsmedlemPeriodeFra).isEqualTo(LocalDate.parse("2020-01-01")) },
{ Assertions.assertThat(husstandsmedlemListe?.get(1)?.husstandsmedlemPeriodeTil).isNull() },
{ Assertions.assertThat(husstandsmedlemListe?.get(1)?.hentetTidspunkt).isNotNull() },

{ Assertions.assertThat(husstandsmedlemListe?.get(2)?.relatertPersonPersonId).isEqualTo("333") },
{ Assertions.assertThat(husstandsmedlemListe?.get(2)?.navn).isEqualTo("fornavn3 mellomnavn3 etternavn3") },
{ Assertions.assertThat(husstandsmedlemListe?.get(2)?.husstandsmedlemPeriodeFra).isEqualTo(LocalDate.parse("2011-01-01")) },
{ Assertions.assertThat(husstandsmedlemListe?.get(2)?.husstandsmedlemPeriodeTil).isEqualTo(LocalDate.parse("2011-12-01")) },
{ Assertions.assertThat(husstandsmedlemListe?.get(2)?.hentetTidspunkt).isNotNull() },

{ Assertions.assertThat(husstandsmedlemListe?.get(3)?.relatertPersonPersonId).isEqualTo("444") },
{ Assertions.assertThat(husstandsmedlemListe?.get(3)?.navn).isEqualTo("fornavn4 mellomnavn4 etternavn4") },
{ Assertions.assertThat(husstandsmedlemListe?.get(3)?.husstandsmedlemPeriodeFra).isEqualTo(LocalDate.parse("2011-05-01")) },
{ Assertions.assertThat(husstandsmedlemListe?.get(3)?.husstandsmedlemPeriodeTil).isEqualTo(LocalDate.parse("2011-06-01")) },
{ Assertions.assertThat(husstandsmedlemListe?.get(3)?.hentetTidspunkt).isNotNull() },

{ Assertions.assertThat(husstandsmedlemListe?.get(4)?.relatertPersonPersonId).isEqualTo("555") },
{ Assertions.assertThat(husstandsmedlemListe?.get(4)?.navn).isEqualTo("fornavn5 mellomnavn5 etternavn5") },
{ Assertions.assertThat(husstandsmedlemListe?.get(4)?.husstandsmedlemPeriodeFra).isEqualTo(LocalDate.parse("2020-01-01")) },
{ Assertions.assertThat(husstandsmedlemListe?.get(4)?.husstandsmedlemPeriodeTil).isNull() },
{ Assertions.assertThat(husstandsmedlemListe?.get(4)?.hentetTidspunkt).isNotNull() },

// sjekk oppdatertGrunnlagspakke
{ Assertions.assertThat(oppdatertGrunnlagspakke.grunnlagspakkeId).isEqualTo(grunnlagspakkeIdOpprettet) },
{ Assertions.assertThat(oppdatertGrunnlagspakke.grunnlagTypeResponsListe.size).isEqualTo(1) },
Expand Down
Loading