From f8768ede083df4fe641a3759eed82cef0304f405 Mon Sep 17 00:00:00 2001 From: Espen Velsvik Date: Thu, 21 Nov 2024 06:57:25 +0100 Subject: [PATCH] Fikser tester (#574) --- .../TilkommetInntektsforholdTjenesteTest.java | 63 +++++++++++++++---- 1 file changed, 51 insertions(+), 12 deletions(-) diff --git a/kalkulator/src/test/java/no/nav/folketrygdloven/kalkulator/steg/tilkommetInntekt/TilkommetInntektsforholdTjenesteTest.java b/kalkulator/src/test/java/no/nav/folketrygdloven/kalkulator/steg/tilkommetInntekt/TilkommetInntektsforholdTjenesteTest.java index 5a7bd66c..b858fec0 100644 --- a/kalkulator/src/test/java/no/nav/folketrygdloven/kalkulator/steg/tilkommetInntekt/TilkommetInntektsforholdTjenesteTest.java +++ b/kalkulator/src/test/java/no/nav/folketrygdloven/kalkulator/steg/tilkommetInntekt/TilkommetInntektsforholdTjenesteTest.java @@ -46,18 +46,18 @@ class TilkommetInntektsforholdTjenesteTest { public static final LocalDate STP = LocalDate.of(2024, 11, 20); @Test - void skal_slå_sammen_perioder_med_tilkommet_over_helg_og_returnere_første_dag_med_tilkommet_som_virkedag() { + void skal_slå_sammen_perioder_med_tilkommet_over_helg() { var arbeidsgiver = Arbeidsgiver.virksomhet(ARBEIDSGIVER_ORGNR); var arbeidstakerandelFraStart = lagArbeidstakerandel(arbeidsgiver, 1L, AndelKilde.PROSESS_START, InternArbeidsforholdRefDto.nullRef()); var utbetalingsgradFraStart = new UtbetalingsgradPrAktivitetDto(lagAktivitet(arbeidsgiver, InternArbeidsforholdRefDto.nullRef()), - lagUtbetalingsgrader(100, STP, STP.plusDays(20))); + lagAktivitetsgrader(STP, STP.plusDays(20), 0)); var arbeidsgiver2 = Arbeidsgiver.virksomhet(ARBEIDSGIVER_ORGNR2); var tilkommetDato = STP.plusDays(10); var utbetalingsgradNyAndel = new UtbetalingsgradPrAktivitetDto( lagAktivitet(arbeidsgiver2, InternArbeidsforholdRefDto.nullRef()), - lagUtbetalingsgrader(50, tilkommetDato, STP.plusDays(20))); + lagAktivitetsgrader(tilkommetDato, STP.plusDays(20), 50)); var yrkesaktivitet = lagYrkesaktivitet(arbeidsgiver, STP.minusMonths(10), STP.plusDays(9), InternArbeidsforholdRefDto.nullRef()); var nyYrkesaktivitet = lagYrkesaktivitet(arbeidsgiver2, tilkommetDato, STP.plusDays(20), InternArbeidsforholdRefDto.nullRef()); @@ -83,13 +83,52 @@ class TilkommetInntektsforholdTjenesteTest { assertThat(førsteSegment.getTom()).isEqualTo(tilkommetDato.minusDays(1)); var andreSegment = iterator.next(); - var førsteVirkedagMedTilkommet = tilkommetDato.plusDays(2); assertThat(andreSegment.getValue().size()).isEqualTo(1); - assertThat(andreSegment.getFom()).isEqualTo(førsteVirkedagMedTilkommet); + assertThat(andreSegment.getFom()).isEqualTo(tilkommetDato); assertThat(andreSegment.getTom()).isEqualTo(STP.plusDays(20)); } + + @Test + void skal_slå_sammen_perioder_over_helg_dersom_ny_aktivitet_har_fullt_fravær() { + + var arbeidsgiver = Arbeidsgiver.virksomhet(ARBEIDSGIVER_ORGNR); + var arbeidstakerandelFraStart = lagArbeidstakerandel(arbeidsgiver, 1L, AndelKilde.PROSESS_START, InternArbeidsforholdRefDto.nullRef()); + var utbetalingsgradFraStart = new UtbetalingsgradPrAktivitetDto(lagAktivitet(arbeidsgiver, InternArbeidsforholdRefDto.nullRef()), + lagAktivitetsgrader(STP, STP.plusDays(20), 0)); + + var arbeidsgiver2 = Arbeidsgiver.virksomhet(ARBEIDSGIVER_ORGNR2); + var tilkommetDato = STP.plusDays(10); + var utbetalingsgradNyAndel = new UtbetalingsgradPrAktivitetDto( + lagAktivitet(arbeidsgiver2, InternArbeidsforholdRefDto.nullRef()), + lagAktivitetsgrader(tilkommetDato, STP.plusDays(20), 0)); + + var yrkesaktivitet = lagYrkesaktivitet(arbeidsgiver, STP.minusMonths(10), STP.plusDays(9), InternArbeidsforholdRefDto.nullRef()); + var nyYrkesaktivitet = lagYrkesaktivitet(arbeidsgiver2, tilkommetDato, STP.plusDays(20), InternArbeidsforholdRefDto.nullRef()); + + + var utbetalingsgradGrunnlag = new PleiepengerSyktBarnGrunnlag(List.of( + utbetalingsgradFraStart, + utbetalingsgradNyAndel)); + + var iay = lagIAY(List.of(yrkesaktivitet, nyYrkesaktivitet)); + var tidslinje = TilkommetInntektsforholdTjeneste.finnTilkommetInntektsforholdTidslinje( + STP, + List.of(arbeidstakerandelFraStart), + utbetalingsgradGrunnlag, iay); + + var segmenter = tidslinje.toSegments(); + + assertThat(segmenter.size()).isEqualTo(1); + var iterator = segmenter.iterator(); + var førsteSegment = iterator.next(); + assertThat(førsteSegment.getValue().isEmpty()).isTrue(); + assertThat(førsteSegment.getFom()).isEqualTo(STP); + assertThat(førsteSegment.getTom()).isEqualTo(STP.plusDays(20)); + } + + private static InntektArbeidYtelseGrunnlagDto lagIAY(List yrkesaktiviteter) { var oppdatere = InntektArbeidYtelseAggregatBuilder.oppdatere(Optional.empty(), VersjonTypeDto.REGISTER); var aktørArbeid = InntektArbeidYtelseAggregatBuilder.AktørArbeidBuilder.oppdatere(Optional.empty()); @@ -119,20 +158,20 @@ private YrkesaktivitetDto lagYrkesaktivitet(Arbeidsgiver arbeidsgiver2, LocalDat .build(); } - private List lagUtbetalingsgrader(int i, LocalDate fom, LocalDate tom) { + private List lagAktivitetsgrader(LocalDate fom, LocalDate tom, int aktivitetsgrad) { var tidslinje = new LocalDateTimeline<>(fom, tom, true); var utenhelg = fjernHelg(tidslinje); var helger = new LocalDateTimeline<>(fom, tom, true).disjoint(utenhelg); - var utbetalingsgraderForHelger = lagUtbetalingsgraderFraTidslinje(0, utenhelg); - var utbetalingsgraderForUkedager = lagUtbetalingsgraderFraTidslinje(i, utenhelg); + var utbetalingsgraderForHelger = lagAktivitetsgraderFraTidslinje(helger, 100); + var utbetalingsgraderForUkedager = lagAktivitetsgraderFraTidslinje(utenhelg, aktivitetsgrad); utbetalingsgraderForUkedager.addAll(utbetalingsgraderForHelger); return utbetalingsgraderForUkedager; } - private List lagUtbetalingsgraderFraTidslinje(int i, LocalDateTimeline utenhelg) { + private List lagAktivitetsgraderFraTidslinje(LocalDateTimeline utenhelg, int aktivitetsgrad) { return utenhelg.getLocalDateIntervals().stream() - .map(p -> lagPeriodeMedUtbetalingsgrad(i, p.getFomDato(), p.getTomDato())) + .map(p -> lagPeriodeMedAktivitetsgrad(p.getFomDato(), p.getTomDato(), aktivitetsgrad)) .collect(Collectors.toCollection(ArrayList::new)); } @@ -157,8 +196,8 @@ public static LocalDateTimeline fjernHelg(LocalDateTimeline input) { return input.disjoint(helgetidslinje); } - private PeriodeMedUtbetalingsgradDto lagPeriodeMedUtbetalingsgrad(int i, LocalDate fom, LocalDate tom) { - return new PeriodeMedUtbetalingsgradDto(Intervall.fraOgMedTilOgMed(fom, tom), null, Aktivitetsgrad.fra(100 - i)); + private PeriodeMedUtbetalingsgradDto lagPeriodeMedAktivitetsgrad(LocalDate fom, LocalDate tom, int aktivitetsgrad) { + return new PeriodeMedUtbetalingsgradDto(Intervall.fraOgMedTilOgMed(fom, tom), null, Aktivitetsgrad.fra(aktivitetsgrad)); } private AktivitetDto lagAktivitet(Arbeidsgiver arbeidsgiver2, InternArbeidsforholdRefDto ref) {