Skip to content

Commit

Permalink
Legger til tester
Browse files Browse the repository at this point in the history
  • Loading branch information
espenjv committed Nov 1, 2024
1 parent ffcf7c5 commit 6b9d308
Show file tree
Hide file tree
Showing 5 changed files with 110 additions and 21 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package no.nav.folketrygdloven.kalkulator.adapter;

import static no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell.UtbetalingsgradTjeneste.finnAktivitetsgradForAndel;
import static no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell.UtbetalingsgradTjeneste.finnUtbetalingsgradForAndel;

import java.util.Optional;

import no.nav.folketrygdloven.kalkulator.input.YtelsespesifiktGrunnlag;
import no.nav.folketrygdloven.kalkulator.modell.beregningsgrunnlag.BeregningsgrunnlagPrStatusOgAndelDto;
import no.nav.folketrygdloven.kalkulator.modell.svp.PeriodeMedUtbetalingsgradDto;
import no.nav.folketrygdloven.kalkulator.modell.typer.Aktivitetsgrad;
import no.nav.folketrygdloven.kalkulator.modell.typer.Utbetalingsgrad;
import no.nav.folketrygdloven.kalkulator.tid.Intervall;

/**
* Avgjør om det er søkt ytelse for aktivitet.
*/
public class ErSøktYtelseFor {

public static boolean erSøktYtelseFor(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, Intervall periode, YtelsespesifiktGrunnlag ytelsespesifiktGrunnlag, boolean skalIgnorereIkkeYrkesaktivStatus) {
return harOverNullProsentUtbetalingsgrad(finnUtbetalingsgradForAndel(bgAndel, periode, ytelsespesifiktGrunnlag, skalIgnorereIkkeYrkesaktivStatus)) ||
harMindreEnnHundreProsentAktivitetsgrad(finnAktivitetsgradForAndel(bgAndel, periode, ytelsespesifiktGrunnlag, skalIgnorereIkkeYrkesaktivStatus));
}

public static boolean erSøktYtelseFor(PeriodeMedUtbetalingsgradDto p) {
return harOverNullProsentUtbetalingsgrad(p.getUtbetalingsgrad()) || harMindreEnnHundreProsentAktivitetsgrad(p.getAktivitetsgrad());
}

private static boolean harOverNullProsentUtbetalingsgrad(Utbetalingsgrad utbetalingsgrad) {
return utbetalingsgrad != null && utbetalingsgrad.compareTo(Utbetalingsgrad.ZERO) > 0;
}

private static boolean harMindreEnnHundreProsentAktivitetsgrad(Optional<Aktivitetsgrad> aktivitetsgrad) {
return aktivitetsgrad.map(ag -> ag.compareTo(Aktivitetsgrad.HUNDRE) < 0).orElse(false);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.AktivitetStatus;
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.Periode;
import no.nav.folketrygdloven.beregningsgrunnlag.regelmodell.grunnlag.inntekt.Arbeidsforhold;
import no.nav.folketrygdloven.kalkulator.adapter.ErSøktYtelseFor;
import no.nav.folketrygdloven.kalkulator.adapter.util.FinnArbeidsperiode;
import no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell.kodeverk.MapInntektskategoriFraVLTilRegel;
import no.nav.folketrygdloven.kalkulator.avklaringsbehov.PerioderTilVurderingTjeneste;
Expand Down Expand Up @@ -99,7 +100,7 @@ private static BigDecimal finnInntektFraIM(BeregningsgrunnlagPrStatusOgAndelDto
}

private static boolean erSøktYtelseFor(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, YtelsespesifiktGrunnlag ytelsespesifiktGrunnlag) {
return UtbetalingsgradTjeneste.erSøktYtelseFor(bgAndel, bgAndel.getBeregningsgrunnlagPeriode().getPeriode(), ytelsespesifiktGrunnlag, false);
return ErSøktYtelseFor.erSøktYtelseFor(bgAndel, bgAndel.getBeregningsgrunnlagPeriode().getPeriode(), ytelsespesifiktGrunnlag, false);
}

private static Optional<Arbeidsforhold> mapArbeidsforhold(BeregningsgrunnlagPrStatusOgAndelDto bgAndel) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,25 +22,6 @@

public class UtbetalingsgradTjeneste {


public static boolean erSøktYtelseFor(BeregningsgrunnlagPrStatusOgAndelDto bgAndel, Intervall periode, YtelsespesifiktGrunnlag ytelsespesifiktGrunnlag, boolean skalIgnorereIkkeYrkesaktivStatus) {
return harOverNullProsentUtbetalingsgrad(finnUtbetalingsgradForAndel(bgAndel, periode, ytelsespesifiktGrunnlag, skalIgnorereIkkeYrkesaktivStatus)) ||
harMindreEnnHundreProsentAktivitetsgrad(finnAktivitetsgradForAndel(bgAndel, periode, ytelsespesifiktGrunnlag, skalIgnorereIkkeYrkesaktivStatus));
}

public static boolean erSøktYtelseFor(PeriodeMedUtbetalingsgradDto p) {
return harOverNullProsentUtbetalingsgrad(p.getUtbetalingsgrad()) || harMindreEnnHundreProsentAktivitetsgrad(p.getAktivitetsgrad());
}

private static boolean harOverNullProsentUtbetalingsgrad(Utbetalingsgrad utbetalingsgrad) {
return utbetalingsgrad != null && utbetalingsgrad.compareTo(Utbetalingsgrad.ZERO) > 0;
}

private static boolean harMindreEnnHundreProsentAktivitetsgrad(Optional<Aktivitetsgrad> aktivitetsgrad) {
return aktivitetsgrad.map(ag -> ag.compareTo(Aktivitetsgrad.HUNDRE) < 0).orElse(false);
}


public static Beløp finnGradertBruttoForAndel(BeregningsgrunnlagPrStatusOgAndelDto andel,
Intervall periode,
YtelsespesifiktGrunnlag ytelsesSpesifiktGrunnlag) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import java.util.stream.Collectors;

import no.nav.folketrygdloven.kalkulator.KonfigurasjonVerdi;
import no.nav.folketrygdloven.kalkulator.adapter.ErSøktYtelseFor;
import no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell.UtbetalingsgradTjeneste;
import no.nav.folketrygdloven.kalkulator.input.UtbetalingsgradGrunnlag;
import no.nav.folketrygdloven.kalkulator.input.YtelsespesifiktGrunnlag;
Expand Down Expand Up @@ -87,7 +88,7 @@ private LocalDateTimeline<Boolean> finnUtbetalingTidslinje(UtbetalingsgradGrunnl
final List<LocalDateTimeline<Boolean>> segmenterMedUtbetaling = UtbetalingsgradTjeneste.finnPerioderForArbeid(ytelsespesifiktGrunnlag, im.getArbeidsgiver(), im.getArbeidsforholdRef(), true)
.stream()
.flatMap(u -> u.getPeriodeMedUtbetalingsgrad().stream())
.filter(UtbetalingsgradTjeneste::erSøktYtelseFor)
.filter(ErSøktYtelseFor::erSøktYtelseFor)
.map(PeriodeMedUtbetalingsgradDto::getPeriode)
.map(p -> new LocalDateTimeline<>(List.of(new LocalDateSegment<>(p.getFomDato(), p.getTomDato(), true))))
.collect(Collectors.toList());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package no.nav.folketrygdloven.kalkulator.adapter.vltilregelmodell;

import static org.assertj.core.api.AssertionsForClassTypes.assertThat;

import java.time.LocalDate;

import org.junit.jupiter.api.Test;

import no.nav.folketrygdloven.kalkulator.adapter.ErSøktYtelseFor;
import no.nav.folketrygdloven.kalkulator.modell.svp.PeriodeMedUtbetalingsgradDto;
import no.nav.folketrygdloven.kalkulator.modell.typer.Aktivitetsgrad;
import no.nav.folketrygdloven.kalkulator.modell.typer.Utbetalingsgrad;
import no.nav.folketrygdloven.kalkulator.tid.Intervall;

class ErSøktYtelseForTest {

@Test
void skal_gi_søkt_ytelse_for_lik_false_når_utbetalingsgrad_er_lik_null_og_aktivitetsgrad_ikke_er_satt() {
var intervall = Intervall.fraOgMedTilOgMed(LocalDate.now(), LocalDate.now());
var erSøktYtelseFor = ErSøktYtelseFor.erSøktYtelseFor(new PeriodeMedUtbetalingsgradDto(intervall, Utbetalingsgrad.ZERO, null));
assertThat(erSøktYtelseFor).isFalse();
}

@Test
void skal_gi_søkt_ytelse_for_lik_false_når_utbetalingsgrad_er_lik_null_og_aktivitetsgrad_lik_hundre() {
var intervall = Intervall.fraOgMedTilOgMed(LocalDate.now(), LocalDate.now());
var erSøktYtelseFor = ErSøktYtelseFor.erSøktYtelseFor(new PeriodeMedUtbetalingsgradDto(intervall, Utbetalingsgrad.ZERO, Aktivitetsgrad.HUNDRE));
assertThat(erSøktYtelseFor).isFalse();
}

@Test
void skal_gi_søkt_ytelse_for_lik_true_når_utbetalingsgrad_er_over_null_og_aktivitetsgrad_ikke_satt() {
var intervall = Intervall.fraOgMedTilOgMed(LocalDate.now(), LocalDate.now());
var erSøktYtelseFor = ErSøktYtelseFor.erSøktYtelseFor(new PeriodeMedUtbetalingsgradDto(intervall, Utbetalingsgrad.valueOf(1), null));
assertThat(erSøktYtelseFor).isTrue();
}

@Test
void skal_gi_søkt_ytelse_for_lik_true_når_utbetalingsgrad_er_over_null_og_aktivitetsgrad_lik_hundre() {
// Feilsituasjon, f.eks avrundingsfeil i aktivitetsgrad eller utbetalingsgrad. prio til utbetalingsgrad
var intervall = Intervall.fraOgMedTilOgMed(LocalDate.now(), LocalDate.now());
var erSøktYtelseFor = ErSøktYtelseFor.erSøktYtelseFor(new PeriodeMedUtbetalingsgradDto(intervall, Utbetalingsgrad.valueOf(1), Aktivitetsgrad.HUNDRE));
assertThat(erSøktYtelseFor).isTrue();
}

@Test
void skal_gi_søkt_ytelse_for_lik_true_når_utbetalingsgrad_er_over_null_og_aktivitetsgrad_er_under_hundre() {
var intervall = Intervall.fraOgMedTilOgMed(LocalDate.now(), LocalDate.now());
var erSøktYtelseFor = ErSøktYtelseFor.erSøktYtelseFor(new PeriodeMedUtbetalingsgradDto(intervall, Utbetalingsgrad.valueOf(1), Aktivitetsgrad.fra(99)));
assertThat(erSøktYtelseFor).isTrue();
}

@Test
void skal_gi_søkt_ytelse_for_lik_true_når_utbetalingsgrad_er_null_og_aktivitetsgrad_er_under_hundre() {
var intervall = Intervall.fraOgMedTilOgMed(LocalDate.now(), LocalDate.now());
var erSøktYtelseFor = ErSøktYtelseFor.erSøktYtelseFor(new PeriodeMedUtbetalingsgradDto(intervall, Utbetalingsgrad.ZERO, Aktivitetsgrad.fra(99)));
assertThat(erSøktYtelseFor).isTrue();
}


@Test
void skal_gi_søkt_ytelse_for_lik_false_når_utbetalingsgrad_er_null_og_aktivitetsgrad_er_hundre() {
var intervall = Intervall.fraOgMedTilOgMed(LocalDate.now(), LocalDate.now());
var erSøktYtelseFor = ErSøktYtelseFor.erSøktYtelseFor(new PeriodeMedUtbetalingsgradDto(intervall, Utbetalingsgrad.ZERO, Aktivitetsgrad.HUNDRE));
assertThat(erSøktYtelseFor).isFalse();
}


}

0 comments on commit 6b9d308

Please sign in to comment.