diff --git a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/SimuleringController.kt b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/SimuleringController.kt index e97ab15a..a702d38c 100644 --- a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/SimuleringController.kt +++ b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/SimuleringController.kt @@ -16,9 +16,6 @@ import no.nav.pensjon.kalkulator.simulering.api.map.AnonymSimuleringSpecMapperV1 import no.nav.pensjon.kalkulator.simulering.api.map.PersonligSimuleringExtendedResultMapperV8.extendedResultV8 import no.nav.pensjon.kalkulator.simulering.api.map.PersonligSimuleringResultMapperV8.resultV8 import no.nav.pensjon.kalkulator.simulering.api.map.PersonligSimuleringSpecMapperV8.fromSpecV8 -import no.nav.pensjon.kalkulator.simulering.api.map.SimuleringExtendedResultMapperV7.extendedResultV7 -import no.nav.pensjon.kalkulator.simulering.api.map.SimuleringResultMapperV7.resultatV7 -import no.nav.pensjon.kalkulator.simulering.api.map.SimuleringSpecMapperV7.fromIngressSimuleringSpecV7 import no.nav.pensjon.kalkulator.tech.metric.Metrics import no.nav.pensjon.kalkulator.tech.toggle.FeatureToggleService import no.nav.pensjon.kalkulator.tech.trace.TraceAid @@ -39,63 +36,6 @@ class SimuleringController( private val log = KotlinLogging.logger {} - @PostMapping("v7/alderspensjon/simulering") - @Operation( - summary = "Simuler alderspensjon", - description = "Lag en prognose for framtidig alderspensjon med støtte for AFP i offentlig sektor." + - " Feltet 'epsHarInntektOver2G' brukes til å angi hvorvidt ektefelle/partner/samboer har inntekt" + - " over 2 ganger grunnbeløpet. Dersom simulering med de angitte parametre resulterer i avslag i" + - " vilkårsprøvingen, vil responsen inneholde alternative parametre som vil gi et innvilget" + - " simuleringsresultat" - ) - @ApiResponses( - value = [ - ApiResponse( - responseCode = "200", - description = "Simulering utført" - ), - ApiResponse( - responseCode = "503", description = "Simulering kunne ikke utføres av tekniske årsaker", - content = [Content(examples = [ExampleObject(value = SERVICE_UNAVAILABLE_EXAMPLE)])] - ), - ] - ) - fun simulerAlderspensjonV7(@RequestBody spec: IngressSimuleringSpecV7): SimuleringResultatV7 { - traceAid.begin() - log.debug { "Request for V7 simulering: $spec" } - - return try { - if (feature.isEnabled("utvidet-simuleringsresultat")) - extendedResultV7( - timed( - service::simulerAlderspensjon, - fromIngressSimuleringSpecV7(spec), - "alderspensjon/simulering" - ) - ).also { - log.debug { "Simulering V7 respons: $it" } - Metrics.countType(eventName = SIMULERING_TYPE_METRIC_NAME, type = spec.simuleringstype.name) - } - else - resultatV7( - timed( - service::simulerAlderspensjon, - fromIngressSimuleringSpecV7(spec), - "alderspensjon/simulering" - ) - ).also { - log.debug { "Simulering V7 respons: $it" } - Metrics.countType(eventName = SIMULERING_TYPE_METRIC_NAME, type = spec.simuleringstype.name) - } - } catch (e: BadRequestException) { - badRequest(e)!! - } catch (e: EgressException) { - if (e.isConflict) vilkaarIkkeOppfyltV7() else handleError(e, "V7")!! - } finally { - traceAid.end() - } - } - @PostMapping("v8/alderspensjon/simulering") @Operation( summary = "Simuler alderspensjon", @@ -128,7 +68,8 @@ class SimuleringController( function = service::simulerAlderspensjon, argument = fromSpecV8(spec), functionName = "alderspensjon/simulering" - ) + ), + spec.foedselsdato ).also { log.debug { "Simulering V8 respons: $it" } Metrics.countType(eventName = SIMULERING_TYPE_METRIC_NAME, type = spec.simuleringstype.name) @@ -139,7 +80,8 @@ class SimuleringController( function = service::simulerAlderspensjon, argument = fromSpecV8(spec), functionName = "alderspensjon/simulering" - ) + ), + spec.foedselsdato ).also { log.debug { "Simulering V8 respons: $it" } Metrics.countType(eventName = SIMULERING_TYPE_METRIC_NAME, type = spec.simuleringstype.name) @@ -212,15 +154,6 @@ class SimuleringController( private const val ERROR_MESSAGE = "feil ved simulering" private const val SIMULERING_TYPE_METRIC_NAME = "simulering_type" - private fun vilkaarIkkeOppfyltV7() = - SimuleringResultatV7( - alderspensjon = emptyList(), - afpPrivat = null, - afpOffentlig = null, - vilkaarsproeving = VilkaarsproevingV7(vilkaarErOppfylt = false, alternativ = null), - harForLiteTrygdetid = false - ) - private fun vilkaarIkkeOppfyltV8() = PersonligSimuleringResultV8( alderspensjon = emptyList(), diff --git a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/IngressSimuleringSpecV7.kt b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/IngressSimuleringSpecV7.kt deleted file mode 100644 index 88c1372a..00000000 --- a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/IngressSimuleringSpecV7.kt +++ /dev/null @@ -1,49 +0,0 @@ -package no.nav.pensjon.kalkulator.simulering.api.dto - -import no.nav.pensjon.kalkulator.person.Sivilstand -import no.nav.pensjon.kalkulator.simulering.SimuleringType -import java.time.LocalDate - -/** - * Incoming (ingress) data transfer object (DTO) containing specification for 'simulering av alderspensjon'. - */ -data class IngressSimuleringSpecV7( - val simuleringstype: SimuleringType, - val foedselsdato: LocalDate, - val epsHarInntektOver2G: Boolean, - val aarligInntektFoerUttakBeloep: Int?, - val sivilstand: Sivilstand?, - val gradertUttak: IngressSimuleringGradertUttakV7? = null, // default is helt uttak (100 %) - val heltUttak: IngressSimuleringHeltUttakV7, - val utenlandsperiodeListe: List? = null -) - -data class IngressSimuleringGradertUttakV7( - val grad: Int, - val uttaksalder: IngressSimuleringAlderV7, - val aarligInntektVsaPensjonBeloep: Int? -) - -data class IngressSimuleringHeltUttakV7( - val uttaksalder: IngressSimuleringAlderV7, - val aarligInntektVsaPensjon: IngressSimuleringInntektV7? -) - -data class IngressSimuleringInntektV7( - val beloep: Int, - val sluttAlder: IngressSimuleringAlderV7 -) - -data class UtenlandsperiodeSpecV7 ( - val fom: LocalDate, - val tom: LocalDate?, - val landkode: String, - val arbeidetUtenlands: Boolean -) - -data class IngressSimuleringAlderV7(val aar: Int, val maaneder: Int) { - init { - require(aar in 0..200) { "0 <= aar <= 200" } - require(maaneder in 0..11) { "0 <= maaneder <= 11" } - } -} diff --git a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/PersonligSimuleringSpecV8.kt b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/PersonligSimuleringSpecV8.kt index 4156c1f6..8e7dc212 100644 --- a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/PersonligSimuleringSpecV8.kt +++ b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/PersonligSimuleringSpecV8.kt @@ -46,4 +46,9 @@ data class PersonligSimuleringUtenlandsperiodeSpecV8( data class PersonligSimuleringAlderSpecV8( val aar: Int, val maaneder: Int -) +){ + init { + require(aar in 0..200) { "0 <= aar <= 200" } + require(maaneder in 0..11) { "0 <= maaneder <= 11" } + } +} diff --git a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/SimuleringResultatV7.kt b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/SimuleringResultatV7.kt deleted file mode 100644 index aad3e33a..00000000 --- a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/SimuleringResultatV7.kt +++ /dev/null @@ -1,55 +0,0 @@ -package no.nav.pensjon.kalkulator.simulering.api.dto - -import com.fasterxml.jackson.annotation.JsonInclude - -@JsonInclude(JsonInclude.Include.NON_NULL) -data class SimuleringResultatV7( - val alderspensjon: List = emptyList(), - val alderspensjonMaanedligVedEndring: AlderspensjonsMaanedligV7? = null, - val afpPrivat: List? = emptyList(), - val afpOffentlig: List? = emptyList(), - val vilkaarsproeving: VilkaarsproevingV7, - val harForLiteTrygdetid: Boolean? = false, - val trygdetid: Int? = null, - val opptjeningGrunnlagListe: List? = null -) - -data class PensjonsberegningV7(val alder: Int, val beloep: Int) - -@JsonInclude(JsonInclude.Include.NON_NULL) -data class AlderspensjonsberegningV7( - val alder: Int, - val beloep: Int, - val inntektspensjonBeloep: Int? = null, - val garantipensjonBeloep: Int? = null, - val delingstall: Double? = null, - val pensjonBeholdningFoerUttakBeloep: Int? = null -) - -data class PensjonsberegningAfpOffentligV7(val alder: Int, val beloep: Int) - -data class SimulertOpptjeningGrunnlagV7( - val aar: Int, - val pensjonsgivendeInntektBeloep: Int -) - -@JsonInclude(JsonInclude.Include.NON_NULL) -data class VilkaarsproevingV7( - val vilkaarErOppfylt: Boolean, - val alternativ: AlternativV7? -) - -@JsonInclude(JsonInclude.Include.NON_NULL) -data class AlternativV7( - val gradertUttaksalder: AlderV7?, - val uttaksgrad: Int?, // null implies 100 % - val heltUttaksalder: AlderV7 -) - -data class AlderV7(val aar: Int, val maaneder: Int) - -@JsonInclude(JsonInclude.Include.NON_NULL) -data class AlderspensjonsMaanedligV7( - val gradertUttakMaanedligBeloep: Int? = null, - val heltUttakMaanedligBeloep: Int, -) diff --git a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/PersonligSimuleringExtendedResultMapperV8.kt b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/PersonligSimuleringExtendedResultMapperV8.kt index 1e21bb09..6bdb3ced 100644 --- a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/PersonligSimuleringExtendedResultMapperV8.kt +++ b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/PersonligSimuleringExtendedResultMapperV8.kt @@ -4,6 +4,8 @@ import no.nav.pensjon.kalkulator.general.Alder import no.nav.pensjon.kalkulator.general.Uttaksgrad import no.nav.pensjon.kalkulator.simulering.* import no.nav.pensjon.kalkulator.simulering.api.dto.* +import no.nav.pensjon.kalkulator.simulering.api.map.PersonligSimuleringResultMapperV8.justerAlderspensjonIInnevaerendeAarV8 +import java.time.LocalDate /** * Maps between data transfer objects (DTOs) and domain objects related to simulering. @@ -11,9 +13,9 @@ import no.nav.pensjon.kalkulator.simulering.api.dto.* */ object PersonligSimuleringExtendedResultMapperV8 { - fun extendedResultV8(source: SimuleringResult) = + fun extendedResultV8(source: SimuleringResult, foedselsdato: LocalDate) = PersonligSimuleringResultV8( - alderspensjon = source.alderspensjon.map(::alderspensjon), + alderspensjon = source.alderspensjon.map(::alderspensjon).let { justerAlderspensjonIInnevaerendeAarV8(it, foedselsdato) }, alderspensjonMaanedligVedEndring = maanedligPensjon(source.alderspensjonMaanedsbeloep), afpPrivat = source.afpPrivat.map(::privatAfp), afpOffentlig = source.afpOffentlig.map(::offentligAfp), diff --git a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/PersonligSimuleringResultMapperV8.kt b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/PersonligSimuleringResultMapperV8.kt index 7938abb2..1cb15a87 100644 --- a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/PersonligSimuleringResultMapperV8.kt +++ b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/PersonligSimuleringResultMapperV8.kt @@ -4,6 +4,7 @@ import no.nav.pensjon.kalkulator.general.Alder import no.nav.pensjon.kalkulator.general.Uttaksgrad import no.nav.pensjon.kalkulator.simulering.* import no.nav.pensjon.kalkulator.simulering.api.dto.* +import java.time.LocalDate /** * Maps between data transfer objects (DTOs) and domain objects related to simulering. @@ -11,9 +12,9 @@ import no.nav.pensjon.kalkulator.simulering.api.dto.* */ object PersonligSimuleringResultMapperV8 { - fun resultV8(source: SimuleringResult) = + fun resultV8(source: SimuleringResult, foedselsdato: LocalDate) = PersonligSimuleringResultV8( - alderspensjon = source.alderspensjon.map(::alderspensjon), + alderspensjon = source.alderspensjon.map(::alderspensjon).let { justerAlderspensjonIInnevaerendeAarV8(it, foedselsdato) }, alderspensjonMaanedligVedEndring = maanedligPensjon(source.alderspensjonMaanedsbeloep), afpPrivat = source.afpPrivat.map(::privatAfp), afpOffentlig = source.afpOffentlig.map(::offentligAfp), @@ -27,6 +28,36 @@ object PersonligSimuleringResultMapperV8 { beloep = source.beloep ) + /** + * Assign a pension with age 0 to the current age, or remove it from the list if the current age already exists. + */ + fun justerAlderspensjonIInnevaerendeAarV8( + alderspensjonList: List, + foedselsdato: LocalDate + ): List { + alderspensjonList + .firstOrNull { it.alder == 0 } + ?.let { + val innevaerendeAarAlder = Alder.from(foedselsdato, LocalDate.now()).aar + val oppdatertAlderspensjonList = alderspensjonList.filter { it.alder != 0 }.toMutableList() + + if (oppdatertAlderspensjonList.any { it.alder == innevaerendeAarAlder }) { + return oppdatertAlderspensjonList.sortedBy { it.alder } + } + oppdatertAlderspensjonList.add( + PersonligSimuleringAlderspensjonResultV8( + innevaerendeAarAlder, + it.beloep, + it.inntektspensjonBeloep, + it.garantipensjonBeloep, + it.delingstall, + it.pensjonBeholdningFoerUttakBeloep + ) + ) + return oppdatertAlderspensjonList.sortedBy { it.alder } + } ?: return alderspensjonList + } + private fun maanedligPensjon(source: AlderspensjonMaanedsbeloep?) = PersonligSimuleringMaanedligPensjonResultV8( gradertUttakMaanedligBeloep = source?.gradertUttak, diff --git a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringExtendedResultMapperV7.kt b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringExtendedResultMapperV7.kt deleted file mode 100644 index f433ced7..00000000 --- a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringExtendedResultMapperV7.kt +++ /dev/null @@ -1,70 +0,0 @@ -package no.nav.pensjon.kalkulator.simulering.api.map - -import no.nav.pensjon.kalkulator.general.Alder -import no.nav.pensjon.kalkulator.general.Uttaksgrad -import no.nav.pensjon.kalkulator.simulering.* -import no.nav.pensjon.kalkulator.simulering.api.dto.* - -/** - * Maps between data transfer objects (DTOs) and domain objects related to simulering. - * The DTOs are specified by version 6 of the API offered to clients. - */ -object SimuleringExtendedResultMapperV7 { - - fun extendedResultV7(source: SimuleringResult) = - SimuleringResultatV7( - alderspensjon = source.alderspensjon.map(::alderspensjon), - alderspensjonMaanedligVedEndring = AlderspensjonsMaanedligV7( - gradertUttakMaanedligBeloep = source.alderspensjonMaanedsbeloep?.gradertUttak, - heltUttakMaanedligBeloep = source.alderspensjonMaanedsbeloep?.heltUttak ?: 0, - ), - afpPrivat = source.afpPrivat.map(::privatAfp), - afpOffentlig = source.afpOffentlig.map(::offentligAfp), - vilkaarsproeving = vilkaarsproeving(source.vilkaarsproeving), - harForLiteTrygdetid = source.harForLiteTrygdetid, - trygdetid = source.trygdetid, - opptjeningGrunnlagListe = source.opptjeningGrunnlagListe.map(::opptjeningGrunnlag) - ) - - private fun alderspensjon(source: SimulertAlderspensjon) = - AlderspensjonsberegningV7( - source.alder, - source.beloep, - source.inntektspensjonBeloep, - source.garantipensjonBeloep, - source.delingstall, - source.pensjonBeholdningFoerUttak - ) - - private fun offentligAfp(source: SimulertAfpOffentlig) = - PensjonsberegningAfpOffentligV7(source.alder, source.beloep) - - private fun privatAfp(source: SimulertAfpPrivat) = - PensjonsberegningV7(source.alder, source.beloep) - - private fun opptjeningGrunnlag(source: SimulertOpptjeningGrunnlag) = - SimulertOpptjeningGrunnlagV7( - source.aar, - source.pensjonsgivendeInntektBeloep - ) - - private fun vilkaarsproeving(source: Vilkaarsproeving) = - VilkaarsproevingV7( - vilkaarErOppfylt = source.innvilget, - alternativ = source.alternativ?.let(::alternativ) - ) - - private fun alternativ(source: Alternativ) = - AlternativV7( - gradertUttaksalder = source.gradertUttakAlder?.let(::alder), - uttaksgrad = prosentsats(source.uttakGrad), - heltUttaksalder = alder(source.heltUttakAlder) - ) - - private fun prosentsats(grad: Uttaksgrad?): Int? = - grad?.let { - if (it == Uttaksgrad.HUNDRE_PROSENT) null else it.prosentsats - } - - private fun alder(source: Alder) = AlderV7(source.aar, source.maaneder) -} diff --git a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringResultMapperV7.kt b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringResultMapperV7.kt deleted file mode 100644 index af51a750..00000000 --- a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringResultMapperV7.kt +++ /dev/null @@ -1,58 +0,0 @@ -package no.nav.pensjon.kalkulator.simulering.api.map - -import no.nav.pensjon.kalkulator.general.Alder -import no.nav.pensjon.kalkulator.general.Uttaksgrad -import no.nav.pensjon.kalkulator.simulering.* -import no.nav.pensjon.kalkulator.simulering.api.dto.* - -/** - * Maps between data transfer objects (DTOs) and domain objects related to simulering. - * The DTOs are specified by version 6 of the API offered to clients. - */ -object SimuleringResultMapperV7 { - - fun resultatV7(source: SimuleringResult) = - SimuleringResultatV7( - alderspensjon = source.alderspensjon.map(::alderspensjon), - alderspensjonMaanedligVedEndring = AlderspensjonsMaanedligV7( - gradertUttakMaanedligBeloep = source.alderspensjonMaanedsbeloep?.gradertUttak, - heltUttakMaanedligBeloep = source.alderspensjonMaanedsbeloep?.heltUttak ?: 0, - ), - afpPrivat = source.afpPrivat.map(::privatAfp), - afpOffentlig = source.afpOffentlig.map(::offentligAfp), - vilkaarsproeving = vilkaarsproeving(source.vilkaarsproeving), - harForLiteTrygdetid = source.harForLiteTrygdetid, - ) - - private fun alderspensjon(source: SimulertAlderspensjon) = - AlderspensjonsberegningV7( - source.alder, - source.beloep - ) - - private fun offentligAfp(source: SimulertAfpOffentlig) = - PensjonsberegningAfpOffentligV7(source.alder, source.beloep) - - private fun privatAfp(source: SimulertAfpPrivat) = - PensjonsberegningV7(source.alder, source.beloep) - - private fun vilkaarsproeving(source: Vilkaarsproeving) = - VilkaarsproevingV7( - vilkaarErOppfylt = source.innvilget, - alternativ = source.alternativ?.let(::alternativ) - ) - - private fun alternativ(source: Alternativ) = - AlternativV7( - gradertUttaksalder = source.gradertUttakAlder?.let(::alder), - uttaksgrad = prosentsats(source.uttakGrad), - heltUttaksalder = alder(source.heltUttakAlder) - ) - - private fun prosentsats(grad: Uttaksgrad?): Int? = - grad?.let { - if (it == Uttaksgrad.HUNDRE_PROSENT) null else it.prosentsats - } - - private fun alder(source: Alder) = AlderV7(source.aar, source.maaneder) -} diff --git a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringSpecMapperV7.kt b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringSpecMapperV7.kt deleted file mode 100644 index ef3a2647..00000000 --- a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringSpecMapperV7.kt +++ /dev/null @@ -1,65 +0,0 @@ -package no.nav.pensjon.kalkulator.simulering.api.map - -import no.nav.pensjon.kalkulator.general.* -import no.nav.pensjon.kalkulator.land.Land -import no.nav.pensjon.kalkulator.simulering.* -import no.nav.pensjon.kalkulator.simulering.api.dto.* - -/** - * Maps between data transfer objects (DTOs) and domain objects related to simulering. - * The DTOs are specified by version 6 of the API offered to clients. - */ -object SimuleringSpecMapperV7 { - - fun fromIngressSimuleringSpecV7(dto: IngressSimuleringSpecV7) = - ImpersonalSimuleringSpec( - simuleringType = dto.simuleringstype, - eps = eps(dto), - forventetAarligInntektFoerUttak = dto.aarligInntektFoerUttakBeloep, - sivilstand = dto.sivilstand, - gradertUttak = dto.gradertUttak?.let(::gradertUttak), - heltUttak = heltUttak(dto.heltUttak), - utenlandsopphold = utenlandsopphold(dto) - ) - - private fun eps(dto: IngressSimuleringSpecV7) = - Eps( - harInntektOver2G = dto.epsHarInntektOver2G, - harPensjon = false - ) - - private fun gradertUttak(dto: IngressSimuleringGradertUttakV7) = - GradertUttak( - grad = Uttaksgrad.from(dto.grad), - uttakFomAlder = alder(dto.uttaksalder), - aarligInntekt = dto.aarligInntektVsaPensjonBeloep ?: 0 - ) - - private fun heltUttak(dto: IngressSimuleringHeltUttakV7) = - HeltUttak( - uttakFomAlder = alder(dto.uttaksalder), - inntekt = dto.aarligInntektVsaPensjon?.let(::inntekt) - ) - - private fun utenlandsopphold(dto: IngressSimuleringSpecV7) = - Utenlandsopphold( - periodeListe = dto.utenlandsperiodeListe.orEmpty().map(::opphold), - antallAar = 0 // not relevant when utenlandsperiodeListe used - ) - - private fun opphold(dto: UtenlandsperiodeSpecV7) = - Opphold( - fom = dto.fom, - tom = dto.tom, - land = Land.valueOf(dto.landkode), - arbeidet = dto.arbeidetUtenlands - ) - - private fun inntekt(dto: IngressSimuleringInntektV7) = - Inntekt( - aarligBeloep = dto.beloep, - tomAlder = dto.sluttAlder.let(::alder) - ) - - private fun alder(dto: IngressSimuleringAlderV7) = Alder(dto.aar, dto.maaneder) -} diff --git a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/client/pen/map/PenSimuleringResultMapper.kt b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/client/pen/map/PenSimuleringResultMapper.kt index 969cb327..a581764b 100644 --- a/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/client/pen/map/PenSimuleringResultMapper.kt +++ b/src/main/kotlin/no/nav/pensjon/kalkulator/simulering/client/pen/map/PenSimuleringResultMapper.kt @@ -10,7 +10,7 @@ object PenSimuleringResultMapper { fun fromDto(dto: PenSimuleringResultDto) = SimuleringResult( - alderspensjon = dto.alderspensjon.map(::alderspensjon).let { bytt0AlderMedAlderIInnevaerendeAar(it) }, + alderspensjon = dto.alderspensjon.map(::alderspensjon), alderspensjonMaanedsbeloep = alderspensjonMaanedsbeloep(dto.alderspensjonMaanedsbeloep), afpPrivat = dto.afpPrivat.map(::afpPrivat), afpOffentlig = dto.afpOffentliglivsvarig.map(::afpOffentlig), @@ -20,21 +20,6 @@ object PenSimuleringResultMapper { opptjeningGrunnlagListe = dto.opptjeningGrunnlagListe.orEmpty().map(::opptjeningGrunnlag) ) - /* - * Pesys returnerer inneværende års alderspensjon med alder 0. Vi setter den til det faktiske alderen. - * */ - private fun bytt0AlderMedAlderIInnevaerendeAar(alderspensjonList: List): List { - return alderspensjonList - .filterNot { it.alder == 0 } - .let { filteredList -> - alderspensjonList - .firstOrNull { it.alder == 0 } - ?.let { filteredList + it.copy(alder = filteredList.minOf { it.alder } - 1) } - ?: filteredList - } - .sortedBy { it.alder } - } - private fun opptjeningGrunnlag(dto: PenOpptjeningGrunnlag) = SimulertOpptjeningGrunnlag(dto.aar, dto.pensjonsgivendeInntekt) diff --git a/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/SimuleringControllerTest.kt b/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/SimuleringControllerTest.kt index d3c2b0fe..e236184a 100644 --- a/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/SimuleringControllerTest.kt +++ b/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/SimuleringControllerTest.kt @@ -59,121 +59,6 @@ class SimuleringControllerTest { @MockitoBean private lateinit var auditor: Auditor - @Test - fun `simulerer hel alderspensjon V7`() { - val spec = impersonalHeltUttakSpec(SimuleringType.ALDERSPENSJON) - `when`(simuleringService.simulerAlderspensjon(spec)).thenReturn(simuleringsresultat(spec.simuleringType)) - enableUtvidetResult() - - mvc.perform( - post(URL_V7) - .with(csrf()) - .content(heltUttakRequestBodyV7(SimuleringType.ALDERSPENSJON)) - .contentType(MediaType.APPLICATION_JSON) - ) - .andExpect(status().isOk()) - .andExpect(content().json(responseBodyV7())) - } - - @Test - fun `simulerer alderspensjon med gradert uttak V7`() { - val spec = impersonalGradertUttakSpec() - `when`(simuleringService.simulerAlderspensjon(spec)) - .thenReturn(simuleringsresultat(spec.simuleringType, heltUttak = false)) - enableUtvidetResult() - - mvc.perform( - post(URL_V7) - .with(csrf()) - .content(gradertUttakRequestBody()) - .contentType(MediaType.APPLICATION_JSON) - ) - .andExpect(status().isOk()) - .andExpect(content().json(responseBodyGradertUttakV7())) - } - - @Test - fun `simulerer alderspensjon med AFP privat V7`() { - val spec = impersonalHeltUttakSpec(SimuleringType.ALDERSPENSJON_MED_AFP_PRIVAT) - `when`(simuleringService.simulerAlderspensjon(spec)).thenReturn(simuleringsresultat(spec.simuleringType)) - enableUtvidetResult() - - mvc.perform( - post(URL_V7) - .with(csrf()) - .content(heltUttakRequestBodyV7(SimuleringType.ALDERSPENSJON_MED_AFP_PRIVAT)) - .contentType(MediaType.APPLICATION_JSON) - ) - .andExpect(status().isOk()) - .andExpect(content().json(responseBodyV7MedAfpPrivat())) - } - - @Test - fun `simulerer alderspensjon med AFP offentlig V7`() { - val spec = impersonalHeltUttakSpec(SimuleringType.ALDERSPENSJON_MED_AFP_OFFENTLIG_LIVSVARIG) - `when`(simuleringService.simulerAlderspensjon(spec)).thenReturn(simuleringsresultat(spec.simuleringType)) - enableUtvidetResult() - - mvc.perform( - post(URL_V7) - .with(csrf()) - .content(heltUttakRequestBodyV7(SimuleringType.ALDERSPENSJON_MED_AFP_OFFENTLIG_LIVSVARIG)) - .contentType(MediaType.APPLICATION_JSON) - ) - .andExpect(status().isOk()) - .andExpect(content().json(responseBodyV7MedAfpOffentlig())) - } - - @Test - fun `simulering responds 'vilkaar ikke oppfylt' when Conflict V7`() { - val spec = impersonalHeltUttakSpec(SimuleringType.ALDERSPENSJON_MED_AFP_PRIVAT) - `when`(simuleringService.simulerAlderspensjon(spec)).thenThrow(conflict()) - enableUtvidetResult() - - mvc.perform( - post(URL_V7) - .with(csrf()) - .content(heltUttakRequestBodyV7(SimuleringType.ALDERSPENSJON_MED_AFP_PRIVAT)) - .contentType(MediaType.APPLICATION_JSON) - ) - .andExpect(status().isOk()) - .andExpect(content().json(VILKAAR_IKKE_OPPFYLT_RESPONSE_BODY)) - } - - @Test - fun `simulerer endring av alderspensjon V7`() { - val spec = impersonalGradertUttakSpec(SimuleringType.ENDRING_ALDERSPENSJON) - `when`(simuleringService.simulerAlderspensjon(spec)) - .thenReturn(simuleringsresultat(spec.simuleringType, heltUttak = false)) - enableUtvidetResult() - - mvc.perform( - post(URL_V7) - .with(csrf()) - .content(gradertUttakRequestBody(SimuleringType.ENDRING_ALDERSPENSJON)) - .contentType(MediaType.APPLICATION_JSON) - ) - .andExpect(status().isOk()) - .andExpect(content().json(responseBodyGradertUttakV7())) - } - - @Test - fun `simulerer endring av alderspensjon med AFP privat V7`() { - val spec = impersonalGradertUttakSpec(SimuleringType.ENDRING_ALDERSPENSJON_MED_AFP_PRIVAT) - `when`(simuleringService.simulerAlderspensjon(spec)) - .thenReturn(simuleringsresultat(spec.simuleringType, heltUttak = false)) - enableUtvidetResult() - - mvc.perform( - post(URL_V7) - .with(csrf()) - .content(gradertUttakRequestBody(SimuleringType.ENDRING_ALDERSPENSJON_MED_AFP_PRIVAT)) - .contentType(MediaType.APPLICATION_JSON) - ) - .andExpect(status().isOk()) - .andExpect(content().json(responseBodyGradertUttakV7())) - } - @Test fun `simulerer hel alderspensjon V8`() { val spec = impersonalHeltUttakSpec(SimuleringType.ALDERSPENSJON, epsHarInntektOver2G = true) @@ -298,31 +183,9 @@ class SimuleringControllerTest { private companion object { - private const val URL_V7 = "/api/v7/alderspensjon/simulering" private const val URL_V8 = "/api/v8/alderspensjon/simulering" private const val PENSJONSBELOEP = 123456 - @Language("json") - private fun heltUttakRequestBodyV7(simuleringType: SimuleringType) = """{ - "simuleringstype": "$simuleringType", - "foedselsdato": "1963-12-31", - "epsHarInntektOver2G": false, - "aarligInntektFoerUttakBeloep": 100000, - "sivilstand": "UGIFT", - "heltUttak": { - "uttaksalder": { "aar": 67, "maaneder": 1 }, - "aarligInntektVsaPensjon": { - "beloep": 50000, - "sluttAlder": { "aar": 75, "maaneder": 0 } } - }, - "utenlandsperiodeListe": [{ - "fom": "1990-01-02", - "tom": "1999-11-30", - "landkode": "AUS", - "arbeidetUtenlands": true - }] - }""".trimIndent() - @Language("json") private fun heltUttakRequestBodyV8(simuleringType: SimuleringType) = """{ "simuleringstype": "$simuleringType", @@ -405,77 +268,6 @@ class SimuleringControllerTest { utenlandsopphold = Utenlandsopphold(periodeListe = emptyList()) ) - @Language("json") - private fun responseBodyV7() = """{ - "alderspensjon": [ - { - "beloep": $PENSJONSBELOEP, - "alder": 67 - } - ], - "alderspensjonMaanedligVedEndring": - { - "heltUttakMaanedligBeloep": 0 - } - }""".trimIndent() - - @Language("json") - private fun responseBodyGradertUttakV7() = """{ - "alderspensjon": [ - { - "beloep": $PENSJONSBELOEP, - "alder": 67 - } - ], - "alderspensjonMaanedligVedEndring": - { - "gradertUttakMaanedligBeloep": 0, - "heltUttakMaanedligBeloep": 0 - } - }""".trimIndent() - - @Language("json") - private fun responseBodyV7MedAfpPrivat() = """{ - "alderspensjon": [ - { - "beloep": $PENSJONSBELOEP, - "alder": 67 - } - ], - "alderspensjonMaanedligVedEndring": - { - "heltUttakMaanedligBeloep": 0 - }, - "afpPrivat": - [ - { - "beloep": 22056, - "alder": 67 - } - ] - }""".trimIndent() - - @Language("json") - private fun responseBodyV7MedAfpOffentlig() = """{ - "alderspensjon": [ - { - "beloep": $PENSJONSBELOEP, - "alder": 67 - } - ], - "alderspensjonMaanedligVedEndring": - { - "heltUttakMaanedligBeloep": 0 - }, - "afpOffentlig": [ - { - "beloep": 22056, - "alder": 67 - } - ] - } - """.trimIndent() - @Language("json") private fun responseBodyForHeltUttakV8() = """{ "alderspensjon": [ diff --git a/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/IngressSimuleringSpecV7Test.kt b/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/IngressSimuleringSpecV8Test.kt similarity index 58% rename from src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/IngressSimuleringSpecV7Test.kt rename to src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/IngressSimuleringSpecV8Test.kt index 287a2777..68431f5d 100644 --- a/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/IngressSimuleringSpecV7Test.kt +++ b/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/dto/IngressSimuleringSpecV8Test.kt @@ -4,39 +4,39 @@ import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertThrows import org.junit.jupiter.api.Test -class IngressSimuleringSpecV7Test { +class IngressSimuleringSpecV8Test { @Test - fun `IngressSimuleringAlderV7 requires non-zero 'aar' value`() { + fun `PersonligSimuleringAlderSpecV8 requires non-zero 'aar' value`() { val exception = assertThrows(IllegalArgumentException::class.java) { - IngressSimuleringAlderV7(aar = -1, maaneder = 11) + PersonligSimuleringAlderSpecV8(aar = -1, maaneder = 11) } assertEquals("0 <= aar <= 200", exception.message) } @Test - fun `IngressSimuleringAlderV7 requires 'aar' of 200 or less`() { + fun `PersonligSimuleringAlderSpecV8 requires 'aar' of 200 or less`() { val exception = assertThrows(IllegalArgumentException::class.java) { - IngressSimuleringAlderV7(aar = 201, maaneder = 0) + PersonligSimuleringAlderSpecV8(aar = 201, maaneder = 0) } assertEquals("0 <= aar <= 200", exception.message) } @Test - fun `IngressSimuleringAlderV7 requires non-zero 'maaneder' value`() { + fun `PersonligSimuleringAlderSpecV8 requires non-zero 'maaneder' value`() { val exception = assertThrows(IllegalArgumentException::class.java) { - IngressSimuleringAlderV7(aar = 100, maaneder = -1) + PersonligSimuleringAlderSpecV8(aar = 100, maaneder = -1) } assertEquals("0 <= maaneder <= 11", exception.message) } @Test - fun `IngressSimuleringAlderV7 requires 'maaneder' of 11 or less`() { + fun `PersonligSimuleringAlderSpecV8 requires 'maaneder' of 11 or less`() { val exception = assertThrows(IllegalArgumentException::class.java) { - IngressSimuleringAlderV7(aar = 0, maaneder = 12) + PersonligSimuleringAlderSpecV8(aar = 0, maaneder = 12) } assertEquals("0 <= maaneder <= 11", exception.message) diff --git a/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringExtendedResultMapperV7Test.kt b/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/PersonligSimuleringExtendedResultMapperV8Test.kt similarity index 66% rename from src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringExtendedResultMapperV7Test.kt rename to src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/PersonligSimuleringExtendedResultMapperV8Test.kt index 12601920..2276db3a 100644 --- a/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringExtendedResultMapperV7Test.kt +++ b/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/PersonligSimuleringExtendedResultMapperV8Test.kt @@ -4,12 +4,12 @@ import io.kotest.matchers.shouldBe import no.nav.pensjon.kalkulator.simulering.* import no.nav.pensjon.kalkulator.simulering.api.dto.* import org.junit.jupiter.api.Test +import java.time.LocalDate -class SimuleringExtendedResultMapperV7Test { - +class PersonligSimuleringExtendedResultMapperV8Test{ @Test - fun `extendedResultV7 maps domain to V7 DTO`() { - SimuleringExtendedResultMapperV7.extendedResultV7( + fun `extendedResultV8 maps domain to V8 DTO`() { + PersonligSimuleringExtendedResultMapperV8.extendedResultV8( SimuleringResult( alderspensjon = listOf( SimulertAlderspensjon( @@ -31,10 +31,10 @@ class SimuleringExtendedResultMapperV7Test { SimulertOpptjeningGrunnlag(aar = 2001, pensjonsgivendeInntektBeloep = 501000), SimulertOpptjeningGrunnlag(aar = 2002, pensjonsgivendeInntektBeloep = 502000) ) - ) - ) shouldBe SimuleringResultatV7( + ), LocalDate.now().minusYears(67).minusMonths(1) + ) shouldBe PersonligSimuleringResultV8( alderspensjon = listOf( - AlderspensjonsberegningV7( + PersonligSimuleringAlderspensjonResultV8( alder = 67, beloep = 123456, inntektspensjonBeloep = 1, @@ -43,19 +43,19 @@ class SimuleringExtendedResultMapperV7Test { pensjonBeholdningFoerUttakBeloep = 5 ) ), - alderspensjonMaanedligVedEndring = AlderspensjonsMaanedligV7( + alderspensjonMaanedligVedEndring = PersonligSimuleringMaanedligPensjonResultV8( gradertUttakMaanedligBeloep = 6, heltUttakMaanedligBeloep = 7 ), - afpPrivat = listOf(PensjonsberegningV7(alder = 67, beloep = 12000)), - afpOffentlig = listOf(PensjonsberegningAfpOffentligV7(alder = 67, beloep = 12000)), - vilkaarsproeving = VilkaarsproevingV7(vilkaarErOppfylt = true, alternativ = null), + afpPrivat = listOf(PersonligSimuleringAarligPensjonResultV8(alder = 67, beloep = 12000)), + afpOffentlig = listOf(PersonligSimuleringAarligPensjonResultV8(alder = 67, beloep = 12000)), + vilkaarsproeving = PersonligSimuleringVilkaarsproevingResultV8(vilkaarErOppfylt = true, alternativ = null), harForLiteTrygdetid = true, trygdetid = 10, opptjeningGrunnlagListe = listOf( - SimulertOpptjeningGrunnlagV7(aar = 2001, pensjonsgivendeInntektBeloep = 501000), - SimulertOpptjeningGrunnlagV7(aar = 2002, pensjonsgivendeInntektBeloep = 502000) + PersonligSimuleringAarligInntektResultV8(aar = 2001, pensjonsgivendeInntektBeloep = 501000), + PersonligSimuleringAarligInntektResultV8(aar = 2002, pensjonsgivendeInntektBeloep = 502000) ) ) } -} +} \ No newline at end of file diff --git a/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/PersonligSimuleringResultMapperV8Test.kt b/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/PersonligSimuleringResultMapperV8Test.kt new file mode 100644 index 00000000..309850ff --- /dev/null +++ b/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/PersonligSimuleringResultMapperV8Test.kt @@ -0,0 +1,215 @@ +package no.nav.pensjon.kalkulator.simulering.api.map + +import io.kotest.matchers.shouldBe +import no.nav.pensjon.kalkulator.simulering.* +import no.nav.pensjon.kalkulator.simulering.api.dto.* +import org.junit.jupiter.api.Test +import java.time.LocalDate + +class PersonligSimuleringResultMapperV8Test{ + @Test + fun `resultatV8 maps domain to V8 DTO`() { + PersonligSimuleringResultMapperV8.resultV8( + SimuleringResult( + alderspensjon = listOf( + SimulertAlderspensjon( + alder = 67, + beloep = 123456, + inntektspensjonBeloep = 1, + garantipensjonBeloep = 2, + delingstall = 3.4, + pensjonBeholdningFoerUttak = 5 + ) + ), + alderspensjonMaanedsbeloep = AlderspensjonMaanedsbeloep(gradertUttak = 6, heltUttak = 7), + afpPrivat = listOf(SimulertAfpPrivat(alder = 67, beloep = 12000)), + afpOffentlig = listOf(SimulertAfpOffentlig(alder = 67, beloep = 12000)), + vilkaarsproeving = Vilkaarsproeving(innvilget = true, alternativ = null), + harForLiteTrygdetid = true, + trygdetid = 10, + opptjeningGrunnlagListe = listOf( + SimulertOpptjeningGrunnlag(aar = 2001, pensjonsgivendeInntektBeloep = 501000), + SimulertOpptjeningGrunnlag(aar = 2002, pensjonsgivendeInntektBeloep = 502000) + ) + ), + LocalDate.now().minusYears(67).minusMonths(1) + ) shouldBe PersonligSimuleringResultV8( + alderspensjon = listOf( + PersonligSimuleringAlderspensjonResultV8( + alder = 67, + beloep = 123456, + inntektspensjonBeloep = null, + garantipensjonBeloep = null, + delingstall = null, + pensjonBeholdningFoerUttakBeloep = null + ) + ), + alderspensjonMaanedligVedEndring = PersonligSimuleringMaanedligPensjonResultV8( + gradertUttakMaanedligBeloep = 6, + heltUttakMaanedligBeloep = 7 + ), + afpPrivat = listOf(PersonligSimuleringAarligPensjonResultV8(alder = 67, beloep = 12000)), + afpOffentlig = listOf(PersonligSimuleringAarligPensjonResultV8(alder = 67, beloep = 12000)), + vilkaarsproeving = PersonligSimuleringVilkaarsproevingResultV8(vilkaarErOppfylt = true, alternativ = null), + harForLiteTrygdetid = true, + trygdetid = null, + opptjeningGrunnlagListe = null + ) + } + + @Test + fun `resultatV8 ignores alderspensjon with age 0 when mapping domain to V8 DTO`() { + PersonligSimuleringResultMapperV8.resultV8( + SimuleringResult( + alderspensjon = listOf( + SimulertAlderspensjon( + alder = 67, + beloep = 123456, + inntektspensjonBeloep = 1, + garantipensjonBeloep = 2, + delingstall = 3.4, + pensjonBeholdningFoerUttak = 5 + ), + SimulertAlderspensjon( + alder = 68, + beloep = 123456, + inntektspensjonBeloep = 1, + garantipensjonBeloep = 2, + delingstall = 3.4, + pensjonBeholdningFoerUttak = 5 + ), + SimulertAlderspensjon( + alder = 0, + beloep = 1, + inntektspensjonBeloep = 2, + garantipensjonBeloep = 3, + delingstall = 4.5, + pensjonBeholdningFoerUttak = 6 + ) + ), + alderspensjonMaanedsbeloep = AlderspensjonMaanedsbeloep(gradertUttak = 6, heltUttak = 7), + afpPrivat = listOf(SimulertAfpPrivat(alder = 67, beloep = 12000)), + afpOffentlig = listOf(SimulertAfpOffentlig(alder = 67, beloep = 12000)), + vilkaarsproeving = Vilkaarsproeving(innvilget = true, alternativ = null), + harForLiteTrygdetid = true, + trygdetid = 10, + opptjeningGrunnlagListe = listOf( + SimulertOpptjeningGrunnlag(aar = 2001, pensjonsgivendeInntektBeloep = 501000), + SimulertOpptjeningGrunnlag(aar = 2002, pensjonsgivendeInntektBeloep = 502000) + ) + ), + LocalDate.now().minusYears(67).minusMonths(1) + ) shouldBe PersonligSimuleringResultV8( + alderspensjon = listOf( + PersonligSimuleringAlderspensjonResultV8( + alder = 67, + beloep = 123456, + inntektspensjonBeloep = null, + garantipensjonBeloep = null, + delingstall = null, + pensjonBeholdningFoerUttakBeloep = null + ), + PersonligSimuleringAlderspensjonResultV8( + alder = 68, + beloep = 123456, + inntektspensjonBeloep = null, + garantipensjonBeloep = null, + delingstall = null, + pensjonBeholdningFoerUttakBeloep = null + ) + ), + alderspensjonMaanedligVedEndring = PersonligSimuleringMaanedligPensjonResultV8( + gradertUttakMaanedligBeloep = 6, + heltUttakMaanedligBeloep = 7 + ), + afpPrivat = listOf(PersonligSimuleringAarligPensjonResultV8(alder = 67, beloep = 12000)), + afpOffentlig = listOf(PersonligSimuleringAarligPensjonResultV8(alder = 67, beloep = 12000)), + vilkaarsproeving = PersonligSimuleringVilkaarsproevingResultV8(vilkaarErOppfylt = true, alternativ = null), + harForLiteTrygdetid = true, + trygdetid = null, + opptjeningGrunnlagListe = null + ) + } + + @Test + fun `resultatV8 assigns 0 age to current age and adds it to the list, when mapping domain to V8 DTO`() { + PersonligSimuleringResultMapperV8.resultV8( + SimuleringResult( + alderspensjon = listOf( + SimulertAlderspensjon( + alder = 68, + beloep = 123456, + inntektspensjonBeloep = 1, + garantipensjonBeloep = 2, + delingstall = 3.4, + pensjonBeholdningFoerUttak = 5 + ), + SimulertAlderspensjon( + alder = 69, + beloep = 123456, + inntektspensjonBeloep = 1, + garantipensjonBeloep = 2, + delingstall = 3.4, + pensjonBeholdningFoerUttak = 5 + ), + SimulertAlderspensjon( + alder = 0, + beloep = 1, + inntektspensjonBeloep = 2, + garantipensjonBeloep = 3, + delingstall = 4.5, + pensjonBeholdningFoerUttak = 6 + ) + ), + alderspensjonMaanedsbeloep = AlderspensjonMaanedsbeloep(gradertUttak = 6, heltUttak = 7), + afpPrivat = listOf(SimulertAfpPrivat(alder = 67, beloep = 12000)), + afpOffentlig = listOf(SimulertAfpOffentlig(alder = 67, beloep = 12000)), + vilkaarsproeving = Vilkaarsproeving(innvilget = true, alternativ = null), + harForLiteTrygdetid = true, + trygdetid = 10, + opptjeningGrunnlagListe = listOf( + SimulertOpptjeningGrunnlag(aar = 2001, pensjonsgivendeInntektBeloep = 501000), + SimulertOpptjeningGrunnlag(aar = 2002, pensjonsgivendeInntektBeloep = 502000) + ) + ), + LocalDate.now().minusYears(67).minusMonths(1) + ) shouldBe PersonligSimuleringResultV8( + alderspensjon = listOf( + PersonligSimuleringAlderspensjonResultV8( + alder = 67, + beloep = 1, + inntektspensjonBeloep = null, + garantipensjonBeloep = null, + delingstall = null, + pensjonBeholdningFoerUttakBeloep = null + ), + PersonligSimuleringAlderspensjonResultV8( + alder = 68, + beloep = 123456, + inntektspensjonBeloep = null, + garantipensjonBeloep = null, + delingstall = null, + pensjonBeholdningFoerUttakBeloep = null + ), + PersonligSimuleringAlderspensjonResultV8( + alder = 69, + beloep = 123456, + inntektspensjonBeloep = null, + garantipensjonBeloep = null, + delingstall = null, + pensjonBeholdningFoerUttakBeloep = null + ) + ), + alderspensjonMaanedligVedEndring = PersonligSimuleringMaanedligPensjonResultV8( + gradertUttakMaanedligBeloep = 6, + heltUttakMaanedligBeloep = 7 + ), + afpPrivat = listOf(PersonligSimuleringAarligPensjonResultV8(alder = 67, beloep = 12000)), + afpOffentlig = listOf(PersonligSimuleringAarligPensjonResultV8(alder = 67, beloep = 12000)), + vilkaarsproeving = PersonligSimuleringVilkaarsproevingResultV8(vilkaarErOppfylt = true, alternativ = null), + harForLiteTrygdetid = true, + trygdetid = null, + opptjeningGrunnlagListe = null + ) + } +} \ No newline at end of file diff --git a/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringResultMapperV7Test.kt b/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringResultMapperV7Test.kt deleted file mode 100644 index ae298b8d..00000000 --- a/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/api/map/SimuleringResultMapperV7Test.kt +++ /dev/null @@ -1,58 +0,0 @@ -package no.nav.pensjon.kalkulator.simulering.api.map - -import io.kotest.matchers.shouldBe -import no.nav.pensjon.kalkulator.simulering.* -import no.nav.pensjon.kalkulator.simulering.api.dto.* -import org.junit.jupiter.api.Test - -class SimuleringResultMapperV7Test { - - @Test - fun `resultatV7 maps domain to V7 DTO`() { - SimuleringResultMapperV7.resultatV7( - SimuleringResult( - alderspensjon = listOf( - SimulertAlderspensjon( - alder = 67, - beloep = 123456, - inntektspensjonBeloep = 1, - garantipensjonBeloep = 2, - delingstall = 3.4, - pensjonBeholdningFoerUttak = 5 - ) - ), - alderspensjonMaanedsbeloep = AlderspensjonMaanedsbeloep(gradertUttak = 6, heltUttak = 7), - afpPrivat = listOf(SimulertAfpPrivat(alder = 67, beloep = 12000)), - afpOffentlig = listOf(SimulertAfpOffentlig(alder = 67, beloep = 12000)), - vilkaarsproeving = Vilkaarsproeving(innvilget = true, alternativ = null), - harForLiteTrygdetid = true, - trygdetid = 10, - opptjeningGrunnlagListe = listOf( - SimulertOpptjeningGrunnlag(aar = 2001, pensjonsgivendeInntektBeloep = 501000), - SimulertOpptjeningGrunnlag(aar = 2002, pensjonsgivendeInntektBeloep = 502000) - ) - ) - ) shouldBe SimuleringResultatV7( - alderspensjon = listOf( - AlderspensjonsberegningV7( - alder = 67, - beloep = 123456, - inntektspensjonBeloep = null, - garantipensjonBeloep = null, - delingstall = null, - pensjonBeholdningFoerUttakBeloep = null - ) - ), - alderspensjonMaanedligVedEndring = AlderspensjonsMaanedligV7( - gradertUttakMaanedligBeloep = 6, - heltUttakMaanedligBeloep = 7 - ), - afpPrivat = listOf(PensjonsberegningV7(alder = 67, beloep = 12000)), - afpOffentlig = listOf(PensjonsberegningAfpOffentligV7(alder = 67, beloep = 12000)), - vilkaarsproeving = VilkaarsproevingV7(vilkaarErOppfylt = true, alternativ = null), - harForLiteTrygdetid = true, - trygdetid = null, - opptjeningGrunnlagListe = null - ) - } -} diff --git a/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/client/pen/map/PenSimuleringResultMapperTest.kt b/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/client/pen/map/PenSimuleringResultMapperTest.kt index d91828f0..0ed94cbf 100644 --- a/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/client/pen/map/PenSimuleringResultMapperTest.kt +++ b/src/test/kotlin/no/nav/pensjon/kalkulator/simulering/client/pen/map/PenSimuleringResultMapperTest.kt @@ -58,7 +58,7 @@ class PenSimuleringResultMapperTest { } @Test - fun `0 alder byttes med alder ett aar lavere enn laveste alder i listen og sorterer listen`() { + fun `0 alder beholdes i listen`() { PenSimuleringResultMapper.fromDto( PenSimuleringResultDto( alderspensjon = listOf( @@ -118,15 +118,7 @@ class PenSimuleringResultMapperTest { ) shouldBe SimuleringResult( alderspensjon = listOf( SimulertAlderspensjon( - alder = 49, - beloep = 1, - inntektspensjonBeloep = 2, - garantipensjonBeloep = 3, - delingstall = 0.4, - pensjonBeholdningFoerUttak = 5 - ), - SimulertAlderspensjon( - alder = 50, + alder = 100, beloep = 1001, inntektspensjonBeloep = 2001, garantipensjonBeloep = 3001, @@ -134,7 +126,7 @@ class PenSimuleringResultMapperTest { pensjonBeholdningFoerUttak = 4001 ), SimulertAlderspensjon( - alder = 75, + alder = 50, beloep = 1001, inntektspensjonBeloep = 2001, garantipensjonBeloep = 3001, @@ -142,13 +134,21 @@ class PenSimuleringResultMapperTest { pensjonBeholdningFoerUttak = 4001 ), SimulertAlderspensjon( - alder = 100, + alder = 75, beloep = 1001, inntektspensjonBeloep = 2001, garantipensjonBeloep = 3001, delingstall = 0.51, pensjonBeholdningFoerUttak = 4001 - ) + ), + SimulertAlderspensjon( + alder = 0, + beloep = 1, + inntektspensjonBeloep = 2, + garantipensjonBeloep = 3, + delingstall = 0.4, + pensjonBeholdningFoerUttak = 5 + ), ), alderspensjonMaanedsbeloep = AlderspensjonMaanedsbeloep( gradertUttak = null,