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

Fikser tester #574

Merged
merged 1 commit into from
Nov 21, 2024
Merged
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 @@ -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());
Expand All @@ -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<YrkesaktivitetDto> yrkesaktiviteter) {
var oppdatere = InntektArbeidYtelseAggregatBuilder.oppdatere(Optional.empty(), VersjonTypeDto.REGISTER);
var aktørArbeid = InntektArbeidYtelseAggregatBuilder.AktørArbeidBuilder.oppdatere(Optional.empty());
Expand Down Expand Up @@ -119,20 +158,20 @@ private YrkesaktivitetDto lagYrkesaktivitet(Arbeidsgiver arbeidsgiver2, LocalDat
.build();
}

private List<PeriodeMedUtbetalingsgradDto> lagUtbetalingsgrader(int i, LocalDate fom, LocalDate tom) {
private List<PeriodeMedUtbetalingsgradDto> 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<PeriodeMedUtbetalingsgradDto> lagUtbetalingsgraderFraTidslinje(int i, LocalDateTimeline<Boolean> utenhelg) {
private List<PeriodeMedUtbetalingsgradDto> lagAktivitetsgraderFraTidslinje(LocalDateTimeline<Boolean> 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));
}

Expand All @@ -157,8 +196,8 @@ public static <T> LocalDateTimeline<T> fjernHelg(LocalDateTimeline<T> 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) {
Expand Down