Skip to content

Commit

Permalink
Skal regne ut alder av ident i soknad-api i stedet for i frontend (#999)
Browse files Browse the repository at this point in the history
* Skal regne ut alder av ident i soknad-api i stedet for i frontend

* tester for kalkulerAlder
  • Loading branch information
throndi authored Jul 29, 2024
1 parent 5c5bb18 commit 44a7b2f
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package no.nav.familie.ef.søknad.person.domain

data class Person(
val fnr: String,
val alder: Int,
val forkortetNavn: String,
val adresse: Adresse,
val egenansatt: Boolean,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ internal class SøkerinfoMapper(

return Person(
fnr = EksternBrukerUtils.hentFnrFraToken(),
alder = kalkulerAlder(EksternBrukerUtils.hentFnrFraToken()),
forkortetNavn = navn.first().visningsnavn(),
adresse = adresse,
egenansatt = false, // TODO denne er vel i beste fall unødvendig?
Expand All @@ -175,19 +176,24 @@ internal class SøkerinfoMapper(
)
}

private fun kalkulerAlder(ident: String) = Period.between(Fødselsnummer(ident).fødselsdato, LocalDate.now()).years

private fun formaterAdresse(pdlSøker: PdlSøker): String {
val bosted = pdlSøker.bostedsadresse.firstOrNull()
return when {
bosted == null -> {
logger.info("Finner ikke bostedadresse")
""
}

bosted.vegadresse != null -> {
tilFormatertAdresse(bosted.vegadresse)
}

bosted.matrikkeladresse != null -> {
join(bosted.matrikkeladresse.tilleggsnavn, hentPoststed(bosted.matrikkeladresse.postnummer)) ?: ""
}

else -> {
logger.info("Søker har hverken vegadresse eller matrikkeladresse")
""
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
package no.nav.familie.ef.søknad.person

import no.nav.familie.ef.søknad.infrastruktur.OppslagSpringRunnerTest
import no.nav.familie.util.FnrGenerator
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.springframework.boot.test.web.client.exchange
import org.springframework.http.HttpEntity

class OppslagControllerIntegrationTest : OppslagSpringRunnerTest() {
val tokenSubject = "12345678911"
val tokenSubject = FnrGenerator.generer()

@BeforeEach
fun førAlle() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ internal class OppslagServiceServiceImplTest {
@BeforeEach
fun setUp() {
mockkObject(EksternBrukerUtils)
every { EksternBrukerUtils.hentFnrFraToken() } returns "12345678911"
every { EksternBrukerUtils.hentFnrFraToken() } returns FnrGenerator.generer()
mockPdlHentBarn()
mockHentPersonPdlClient()
every { pdlApp2AppClient.hentAndreForeldre(any()) } returns (mapOf())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import java.time.LocalDate
import java.time.Period

internal class SøkerinfoMapperTest {
private val kodeverkService = mockk<KodeverkService>(relaxed = true)
Expand All @@ -50,7 +51,7 @@ internal class SøkerinfoMapperTest {
every { kodeverkService.hentPoststed(any()) } returns "OSLO"
every { kodeverkService.hentLand(any()) } returns "NORGE"
mockkObject(EksternBrukerUtils)
every { EksternBrukerUtils.hentFnrFraToken() } returns "12345678911"
every { EksternBrukerUtils.hentFnrFraToken() } returns FnrGenerator.generer()
}

@AfterEach
Expand Down Expand Up @@ -134,17 +135,61 @@ internal class SøkerinfoMapperTest {
assertThat(tilDto.harAdressesperre == false)
}

@Test
fun `skal kalkulere alder riktig for en person født i 1990 med D-nummer`() {
val fødselsdato = LocalDate.of(1990, 1, 1)
val fødselsnummer = FnrGenerator.generer(fødselsdato, erDnummer = true)
every { EksternBrukerUtils.hentFnrFraToken() } returns fødselsnummer

val pdlSøker = opprettPdlSøker()
val person = søkerinfoMapper.mapTilSøkerinfo(pdlSøker, emptyMap(), emptyMap()).søker
val forventetAlder = Period.between(fødselsdato, LocalDate.now()).years

assertThat(person.alder).isEqualTo(forventetAlder)
}

@Test
fun `skal kalkulere alder riktig for en person født i 1990`() {
val fødselsdato = LocalDate.of(1990, 1, 1)
val fødselsnummer = FnrGenerator.generer(fødselsdato)
every { EksternBrukerUtils.hentFnrFraToken() } returns fødselsnummer

val pdlSøker = opprettPdlSøker()
val person = søkerinfoMapper.mapTilSøkerinfo(pdlSøker, emptyMap(), emptyMap()).søker
val forventetAlder = Period.between(fødselsdato, LocalDate.now()).years

assertThat(person.alder).isEqualTo(forventetAlder)
}

@Test
fun `skal kalkulere alder riktig for en person født i 2000`() {
val fødselsdato = LocalDate.of(2000, 1, 1)
val fødselsnummer = FnrGenerator.generer(fødselsdato)
every { EksternBrukerUtils.hentFnrFraToken() } returns fødselsnummer

val pdlSøker = opprettPdlSøker()
val person = søkerinfoMapper.mapTilSøkerinfo(pdlSøker, emptyMap(), emptyMap()).søker
val forventetAlder = Period.between(fødselsdato, LocalDate.now()).years

assertThat(person.alder).isEqualTo(forventetAlder)
}

@Test
fun `skal kalkulere at alder er nøyaktig 20 år`() {
val fødselsdato = LocalDate.now().minusYears(20)
val fødselsnummer = FnrGenerator.generer(fødselsdato)
every { EksternBrukerUtils.hentFnrFraToken() } returns fødselsnummer

val pdlSøker = opprettPdlSøker()
val person = søkerinfoMapper.mapTilSøkerinfo(pdlSøker, emptyMap(), emptyMap()).søker

assertThat(person.alder).isEqualTo(20)
}

@Test
fun `AnnenForelder mappes til barn`() {
val pdlSøker =
PdlSøker(
listOf(),
listOf(),
listOf(),
navn = listOf(Navn("fornavn", "mellomnavn", "etternavn")),
sivilstand = listOf(Sivilstand(UOPPGITT)),
listOf(),
)
opprettPdlSøker()

val navn = Navn("Roy", "", "Toy")
val relatertPersonsIdent = FnrGenerator.generer()
Expand Down Expand Up @@ -176,14 +221,7 @@ internal class SøkerinfoMapperTest {
fun `AnnenForelder en annen forelder, to barn mappes til riktig barn`() {
// Gitt
val pdlSøker =
PdlSøker(
listOf(),
listOf(),
listOf(),
navn = listOf(Navn("fornavn", "mellomnavn", "etternavn")),
sivilstand = listOf(Sivilstand(UOPPGITT)),
listOf(),
)
opprettPdlSøker()

val navn = Navn("Roy", "", "Toy")
val relatertPersonsIdent = FnrGenerator.generer()
Expand Down Expand Up @@ -218,6 +256,19 @@ internal class SøkerinfoMapperTest {
assertThat(barn2Dto.first().medforelder).isNull()
}

private fun opprettPdlSøker(): PdlSøker {
val pdlSøker =
PdlSøker(
listOf(),
listOf(),
listOf(),
navn = listOf(Navn("fornavn", "mellomnavn", "etternavn")),
sivilstand = listOf(Sivilstand(UOPPGITT)),
listOf(),
)
return pdlSøker
}

@Test
fun `sivilstand er tom liste skal mappes til UOPPGITT`() {
// Gitt
Expand Down

0 comments on commit 44a7b2f

Please sign in to comment.