Skip to content

Commit e7685ab

Browse files
lagt på validering av fom>tom med felt info (#163)
* lagt på validering av fom>tom med felt info
1 parent 1fa50cf commit e7685ab

File tree

3 files changed

+75
-48
lines changed

3 files changed

+75
-48
lines changed

soknad/src/main/java/no/nav/k9/søknad/TidsserieValidator.java

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
11
package no.nav.k9.søknad;
22

3-
import no.nav.fpsak.tidsserie.LocalDateInterval;
4-
import no.nav.fpsak.tidsserie.LocalDateSegment;
5-
import no.nav.fpsak.tidsserie.LocalDateTimeline;
6-
import no.nav.fpsak.tidsserie.StandardCombinators;
7-
import no.nav.k9.søknad.felles.Feil;
8-
import no.nav.k9.søknad.felles.type.Periode;
9-
103
import java.time.DayOfWeek;
114
import java.time.LocalDate;
125
import java.util.ArrayList;
@@ -15,6 +8,12 @@
158
import java.util.Map;
169
import java.util.stream.Collectors;
1710

11+
import no.nav.fpsak.tidsserie.LocalDateSegment;
12+
import no.nav.fpsak.tidsserie.LocalDateTimeline;
13+
import no.nav.fpsak.tidsserie.StandardCombinators;
14+
import no.nav.k9.søknad.felles.Feil;
15+
import no.nav.k9.søknad.felles.type.Periode;
16+
1817
public class TidsserieValidator {
1918

2019
public static PerioderMedFeil finnIkkeKomplettePerioderOgPerioderUtenfor(LocalDateTimeline<Boolean> test, Perioder perioder) {
@@ -28,7 +27,6 @@ private static List<Periode> getPerioderUtenforGyldigperiode(LocalDateTimeline<B
2827
}
2928

3029
private static List<Periode> getPerioderSomIkkeOverlapperMedHovedperiode(LocalDateTimeline<Boolean> test, Perioder perioder) {
31-
3230
return TidsserieUtils.toPeriodeList(perioder.søknadsperiode.disjoint(test));
3331
}
3432

@@ -55,14 +53,20 @@ public static List<Periode> toPeriodeList(LocalDateTimeline<?> t) {
5553
}
5654

5755
public static LocalDateTimeline<Boolean> toLocalDateTimeline(List<Periode> perioder, String felt, List<Feil> feil) throws IllegalArgumentException{
58-
return new LocalDateTimeline<Boolean>(perioder
59-
.stream()
60-
.map(p -> mapLocalDateSegment(p, felt, feil))
61-
.collect(Collectors.toList())).compress();
56+
perioder.forEach(p -> validerPeriode(p, felt, feil));
57+
try {
58+
return new LocalDateTimeline<Boolean>(perioder
59+
.stream()
60+
.map(TidsserieUtils::mapLocalDateSegment)
61+
.collect(Collectors.toList()))
62+
.compress();
63+
} catch (IllegalArgumentException e) {
64+
feil.add(new Feil(felt, "IllegalArgumentException", e.getMessage()));
65+
}
66+
return new LocalDateTimeline<>(Collections.emptyList());
6267
}
6368

64-
private static LocalDateSegment<Boolean> mapLocalDateSegment(Periode periode, String felt, List<Feil> feil) {
65-
validerPeriode(periode, felt, feil);
69+
private static LocalDateSegment<Boolean> mapLocalDateSegment(Periode periode) {
6670
return new LocalDateSegment<Boolean>(
6771
periode.getFraOgMed(),
6872
periode.getTilOgMed(),

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

Lines changed: 27 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
11
package no.nav.k9.søknad.ytelse.psb.v1;
22

3+
import static no.nav.k9.søknad.TidsserieValidator.TidsserieUtils.toLocalDateTimeline;
4+
import static no.nav.k9.søknad.TidsserieValidator.finnIkkeKomplettePerioderOgPerioderUtenfor;
5+
import static no.nav.k9.søknad.TidsserieValidator.finnPerioderUtenfor;
6+
7+
import java.util.List;
8+
import java.util.stream.Collectors;
9+
10+
import javax.validation.ConstraintViolation;
11+
import javax.validation.Validation;
12+
import javax.validation.ValidatorFactory;
13+
314
import no.nav.k9.søknad.TidsserieValidator;
415
import no.nav.k9.søknad.felles.Feil;
5-
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstaker;
616
import no.nav.k9.søknad.ytelse.Ytelse;
717
import no.nav.k9.søknad.ytelse.YtelseValidator;
18+
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstaker;
819
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstid;
920
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.ArbeidstidInfo;
1021
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.Tilsynsordning;
1122

12-
import javax.validation.ConstraintViolation;
13-
import javax.validation.Validation;
14-
import javax.validation.ValidatorFactory;
15-
import java.util.List;
16-
import java.util.stream.Collectors;
17-
18-
import static no.nav.k9.søknad.TidsserieValidator.TidsserieUtils.toLocalDateTimeline;
19-
import static no.nav.k9.søknad.TidsserieValidator.finnIkkeKomplettePerioderOgPerioderUtenfor;
20-
import static no.nav.k9.søknad.TidsserieValidator.finnPerioderUtenfor;
21-
2223
public class PleiepengerSyktBarnValidator extends YtelseValidator {
2324

2425
private static final ValidatorFactory VALIDATOR_FACTORY = Validation.buildDefaultValidatorFactory();
@@ -32,24 +33,18 @@ public List<Feil> valider(Ytelse ytelse) {
3233
.map(this::toFeil)
3334
.collect(Collectors.toList());
3435

35-
try {
36-
var tidsserier = validerSøknadsOgEndringsPerioder(psb, feil);
36+
var tidsserier = validerSøknadsOgEndringsPerioder(psb, feil);
37+
validerBeredskap(psb.getBeredskap(), tidsserier, feil);
38+
validerUttak(psb.getUttak(), tidsserier, feil);
39+
validerNattevåk(psb.getNattevåk(), tidsserier, feil);
40+
validerTilsynsordning(psb.getTilsynsordning(), tidsserier, feil);
41+
validerLovbestemtFerie(psb.getLovbestemtFerie(), tidsserier, feil);
42+
validerArbeidstid(psb.getArbeidstid(), tidsserier, feil);
3743

38-
validerBeredskap(psb.getBeredskap(), tidsserier, feil);
39-
validerUttak(psb.getUttak(), tidsserier, feil);
40-
validerNattevåk(psb.getNattevåk(), tidsserier, feil);
41-
validerTilsynsordning(psb.getTilsynsordning(), tidsserier, feil);
42-
validerLovbestemtFerie(psb.getLovbestemtFerie(), tidsserier, feil);
43-
validerArbeidstid(psb.getArbeidstid(), tidsserier, feil);
44-
45-
//TODO valider OpptjeningAktivitet ??
46-
//TODO valider Omsorg
47-
//TODO valider Bosterder
48-
//TODO valider Utlandsopphold
49-
50-
} catch (IllegalArgumentException e) {
51-
feil.add(new Feil(e.getClass().getName(), "IllegalArgumentException", e.getMessage()));
52-
}
44+
//TODO valider OpptjeningAktivitet ??
45+
//TODO valider Omsorg
46+
//TODO valider Bosterder
47+
//TODO valider Utlandsopphold
5348

5449
validerKomplettSøknad(psb, feil);
5550
//TODO validere at felter som bare kan være i en søknad er satt hvis det er en søknadsperiode.
@@ -83,15 +78,14 @@ private Feil toFeil(ConstraintViolation<PleiepengerSyktBarn> constraintViolation
8378

8479
private void validerBeredskap(Beredskap beredskap, TidsserieValidator.Perioder perioder, List<Feil> feil) {
8580
finnPerioderUtenfor(
86-
toLocalDateTimeline(beredskap.getPerioder(), "beredskap.periode", feil),
87-
perioder)
81+
toLocalDateTimeline(beredskap.getPerioder(), "beredskap.periode", feil), perioder)
8882
.valider("beredskap", feil);
83+
8984
}
9085

9186
private void validerUttak(Uttak uttak, TidsserieValidator.Perioder perioder, List<Feil> feil) {
9287
finnIkkeKomplettePerioderOgPerioderUtenfor(
93-
toLocalDateTimeline(uttak.getPerioder(), "uttak.periode", feil),
94-
perioder)
88+
toLocalDateTimeline(uttak.getPerioder(), "uttak.periode", feil), perioder)
9589
.valider("uttak", feil);
9690
}
9791

@@ -103,8 +97,7 @@ private void validerLovbestemtFerie(LovbestemtFerie lovbestemtFerie, TidsserieVa
10397

10498
private void validerNattevåk(Nattevåk nattevåk, TidsserieValidator.Perioder søknadsperiode, List<Feil> feil) {
10599
finnPerioderUtenfor(
106-
toLocalDateTimeline(nattevåk.getPerioder(), "nattevåk.periode", feil),
107-
søknadsperiode)
100+
toLocalDateTimeline(nattevåk.getPerioder(), "nattevåk.periode", feil), søknadsperiode)
108101
.valider("nattevåk", feil);
109102
}
110103

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,36 @@ public void perioderIkkekompletIkkeHelg() {
337337
verifyIngenFeil(søknad);
338338
}
339339

340+
@Test
341+
public void feilISøknadsperidodeFomTom() {
342+
var søknadsperiode = new Periode(LocalDate.now(), LocalDate.now());
343+
var psb = TestUtils.komplettYtelsePsb(søknadsperiode);
344+
psb.medSøknadsperiode(new Periode(LocalDate.now().plusDays(2), LocalDate.now()));
345+
346+
var feil = verifyHarFeil(psb);
347+
assertThat(feil.size()).isEqualTo(7);
348+
}
349+
350+
@Test
351+
public void feilIEndringsperiodeFomTom() {
352+
var søknadsperiode = new Periode(LocalDate.now(), LocalDate.now());
353+
var psb = TestUtils.komplettYtelsePsb(søknadsperiode);
354+
psb.medEndringsperiode(new Periode(LocalDate.now().plusDays(2), LocalDate.now()));
355+
356+
var feil = verifyHarFeil(psb);
357+
assertThat(feil.size()).isEqualTo(1);
358+
}
359+
360+
@Test
361+
public void feilIUttaksperidodeFomTom() {
362+
var søknadsperiode = new Periode(LocalDate.now(), LocalDate.now());
363+
var psb = TestUtils.komplettYtelsePsb(søknadsperiode);
364+
psb.medUttak(new Uttak().medPerioder(Map.of(new Periode(LocalDate.now().plusDays(2), LocalDate.now()), new UttakPeriodeInfo(Duration.ofHours(8)))));
365+
366+
var feil = verifyHarFeil(psb);
367+
assertThat(feil.size()).isEqualTo(2);
368+
}
369+
340370
private void feilInneholderFeilkode(List<Feil> feil, String feilkode) {
341371
assertThat(feil
342372
.stream()

0 commit comments

Comments
 (0)