Skip to content

Commit 8ea17f4

Browse files
fikset slik at perioder som inneholder null bygger fortsatt og lager … (#157)
* fikset slik at perioder som inneholder null bygger fortsatt og lager feil * bruker ikke filter, men legger inn validering ved mapping. * tatt bort fom/tom periode verdi test
1 parent 60642aa commit 8ea17f4

File tree

3 files changed

+65
-58
lines changed

3 files changed

+65
-58
lines changed

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

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

3+
import no.nav.fpsak.tidsserie.LocalDateInterval;
34
import no.nav.fpsak.tidsserie.LocalDateSegment;
45
import no.nav.fpsak.tidsserie.LocalDateTimeline;
56
import no.nav.fpsak.tidsserie.StandardCombinators;
@@ -12,7 +13,6 @@
1213
import java.util.Collections;
1314
import java.util.List;
1415
import java.util.Map;
15-
import java.util.Objects;
1616
import java.util.stream.Collectors;
1717

1818
public class TidsserieValidator {
@@ -54,28 +54,39 @@ public static List<Periode> toPeriodeList(LocalDateTimeline<?> t) {
5454
return t.stream().map(l -> new Periode(l.getFom(), l.getTom())).collect(Collectors.toList());
5555
}
5656

57-
public static LocalDateTimeline<Boolean> toLocalDateTimeline(List<Periode> perioder) throws IllegalArgumentException{
57+
public static LocalDateTimeline<Boolean> toLocalDateTimeline(List<Periode> perioder, String felt, List<Feil> feil) throws IllegalArgumentException{
5858
return new LocalDateTimeline<Boolean>(perioder
5959
.stream()
60-
.map(p -> new LocalDateSegment<Boolean>(
61-
Objects.requireNonNull(p.getFraOgMed()),
62-
Objects.requireNonNull(p.getTilOgMed()),
63-
true))
60+
.map(p -> mapLocalDateSegment(p, felt, feil))
6461
.collect(Collectors.toList())).compress();
6562
}
6663

67-
public static LocalDateTimeline<Boolean> toLocalDateTimeline(Map<Periode, ?> periodeMap) {
68-
return toLocalDateTimeline(new ArrayList<>(periodeMap.keySet()));
64+
private static LocalDateSegment<Boolean> mapLocalDateSegment(Periode periode, String felt, List<Feil> feil) {
65+
validerPeriode(periode, felt, feil);
66+
return new LocalDateSegment<Boolean>(
67+
periode.getFraOgMed(),
68+
periode.getTilOgMed(),
69+
true);
70+
}
71+
72+
private static void validerPeriode(Periode periode, String felt, List<Feil> feil) {
73+
if (periode.getTilOgMed() == null || periode.getFraOgMed() == null) {
74+
feil.add(new Feil (felt, "NullPointerException", "Null"));
75+
}
76+
}
77+
78+
public static LocalDateTimeline<Boolean> toLocalDateTimeline(Map<Periode, ?> periodeMap, String felt, List<Feil> feil) {
79+
return toLocalDateTimeline(new ArrayList<>(periodeMap.keySet()), felt, feil);
6980
}
7081
}
7182

7283
public static class Perioder {
7384
private final LocalDateTimeline<Boolean> søknadsperiode;
7485
private final LocalDateTimeline<Boolean> gyldigInterval;
7586

76-
public Perioder(List<Periode> søknadsperiode, List<Periode> endringsperiode) {
77-
this.søknadsperiode = TidsserieUtils.toLocalDateTimeline(søknadsperiode);
78-
this.gyldigInterval = this.søknadsperiode.union(TidsserieUtils.toLocalDateTimeline(endringsperiode), StandardCombinators::coalesceLeftHandSide);
87+
public Perioder(List<Periode> søknadsperiode, List<Periode> endringsperiode, List<Feil> feil) {
88+
this.søknadsperiode = TidsserieUtils.toLocalDateTimeline(søknadsperiode, "Søknadsperiode.periode", feil);
89+
this.gyldigInterval = this.søknadsperiode.union(TidsserieUtils.toLocalDateTimeline(endringsperiode, "Endringsperiode.periode", feil), StandardCombinators::coalesceLeftHandSide);
7990
}
8091

8192
public LocalDateTimeline<Boolean> getSøknadsperiode() {

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ private Feil toFeil(ConstraintViolation<PleiepengerSyktBarn> constraintViolation
7272

7373
private TidsserieValidator.Perioder validerSøknadsOgEndringsPerioder(PleiepengerSyktBarn psb, List<Feil> feil) {
7474
manglerIkkeSøknadEllerEndringsPerioder(psb, feil);
75-
return new TidsserieValidator.Perioder(psb.getSøknadsperiodeList(), psb.getEndringsperiode());
75+
return new TidsserieValidator.Perioder(psb.getSøknadsperiodeList(), psb.getEndringsperiode(), feil);
7676
}
7777

7878
private void manglerIkkeSøknadEllerEndringsPerioder(PleiepengerSyktBarn psb, List<Feil> feil) {
@@ -83,27 +83,27 @@ private Feil toFeil(ConstraintViolation<PleiepengerSyktBarn> constraintViolation
8383

8484
private void validerBeredskap(Beredskap beredskap, TidsserieValidator.Perioder perioder, List<Feil> feil) {
8585
finnPerioderUtenfor(
86-
toLocalDateTimeline(beredskap.getPerioder()),
86+
toLocalDateTimeline(beredskap.getPerioder(), "beredskap.periode", feil),
8787
perioder)
8888
.valider("beredskap", feil);
8989
}
9090

9191
private void validerUttak(Uttak uttak, TidsserieValidator.Perioder perioder, List<Feil> feil) {
9292
finnIkkeKomplettePerioderOgPerioderUtenfor(
93-
toLocalDateTimeline(uttak.getPerioder()),
93+
toLocalDateTimeline(uttak.getPerioder(), "uttak.periode", feil),
9494
perioder)
9595
.valider("uttak", feil);
9696
}
9797

9898
private void validerLovbestemtFerie(LovbestemtFerie lovbestemtFerie, TidsserieValidator.Perioder søknadsperiode, List<Feil> feil) {
9999
finnPerioderUtenfor(
100-
toLocalDateTimeline(lovbestemtFerie.getPerioder()),
100+
toLocalDateTimeline(lovbestemtFerie.getPerioder(), "lovbestemtFerie.periode", feil),
101101
søknadsperiode).valider("lovbestemtFerie", feil);
102102
}
103103

104104
private void validerNattevåk(Nattevåk nattevåk, TidsserieValidator.Perioder søknadsperiode, List<Feil> feil) {
105105
finnPerioderUtenfor(
106-
toLocalDateTimeline(nattevåk.getPerioder()),
106+
toLocalDateTimeline(nattevåk.getPerioder(), "nattevåk.periode", feil),
107107
søknadsperiode)
108108
.valider("nattevåk", feil);
109109
}
@@ -125,28 +125,28 @@ private void validerArbeidstaker(List<Arbeidstaker> arbeidstakerList, TidsserieV
125125
for (Arbeidstaker arbeidstaker : arbeidstakerList ) {
126126
arbeidstaker.valider("arbeidstid.arbeidstaker", feil);
127127
finnIkkeKomplettePerioderOgPerioderUtenfor(
128-
toLocalDateTimeline(arbeidstaker.getArbeidstidInfo().getPerioder()), søknadsperiode)
128+
toLocalDateTimeline(arbeidstaker.getArbeidstidInfo().getPerioder(), "arbeidstid.arbeidstaker.periode", feil), søknadsperiode)
129129
.valider("arbeidstid.arbeidstaker", feil);
130130
}
131131
}
132132

133133
private void validerFrilanser(ArbeidstidInfo frilanser, TidsserieValidator.Perioder søknadsperiode, List<Feil> feil) {
134134
finnIkkeKomplettePerioderOgPerioderUtenfor(
135-
toLocalDateTimeline(frilanser.getPerioder()),
135+
toLocalDateTimeline(frilanser.getPerioder(), "arbeistid.frilans.periode", feil),
136136
søknadsperiode)
137137
.valider("arbeidstid.frilanser", feil);
138138
}
139139

140140
private void validerSelvstendigNæringsdrivende(ArbeidstidInfo selvstendigNæringsdrivende, TidsserieValidator.Perioder søknadsperiode, List<Feil> feil) {
141141
finnIkkeKomplettePerioderOgPerioderUtenfor(
142-
toLocalDateTimeline(selvstendigNæringsdrivende.getPerioder()),
142+
toLocalDateTimeline(selvstendigNæringsdrivende.getPerioder(), "arbeidstid.selvstendigNæringsdivende.periode", feil),
143143
søknadsperiode)
144144
.valider("arbeidstid.selvstendigNæringsdrivende", feil);
145145
}
146146

147147
private void validerTilsynsordning(Tilsynsordning tilsynsordning, TidsserieValidator.Perioder søknadsperiode, List<Feil> feil) {
148148
finnPerioderUtenfor(
149-
toLocalDateTimeline(tilsynsordning.getPerioder()),
149+
toLocalDateTimeline(tilsynsordning.getPerioder(), "tilsynsordning.periode", feil),
150150
søknadsperiode)
151151
.valider("tilsynsordning", feil);
152152
}

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

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

3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.time.Duration;
6+
import java.time.LocalDate;
7+
import java.util.List;
8+
import java.util.Map;
9+
import java.util.stream.Collectors;
10+
11+
import org.junit.jupiter.api.Test;
12+
13+
import no.nav.fpsak.tidsserie.LocalDateInterval;
314
import no.nav.k9.søknad.JsonUtils;
415
import no.nav.k9.søknad.Søknad;
516
import no.nav.k9.søknad.ValideringsFeil;
617
import no.nav.k9.søknad.felles.Feil;
7-
import no.nav.k9.søknad.felles.opptjening.*;
8-
import no.nav.k9.søknad.ytelse.psb.v1.Beredskap;
9-
import no.nav.k9.søknad.ytelse.psb.v1.Nattevåk;
10-
import no.nav.k9.søknad.ytelse.psb.v1.Omsorg;
11-
import no.nav.k9.søknad.ytelse.psb.v1.Uttak;
12-
import no.nav.k9.søknad.ytelse.psb.v1.UttakPeriodeInfo;
13-
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstaker;
18+
import no.nav.k9.søknad.felles.opptjening.Frilanser;
19+
import no.nav.k9.søknad.felles.opptjening.OpptjeningAktivitet;
20+
import no.nav.k9.søknad.felles.opptjening.SelvstendigNæringsdrivende;
1421
import no.nav.k9.søknad.felles.type.NorskIdentitetsnummer;
1522
import no.nav.k9.søknad.felles.type.Organisasjonsnummer;
1623
import no.nav.k9.søknad.felles.type.Periode;
1724
import no.nav.k9.søknad.felles.type.VirksomhetType;
25+
import no.nav.k9.søknad.ytelse.psb.v1.Beredskap;
26+
import no.nav.k9.søknad.ytelse.psb.v1.Nattevåk;
27+
import no.nav.k9.søknad.ytelse.psb.v1.Omsorg;
1828
import no.nav.k9.søknad.ytelse.psb.v1.PleiepengerSyktBarn;
1929
import no.nav.k9.søknad.ytelse.psb.v1.PleiepengerSyktBarnValidator;
30+
import no.nav.k9.søknad.ytelse.psb.v1.Uttak;
31+
import no.nav.k9.søknad.ytelse.psb.v1.UttakPeriodeInfo;
32+
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstaker;
2033
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstid;
2134
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.ArbeidstidInfo;
2235
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.ArbeidstidPeriodeInfo;
2336
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.TilsynPeriodeInfo;
2437
import no.nav.k9.søknad.ytelse.psb.v1.tilsyn.Tilsynsordning;
2538

26-
import org.junit.jupiter.api.Disabled;
27-
import org.junit.jupiter.api.Test;
28-
29-
import java.time.Duration;
30-
import java.time.LocalDate;
31-
import java.util.ArrayList;
32-
import java.util.List;
33-
import java.util.Map;
34-
35-
import static org.assertj.core.api.Assertions.assertThat;
36-
3739
public class PleiepengerBarnSøknadValidatorTest {
3840
private static final PleiepengerSyktBarnValidator validator = new PleiepengerSyktBarnValidator();
3941

@@ -122,10 +124,6 @@ public class PleiepengerBarnSøknadValidatorTest {
122124
var endringsperiode = new Periode(LocalDate.now().minusMonths(2), LocalDate.now().minusDays(1));
123125
var periodeUtenfor = new Periode(endringsperiode.getFraOgMed().minusMonths(1), endringsperiode.getFraOgMed().minusDays(1));
124126

125-
var endringssøknad = TestUtils.minimumSøknadOgEndringsSøknad(søknadsperiode, periodeUtenfor)
126-
.medEndringsperiode(endringsperiode);
127-
128-
129127
var ytelse = TestUtils.komplettYtelsePsb(søknadsperiode);
130128
ytelse.medUttak(new Uttak().medPerioder(Map.of(
131129
periodeUtenfor, new UttakPeriodeInfo(Duration.ofHours(8)),
@@ -144,6 +142,8 @@ periodeUtenfor, new ArbeidstidPeriodeInfo(Duration.ofHours(8), Duration.ofHours(
144142

145143
final List<Feil> feil = valider(ytelse);
146144
assertThat(feil).isNotEmpty();
145+
feilInneholderFeilkode(feil, "ugyldigPeriode");
146+
feilInneholderFeilkode(feil, "ikkeKomplettPeriode");
147147
}
148148

149149
@Test
@@ -301,29 +301,17 @@ public void perioderIkkekompletIkkeHelg() {
301301
public void søknadsperiodeInneholderÅpnePerioder() {
302302
var søknadsperiode = new Periode(LocalDate.now(), null);
303303
var psb = TestUtils.minimumSøknadPleiepengerSyktBarn(søknadsperiode);
304-
try {
305-
final List<Feil> feil = valider(psb);
306-
assertThat(feil).isEmpty();
307-
} catch (NullPointerException e) {
308-
var feil = new ArrayList<>();
309-
feil.add(new Feil("søknad", "NullPointerException", "Null"));
310-
assertThat(feil).isNotEmpty();
311-
}
304+
var feil = verifyHarFeil(psb);
305+
feilInneholderFeilkode(feil, "NullPointerException");
312306
}
313307

314308
@Test
315309
public void tilsynnInneholderÅpnePerioder() {
316310
var søknadsperiode = new Periode(LocalDate.now(), LocalDate.now().plusMonths(2));
317311
var psb = TestUtils.minimumSøknadPleiepengerSyktBarn(søknadsperiode);
318312
psb.medTilsynsordning(new Tilsynsordning().medPerioder(Map.of(new Periode(LocalDate.now(), null), new TilsynPeriodeInfo().medEtablertTilsynTimerPerDag(Duration.ofHours(7)))));
319-
try {
320-
final List<Feil> feil = valider(psb);
321-
assertThat(feil).isEmpty();
322-
} catch (NullPointerException e) {
323-
var feil = new ArrayList<>();
324-
feil.add(new Feil("søknad", "NullPointerException", "Null"));
325-
assertThat(feil).isNotEmpty();
326-
}
313+
var feil = verifyHarFeil(psb);
314+
feilInneholderFeilkode(feil, "NullPointerException");
327315
}
328316

329317
@Test
@@ -350,6 +338,14 @@ public void perioderIkkekompletIkkeHelg() {
350338
verifyIngenFeil(søknad);
351339
}
352340

341+
private void feilInneholderFeilkode(List<Feil> feil, String feilkode) {
342+
assertThat(feil
343+
.stream()
344+
.filter(f -> f.getFeilkode().equals(feilkode))
345+
.collect(Collectors.toList())
346+
).isNotEmpty();
347+
}
348+
353349
private List<Feil> verifyHarFeil(PleiepengerSyktBarn ytelse) {
354350
final List<Feil> feil = valider(ytelse);
355351
assertThat(feil).isNotEmpty();

0 commit comments

Comments
 (0)