8
8
import java .nio .file .Path ;
9
9
import java .time .Duration ;
10
10
import java .time .LocalDate ;
11
+ import java .time .ZonedDateTime ;
11
12
import java .util .Arrays ;
12
13
import java .util .List ;
13
14
14
15
import org .junit .jupiter .api .Test ;
15
16
16
17
import no .nav .k9 .søknad .Søknad ;
18
+ import no .nav .k9 .søknad .SøknadValidator ;
19
+ import no .nav .k9 .søknad .felles .Feil ;
17
20
import no .nav .k9 .søknad .felles .Versjon ;
18
21
import no .nav .k9 .søknad .felles .fravær .AktivitetFravær ;
19
22
import no .nav .k9 .søknad .felles .fravær .DelvisFravær ;
20
23
import no .nav .k9 .søknad .felles .fravær .FraværPeriode ;
21
24
import no .nav .k9 .søknad .felles .fravær .FraværÅrsak ;
22
25
import no .nav .k9 .søknad .felles .fravær .SøknadÅrsak ;
23
26
import no .nav .k9 .søknad .felles .opptjening .OpptjeningAktivitet ;
27
+ import no .nav .k9 .søknad .felles .personopplysninger .Søker ;
28
+ import no .nav .k9 .søknad .felles .type .NorskIdentitetsnummer ;
24
29
import no .nav .k9 .søknad .felles .type .Organisasjonsnummer ;
25
30
import no .nav .k9 .søknad .felles .type .Periode ;
31
+ import no .nav .k9 .søknad .felles .type .Språk ;
32
+ import no .nav .k9 .søknad .felles .type .SøknadId ;
26
33
27
34
class OmsorgspengerUtbetalingValidatorTest {
28
-
29
- private OmsorgspengerUtbetalingValidator validatorSøknad = new OmsorgspengerUtbetalingValidator (Versjon .of ("1.1.0" ));
35
+ private SøknadValidator <Søknad > søknadValidator = new OmsorgspengerUtbetalingSøknadValidator ();
30
36
31
37
private Organisasjonsnummer orgnr1 = Organisasjonsnummer .of ("999999999" );
32
38
private Organisasjonsnummer orgnr2 = Organisasjonsnummer .of ("816338352" );
@@ -35,14 +41,14 @@ class OmsorgspengerUtbetalingValidatorTest {
35
41
@ Test
36
42
void skal_returnere_ingen_feil_for_minimum_json_søknad () {
37
43
var søknad = TestUtils .minimumJsonSøknad ();
38
- var feil = new OmsorgspengerUtbetalingSøknadValidator () .valider (søknad );
44
+ var feil = søknadValidator .valider (søknad );
39
45
assertThat (feil ).isEmpty ();
40
46
}
41
47
42
48
@ Test
43
49
void skal_returnere_ingen_feil_for_komplett_json_søknad () {
44
50
var søknad = TestUtils .komplettJsonSøknad ();
45
- var feil = new OmsorgspengerUtbetalingSøknadValidator () .valider (søknad );
51
+ var feil = søknadValidator .valider (søknad );
46
52
assertThat (feil ).isEmpty ();
47
53
}
48
54
@@ -55,7 +61,7 @@ class OmsorgspengerUtbetalingValidatorTest {
55
61
lagFraværskorrigeringIm (orgnr1 , arbforholdId1 , fulltFraværPeriode , null ),
56
62
lagFraværskorrigeringImGammelVariant (orgnr1 , arbforholdId1 , delvisFraværPeriode , Duration .ofHours (4 )));
57
63
58
- var feil = validatorSøknad . valider (ytelse );
64
+ List < Feil > feil = lagSøknadOgValider (ytelse );
59
65
60
66
assertThat (feil ).isEmpty ();
61
67
}
@@ -67,7 +73,7 @@ class OmsorgspengerUtbetalingValidatorTest {
67
73
OmsorgspengerUtbetaling ytelse = byggOmsorgspengerUtbetalingMedFraværskorrigeringIm (
68
74
lagFraværskorrigeringIm (orgnr1 , arbforholdId1 , fraværPeriode , null ));
69
75
70
- var feil = validatorSøknad . valider (ytelse );
76
+ List < Feil > feil = lagSøknadOgValider (ytelse );
71
77
72
78
assertThat (feil ).hasSize (1 );
73
79
feilInneholder (feil , "fraværsperioder" , "perioderOverFlereÅr" );
@@ -80,7 +86,7 @@ void skal_returnere_feil_for_nulling_som_overstiger_enkeltdag() {
80
86
OmsorgspengerUtbetaling ytelse = byggOmsorgspengerUtbetalingMedFraværskorrigeringIm (
81
87
lagFraværskorrigeringImGammelVariant (orgnr1 , arbforholdId1 , fraværPeriode , Duration .ofHours (0 )));
82
88
83
- var feil = validatorSøknad . valider (ytelse );
89
+ List < Feil > feil = lagSøknadOgValider (ytelse );
84
90
85
91
assertThat (feil ).hasSize (1 );
86
92
feilInneholder (feil , "fraværsperioderKorrigeringIm[0]" , "nullingPeriodeOversteget" );
@@ -93,7 +99,7 @@ void skal_returnere_feil_for_nulling_som_overstiger_enkeltdag() {
93
99
OmsorgspengerUtbetaling ytelse = byggOmsorgspengerUtbetalingMedFraværskorrigeringIm (
94
100
lagFraværskorrigeringImGammelVariant (orgnr1 , arbforholdId1 , fraværPeriode , Duration .parse ("PT7H31M" )));
95
101
96
- var feil = validatorSøknad . valider (ytelse );
102
+ List < Feil > feil = lagSøknadOgValider (ytelse );
97
103
98
104
assertThat (feil ).hasSize (1 );
99
105
feilInneholder (feil , "fraværsperioderKorrigeringIm[0]" , "varighetOversteget" );
@@ -108,13 +114,39 @@ void skal_returnere_feil_for_overlappende_perioder_ved_korrigering_IM() {
108
114
lagFraværskorrigeringIm (orgnr1 , arbforholdId1 , fraværPeriode1 , null ),
109
115
lagFraværskorrigeringIm (orgnr1 , arbforholdId1 , fraværPeriode2 , null ));
110
116
111
- var feil = validatorSøknad . valider (ytelse );
117
+ List < Feil > feil = lagSøknadOgValider (ytelse );
112
118
113
119
114
120
assertThat (feil ).hasSize (1 );
115
121
feilInneholder (feil , "fraværsperioderKorrigeringIm.perioder[0, 1]" , "overlappendePerioder" );
116
122
}
117
123
124
+ @ Test
125
+ void skal_gi_fornuftig_feilmelding_når_periode_ikke_er_satt () {
126
+ Periode periode = null ;
127
+ Periode periode1 = new Periode (null , null );
128
+ Periode periode2 = new Periode (null , LocalDate .now ());
129
+ Periode periode3 = new Periode (LocalDate .now (), null );
130
+ Periode periode4 = new Periode (LocalDate .now (), LocalDate .now ().minusDays (1 ));
131
+ OmsorgspengerUtbetaling ytelse = byggOmsorgspengerUtbetalingSøknadBruker (
132
+ lagSøknadsperiode (orgnr1 , periode , null ),
133
+ lagSøknadsperiode (orgnr1 , periode1 , null ),
134
+ lagSøknadsperiode (orgnr1 , periode2 , null ),
135
+ lagSøknadsperiode (orgnr1 , periode3 , null ),
136
+ lagSøknadsperiode (orgnr1 , periode4 , null )
137
+ );
138
+
139
+ List <Feil > feil = lagSøknadOgValider (ytelse );
140
+
141
+ assertThat (feil ).hasSize (6 );
142
+ feilInneholder (feil , "ytelse.fraværsperioder['0'].periode" , "nullFeil" );
143
+ feilInneholder (feil , "ytelse.fraværsperioder['1'].periodeManglerFom" , "påkrevd" );
144
+ feilInneholder (feil , "ytelse.fraværsperioder['1'].periodeManglerTom" , "påkrevd" );
145
+ feilInneholder (feil , "ytelse.fraværsperioder['2'].periodeManglerFom" , "påkrevd" );
146
+ feilInneholder (feil , "ytelse.fraværsperioder['3'].periodeManglerTom" , "påkrevd" );
147
+ feilInneholder (feil , "ytelse.fraværsperioder['4'].periodeTomFørFom" , "påkrevd" );
148
+ }
149
+
118
150
@ Test
119
151
void skal_være_lov_å_ha_fravær_fra_flere_arbeidsgivere_samtidig () {
120
152
var fraværPeriode1 = new Periode (LocalDate .parse ("2021-09-01" ), LocalDate .parse ("2021-09-02" ));
@@ -124,7 +156,7 @@ void skal_returnere_feil_for_overlappende_perioder_ved_korrigering_IM() {
124
156
lagSøknadsperiode (orgnr1 , fraværPeriode1 , null ),
125
157
lagSøknadsperiode (orgnr2 , fraværPeriode2 , null ));
126
158
127
- var feil = validatorSøknad . valider (ytelse );
159
+ List < Feil > feil = lagSøknadOgValider (ytelse );
128
160
129
161
assertThat (feil ).isEmpty ();
130
162
}
@@ -138,7 +170,7 @@ void skal_returnere_feil_for_identiske_perioder() {
138
170
lagFraværskorrigeringIm (orgnr1 , arbforholdId1 , fraværPeriode1 , null ),
139
171
lagFraværskorrigeringIm (orgnr1 , arbforholdId1 , fraværPeriode2 , null ));
140
172
141
- var feil = validatorSøknad . valider (ytelse );
173
+ List < Feil > feil = lagSøknadOgValider (ytelse );
142
174
143
175
144
176
assertThat (feil ).hasSize (1 );
@@ -152,10 +184,10 @@ void skal_returnere_feil_for_identiske_perioder() {
152
184
var fraværPeriode2 = new Periode (LocalDate .parse ("2021-09-01" ), LocalDate .parse ("2021-09-02" ));
153
185
154
186
OmsorgspengerUtbetaling ytelse = byggOmsorgspengerUtbetalingSøknadBruker (
155
- lagSøknadsperiode (orgnr1 , fraværPeriode1 , null ),
156
- lagSøknadsperiode (orgnr1 , fraværPeriode2 , null ));
187
+ lagSøknadsperiode (orgnr1 , fraværPeriode1 , null ),
188
+ lagSøknadsperiode (orgnr1 , fraværPeriode2 , null ));
157
189
158
- var feil = validatorSøknad . valider (ytelse );
190
+ List < Feil > feil = lagSøknadOgValider (ytelse );
159
191
160
192
assertThat (feil ).hasSize (1 );
161
193
feilInneholder (feil , "fraværsperioder[2021-09-01/2021-09-02]" , "likePerioder" );
@@ -169,7 +201,7 @@ void skal_returnere_feil_for_flere_orgnr() {
169
201
lagFraværskorrigeringIm (orgnr1 , arbforholdId1 , fraværPeriode1 , null ),
170
202
lagFraværskorrigeringIm (orgnr2 , arbforholdId1 , fraværPeriode2 , null ));
171
203
172
- var feil = validatorSøknad . valider (ytelse );
204
+ List < Feil > feil = lagSøknadOgValider (ytelse );
173
205
174
206
assertThat (feil ).hasSize (1 );
175
207
feilInneholder (feil , "fraværsperioderKorrigeringIm[1]" , "ikkeUniktOrgNr" );
@@ -183,7 +215,7 @@ void skal_returnere_feil_for_flere_arbeidsforhold_id() {
183
215
lagFraværskorrigeringIm (orgnr1 , arbforholdId1 , fraværPeriode1 , null ),
184
216
lagFraværskorrigeringIm (orgnr1 , null , fraværPeriode2 , null ));
185
217
186
- var feil = validatorSøknad . valider (ytelse );
218
+ List < Feil > feil = lagSøknadOgValider (ytelse );
187
219
188
220
assertThat (feil ).hasSize (1 );
189
221
feilInneholder (feil , "fraværsperioderKorrigeringIm[1]" , "ikkeUnikArbeidsforholdId" );
@@ -195,10 +227,12 @@ void skal_returnere_feil_for_flere_arbeidsforhold_id() {
195
227
OmsorgspengerUtbetaling ytelse = byggOmsorgspengerUtbetalingSøknadBruker (
196
228
lagSøknadsperiode (orgnr1 , periode , new DelvisFravær (null , Duration .ofHours (2 ))));
197
229
198
- var feil = validatorSøknad . valider (ytelse );
230
+ List < Feil > feil = lagSøknadOgValider (ytelse );
199
231
200
- assertThat (feil ).hasSize (1 );
232
+ assertThat (feil ).hasSize (2 );
233
+ //TODO bør holde med en feil - begge feilmeldinger rapporterer samme feil
201
234
feilInneholder (feil , "fraværsperioder[0].delvisFravær.normalarbeidstid" , "manglerNormalarbeidstidForDelvisFravær" );
235
+ feilInneholder (feil , "ytelse.fraværsperioder['0'].delvisFravær.normalarbeidstid" , "nullFeil" );
202
236
}
203
237
204
238
@ Test
@@ -207,10 +241,12 @@ void skal_returnere_feil_for_flere_arbeidsforhold_id() {
207
241
OmsorgspengerUtbetaling ytelse = byggOmsorgspengerUtbetalingSøknadBruker (
208
242
lagSøknadsperiode (orgnr1 , periode , new DelvisFravær (Duration .ofHours (2 ), null )));
209
243
210
- var feil = validatorSøknad . valider (ytelse );
244
+ List < Feil > feil = lagSøknadOgValider (ytelse );
211
245
212
- assertThat (feil ).hasSize (1 );
246
+ assertThat (feil ).hasSize (2 );
247
+ //TODO bør holde med en feil - begge feilmeldinger rapporterer samme feil
213
248
feilInneholder (feil , "fraværsperioder[0].delvisFravær.fravær" , "manglerFraværForDelvisFravær" );
249
+ feilInneholder (feil , "ytelse.fraværsperioder['0'].delvisFravær.fravær" , "nullFeil" );
214
250
}
215
251
216
252
@ Test
@@ -222,7 +258,7 @@ void skal_ikke_tillate_overlappende_periode() {
222
258
lagSøknadsperiode (orgnr1 , periode2 , null )
223
259
);
224
260
225
- var feil = validatorSøknad . valider (ytelse );
261
+ List < Feil > feil = lagSøknadOgValider (ytelse );
226
262
227
263
assertThat (feil ).hasSize (1 );
228
264
feilInneholder (feil , "fraværsperioder[0, 1]" , "overlappendePerioder" );
@@ -231,29 +267,29 @@ void skal_ikke_tillate_overlappende_periode() {
231
267
@ Test
232
268
void skal_ikke_tillate_at_duration_ikke_tilsvarer_som_delvisFravær () {
233
269
var periode = new Periode (LocalDate .parse ("2021-09-01" ), LocalDate .parse ("2021-09-02" ));
234
- FraværPeriode fraværPeriode = new FraværPeriode (
235
- periode ,
236
- Duration .ofHours (2 ),
237
- new DelvisFravær (Duration .ofHours (4 ), Duration .ofHours (2 )), //50% fravær fra 4 times-jobb skal oppgis som 4 timer i duration ( 50% av 7.5 timer, og rundet oppover til nærmeste halvtime)
238
- FraværÅrsak .ORDINÆRT_FRAVÆR ,
239
- SøknadÅrsak .NYOPPSTARTET_HOS_ARBEIDSGIVER ,
240
- List .of (AktivitetFravær .ARBEIDSTAKER ),
241
- Organisasjonsnummer .of ("999999999" ),
242
- null
243
- );
244
-
245
- OmsorgspengerUtbetaling ytelse = byggOmsorgspengerUtbetalingSøknadBruker (
246
- fraværPeriode
270
+ FraværPeriode fraværPeriode = new FraværPeriode (
271
+ periode ,
272
+ Duration .ofHours (2 ),
273
+ new DelvisFravær (Duration .ofHours (4 ), Duration .ofHours (2 )), //50% fravær fra 4 times-jobb skal oppgis som 4 timer i duration ( 50% av 7.5 timer, og rundet oppover til nærmeste halvtime)
274
+ FraværÅrsak .ORDINÆRT_FRAVÆR ,
275
+ SøknadÅrsak .NYOPPSTARTET_HOS_ARBEIDSGIVER ,
276
+ List .of (AktivitetFravær .ARBEIDSTAKER ),
277
+ Organisasjonsnummer .of ("999999999" ),
278
+ null
247
279
);
248
280
281
+ OmsorgspengerUtbetaling ytelse = byggOmsorgspengerUtbetalingSøknadBruker (
282
+ fraværPeriode
283
+ );
249
284
250
285
251
- var feil = validatorSøknad . valider (ytelse );
286
+ List < Feil > feil = lagSøknadOgValider (ytelse );
252
287
253
288
assertThat (feil ).hasSize (1 );
254
289
feilInneholder (feil , "fraværsperioder[0]" , "avvikDurationOgDelvisFravær" );
255
290
}
256
291
292
+
257
293
// Søknad med fraværskorrigering av IM
258
294
private OmsorgspengerUtbetaling byggOmsorgspengerUtbetalingMedFraværskorrigeringIm (FraværPeriode ... fraværPerioder ) {
259
295
return new OmsorgspengerUtbetaling (
@@ -326,5 +362,22 @@ private static String jsonFromFile(String filename) {
326
362
static Søknad komplettJsonSøknad () {
327
363
return Søknad .SerDes .deserialize (jsonFromFile ("komplett-søknad-omp-utbetaling-snf.json" ));
328
364
}
365
+
366
+
367
+ }
368
+
369
+ private List <Feil > lagSøknadOgValider (OmsorgspengerUtbetaling ytelse ) {
370
+ Søknad søknad = lagSøknad (ytelse );
371
+ return søknadValidator .valider (søknad );
372
+ }
373
+
374
+ private Søknad lagSøknad (OmsorgspengerUtbetaling ytelse ) {
375
+ return new Søknad (
376
+ new SøknadId ("foo" ),
377
+ new Versjon ("1.1.0" ),
378
+ ZonedDateTime .now (),
379
+ new Søker (NorskIdentitetsnummer .of ("11111111111" )),
380
+ Språk .NORSK_BOKMÅL ,
381
+ ytelse );
329
382
}
330
383
}
0 commit comments