Skip to content

Commit 2d904ff

Browse files
Bosteder kan være utenfor søknadsperiode og overlappe med trekkKravPe… (#192)
* Bosteder kan være utenfor søknadsperiode og overlappe med trekkKravPeriode * lagt tilbake validering på perioder som kan være utenfor søknadsperiode i valider ytelse
1 parent bac57d7 commit 2d904ff

File tree

5 files changed

+69
-13
lines changed

5 files changed

+69
-13
lines changed

soknad/src/main/java/no/nav/k9/søknad/ytelse/psb/v1/PerioderMedEndringUtil.java

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,15 @@ class PerioderMedEndringUtil {
1717

1818
public static List<Periode> getEndringsperiode(PleiepengerSyktBarn psb) {
1919
var allePerioderMedEndringTidsserie =
20-
tilTidsserie(getAllePerioderMedEndring(psb));
20+
tilTidsserie(getAllePerioderSomMåVæreInnenforSøknadsperiode(psb));
2121
var søknadsperiode = toLocalDateTimeline(psb.getSøknadsperiodeList());
2222
var endringsperiodeTidsserie = allePerioderMedEndringTidsserie.disjoint(søknadsperiode);
2323
return TidsserieUtils.toPeriodeList(endringsperiodeTidsserie);
2424
}
2525

26-
public static List<PerioderMedEndring> getAllePerioderMedEndring(PleiepengerSyktBarn psb) {
26+
public static List<PerioderMedEndring> getAllePerioderSomMåVæreInnenforSøknadsperiode(PleiepengerSyktBarn psb) {
2727
var listen = new ArrayList<PerioderMedEndring>();
2828
listen.add(new PerioderMedEndring().medPerioder("utenlandsopphold", psb.getUtenlandsopphold().getPerioder()));
29-
listen.add(new PerioderMedEndring().medPerioder("bosteder", psb.getBosteder().getPerioder()));
3029
listen.add(new PerioderMedEndring().medPerioder("beredskap", psb.getBeredskap().getPerioder()));
3130
listen.add(new PerioderMedEndring().medPerioder("nattevåk", psb.getNattevåk().getPerioder()));
3231
listen.add(new PerioderMedEndring().medPerioder("tilsynsordning", psb.getTilsynsordning().getPerioder()));
@@ -43,8 +42,8 @@ public static List<PerioderMedEndring> getArbeidstidPerioder(Arbeidstid arbeidst
4342
}
4443
if (arbeidstid.getArbeidstakerList() != null && !arbeidstid.getArbeidstakerList().isEmpty()) {
4544
int i = 0;
46-
for (var at: arbeidstid.getArbeidstakerList()) {
47-
listen.add(new PerioderMedEndring().medPerioder("arbeidstid.arbeidstaker[" + i + "]" , at.getArbeidstidInfo().getPerioder()));
45+
for (var at : arbeidstid.getArbeidstakerList()) {
46+
listen.add(new PerioderMedEndring().medPerioder("arbeidstid.arbeidstaker[" + i + "]", at.getArbeidstidInfo().getPerioder()));
4847
i++;
4948
}
5049
}
@@ -61,7 +60,7 @@ public static List<PerioderMedEndring> getArbeidstidPerioder(Arbeidstid arbeidst
6160

6261
public static LocalDateTimeline<Boolean> tilTidsserie(List<PerioderMedEndring> listen) {
6362
var temp = new LocalDateTimeline<Boolean>(Collections.emptyList());
64-
for (PerioderMedEndring yp: listen) {
63+
for (PerioderMedEndring yp : listen) {
6564
temp = temp.union(
6665
toLocalDateTimeline(yp.getPeriodeList()),
6766
StandardCombinators::coalesceLeftHandSide);
@@ -90,5 +89,11 @@ PerioderMedEndring medPerioder(String felt, Map<Periode, ?> periodeMap) {
9089
this.periodeList = new ArrayList<>(periodeMap.keySet());
9190
return this;
9291
}
92+
93+
PerioderMedEndring medPerioder(String felt, List<Periode> periodeList) {
94+
this.felt = felt;
95+
this.periodeList = periodeList;
96+
return this;
97+
}
9398
}
9499
}

soknad/src/main/java/no/nav/k9/søknad/ytelse/psb/v1/PleiepengerSyktBarnYtelseValidator.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,11 @@ public List<Feil> valider(Ytelse ytelse, List<Periode> gyldigeEndringsperioder)
5050
feil.addAll(inneholderSøknadsperiodeEllerGyldigeEndringsperioder(psb, gyldigeEndringsperioder));
5151
feil.addAll(validerKomplettSøknad(psb));
5252

53-
var perioderMedEndring = PerioderMedEndringUtil.getAllePerioderMedEndring(psb);
54-
feil.addAll(validerPerioderErLukketOgIkkeFeilRekkefølge(psb.getSøknadsperiodeList(), "søknadsperiode"));
5553
feil.addAll(validerPerioderErLukketOgIkkeFeilRekkefølge(gyldigeEndringsperioder, "gyldigeEndringsperioder"));
54+
feil.addAll(validerPerioderErLukketOgIkkeFeilRekkefølge(psb.getSøknadsperiodeList(), "søknadsperioder"));
5655
feil.addAll(validerPerioderErLukketOgIkkeFeilRekkefølge(psb.getTrekkKravPerioder(), "trekkKravPerioder"));
57-
feil.addAll(validerPerioderErLukketOgIkkeFeilRekkefølge(perioderMedEndring));
56+
feil.addAll(validerPerioderErLukketOgIkkeFeilRekkefølge(psb.getBosteder().getPerioder(), "bosteder"));
57+
feil.addAll(validerPerioderErLukketOgIkkeFeilRekkefølge(PerioderMedEndringUtil.getAllePerioderSomMåVæreInnenforSøknadsperiode(psb)));
5858

5959
var søknadsperiode = toLocalDateTimeline(psb.getSøknadsperiodeList(), "søknadsperiode", feil);
6060
var gyldigeIntervalForEndring = søknadsperiode.union(
@@ -64,7 +64,9 @@ public List<Feil> valider(Ytelse ytelse, List<Periode> gyldigeEndringsperioder)
6464

6565
feil.addAll(finnPerioderInnenforTrekkKrav(trekkKravPerioder, søknadsperiode, "søknadperiode"));
6666

67-
feil.addAll(innenforGyldigIntervalForEndringOgIkkeInnenforTrekkAvKrav(gyldigeIntervalForEndring, trekkKravPerioder, perioderMedEndring));
67+
feil.addAll(innenforGyldigIntervalForEndringOgIkkeInnenforTrekkAvKrav(gyldigeIntervalForEndring,
68+
trekkKravPerioder,
69+
PerioderMedEndringUtil.getAllePerioderSomMåVæreInnenforSøknadsperiode(psb)));
6870
feil.addAll(periodeneErKomplett(søknadsperiode, psb.getUttak().getPerioder(), "uttak"));
6971

7072
return feil;
@@ -168,6 +170,10 @@ private Feil toFeil(ConstraintViolation<PleiepengerSyktBarn> constraintViolation
168170
return feil;
169171
}
170172

173+
private static List<Feil> validerPerioderErLukketOgIkkeFeilRekkefølge(Map<Periode, ?> perioder, String felt) {
174+
return validerPerioderErLukketOgIkkeFeilRekkefølge(new ArrayList<>(perioder.keySet()), felt);
175+
}
176+
171177
private static List<Feil> validerPerioderErLukketOgIkkeFeilRekkefølge(List<Periode> perioder, String felt) {
172178
var feil = new ArrayList<Feil>();
173179
for (int i = 0; i < perioder.size(); i++ ) {

soknad/src/test/java/no/nav/k9/søknad/ytelse/psb/SøknadTest.java

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import static no.nav.k9.søknad.ytelse.psb.ValiderUtil.verifyIngenFeil;
66

77
import java.time.LocalDate;
8+
import java.util.List;
89

910
import org.junit.jupiter.api.Test;
1011

@@ -13,6 +14,7 @@
1314
import no.nav.k9.søknad.felles.personopplysninger.Søker;
1415
import no.nav.k9.søknad.felles.type.NorskIdentitetsnummer;
1516
import no.nav.k9.søknad.felles.type.Periode;
17+
import no.nav.k9.søknad.ytelse.psb.v1.PleiepengerSyktBarn;
1618

1719
class SøknadTest {
1820
private static final Periode TEST_PERIODE = new Periode(LocalDate.now(), LocalDate.now().plusMonths(2));
@@ -25,7 +27,6 @@ class SøknadTest {
2527
verifyIngenFeil(KOMPLETT_SØKNAD);
2628
}
2729

28-
2930
@Test
3031
public void minimumSøknadHarIngenValideringsFeil() {
3132
verifyIngenFeil(MINIMUM_SØKNAD);
@@ -50,6 +51,41 @@ class SøknadTest {
5051
feilInneholder(feil, new Feil("søker", PÅKREVD, "must not be null"));
5152
}
5253

54+
@Test
55+
public void bostederKanVæreUtenforSøknadsperiode() {
56+
var søknadsperiode = new Periode(LocalDate.now(), LocalDate.now().plusMonths(2));
57+
var bostedperiode = new Periode(LocalDate.now().minusMonths(2), søknadsperiode.getTilOgMed());
58+
59+
var søknad = SøknadEksempel.komplettSøknad(søknadsperiode);
60+
((PleiepengerSyktBarn)søknad.getYtelse()).medBosteder(YtelseEksempel.lagBosteder(List.of(bostedperiode)));
61+
62+
verifyIngenFeil(søknad);
63+
}
64+
65+
@Test
66+
public void bostederKanIkkeHaFeilRekkefølgeIPerioden() {
67+
var søknadsperiode = new Periode(LocalDate.now(), LocalDate.now().plusMonths(2));
68+
var bostedperiode = new Periode(søknadsperiode.getTilOgMed(), LocalDate.now().minusMonths(2));
69+
70+
var søknad = SøknadEksempel.komplettSøknad(søknadsperiode);
71+
((PleiepengerSyktBarn)søknad.getYtelse()).medBosteder(YtelseEksempel.lagBosteder(List.of(bostedperiode)));
72+
73+
var feil = verifyHarFeil(søknad);
74+
feilInneholder(feil, "bosteder[0]", "ugyldigPeriode", "Fra og med (FOM) må være før eller lik til og med (TOM).");
75+
}
76+
77+
@Test
78+
public void utenlandsoppholdKanIkkeVæreUtenforSøknadsperiode() {
79+
var søknadsperiode = new Periode(LocalDate.now(), LocalDate.now().plusMonths(2));
80+
var bostedperiode = new Periode(LocalDate.now().minusMonths(2), søknadsperiode.getTilOgMed());
81+
82+
var søknad = SøknadEksempel.komplettSøknad(søknadsperiode);
83+
((PleiepengerSyktBarn)søknad.getYtelse()).medUtenlandsopphold(YtelseEksempel.lagUtenlandsopphold(List.of(bostedperiode)));
84+
85+
var feil = verifyHarFeil(søknad);
86+
feilInneholder(feil, "utenlandsopphold.perioder", "ugyldigPeriode");
87+
}
88+
5389
//TODO legge på getSøknadsperioder test
5490

5591
}

soknad/src/test/java/no/nav/k9/søknad/ytelse/psb/TestUtils.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,15 @@ public static void feilInneholder(List<Feil> feil, String felt, String feilkode)
4343
.isNotEmpty();
4444
}
4545

46+
public static void feilInneholder(List<Feil> feil, String felt, String feilkode, String feilmelding) {
47+
assertThat(feil
48+
.stream()
49+
.filter(f -> f.getFeilkode().equals(feilkode) && f.getFelt().equals(felt) && f.getFeilmelding().equals(feilmelding))
50+
.collect(Collectors.toList()))
51+
.withFailMessage("Finner ikke fetl og feilkode: " + felt + ", " + feilkode + ", " + feilmelding)
52+
.isNotEmpty();
53+
}
54+
4655
public static void feilInneholder(List<Feil> feilList, Feil feil) {
4756
assertThat(feilList
4857
.stream()

soknad/src/test/java/no/nav/k9/søknad/ytelse/psb/TrekkKravTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ class TrekkKravTest
7575
((PleiepengerSyktBarn)søknad.getYtelse()).addTrekkKravPeriode(trekkKravPerioderSomOverlapper);
7676

7777
var feil = verifyHarFeil(søknad);
78-
feilInneholder(feil,"søknadperiode.perioder", "ugyldigTrekkKrav");
79-
feilInneholder(feil,"uttak.perioder", "ugyldigTrekkKrav");
78+
feilInneholder(feil, "søknadperiode.perioder", "ugyldigTrekkKrav");
79+
feilInneholder(feil, "uttak.perioder", "ugyldigTrekkKrav");
8080
}
8181

8282
}

0 commit comments

Comments
 (0)