Skip to content

Commit 75fded5

Browse files
lagt på at psb validerer på toppniva. Også at barn ikke kan være søker (#177)
* lagt på at psb validerer på toppniva. Også at barn ikke kan være søker * disabled test for å bygge ny json resources * fikset test og kommentar fra Stian
1 parent 69fdbf0 commit 75fded5

File tree

14 files changed

+501
-303
lines changed

14 files changed

+501
-303
lines changed

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import java.util.Objects;
99

1010
import javax.validation.Valid;
11-
import javax.validation.constraints.Max;
1211
import javax.validation.constraints.NotNull;
1312
import javax.validation.constraints.Size;
1413

@@ -27,7 +26,6 @@
2726
import no.nav.k9.søknad.felles.type.Språk;
2827
import no.nav.k9.søknad.felles.type.SøknadId;
2928
import no.nav.k9.søknad.ytelse.Ytelse;
30-
import no.nav.k9.søknad.ytelse.psb.v1.PleiepengerSyktBarn;
3129

3230
@JsonIgnoreProperties(ignoreUnknown = true)
3331
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
public abstract class SøknadValidator<S> {
88
protected static final String PÅKREVD = "påkrevd";
9+
protected static final String UGYLDIG_ARGUMENT = "ugyldig argument";
910

1011
public abstract List<Feil> valider(S søknad);
1112

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,9 @@ public Type getType() {
288288

289289
@Override
290290
public YtelseValidator getValidator() {
291-
return new PleiepengerSyktBarnValidator();
291+
return new PleiepengerSyktBarnYtelseValidator();
292292
}
293293

294+
295+
294296
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package no.nav.k9.søknad.ytelse.psb.v1;
2+
3+
import java.util.List;
4+
import java.util.stream.Collectors;
5+
6+
import javax.validation.ConstraintViolation;
7+
import javax.validation.Validation;
8+
import javax.validation.ValidatorFactory;
9+
10+
import no.nav.k9.søknad.Søknad;
11+
import no.nav.k9.søknad.SøknadValidator;
12+
import no.nav.k9.søknad.felles.Feil;
13+
import no.nav.k9.søknad.felles.Versjon;
14+
import no.nav.k9.søknad.felles.personopplysninger.Søker;
15+
import no.nav.k9.søknad.felles.type.Person;
16+
17+
public class PleiepengerSyktBarnSøknadValidator extends SøknadValidator<Søknad> {
18+
19+
private static final ValidatorFactory VALIDATOR_FACTORY = Validation.buildDefaultValidatorFactory();
20+
21+
22+
public PleiepengerSyktBarnSøknadValidator() {
23+
}
24+
25+
26+
private static void validerVersjon(Versjon versjon, List<Feil> feil) {
27+
if (versjon != null && !versjon.erGyldig()) {
28+
feil.add(new Feil("versjon", "ugyldigVersjon", "Versjonen er på ugyldig format."));
29+
}
30+
}
31+
32+
private static void validerBarnIkkeErSøker(Søker søker, List<Person> barnList, List<Feil> feil) {
33+
if (søker == null || barnList == null || barnList.isEmpty()) {
34+
return;
35+
}
36+
if (barnList.stream().anyMatch(person -> person.getPersonIdent() != null && person.getPersonIdent().equals(søker.getPersonIdent()))) {
37+
feil.add(new Feil("søker", "søkerSammeSomBarn", "Søker kan ikke være barn."));
38+
}
39+
}
40+
41+
42+
private Feil toFeil(ConstraintViolation<Søknad> constraintViolation) {
43+
return new Feil(
44+
constraintViolation.getPropertyPath().toString(),
45+
PÅKREVD,
46+
constraintViolation.getMessage());
47+
}
48+
49+
@Override
50+
public List<Feil> valider(Søknad søknad) {
51+
var validate = VALIDATOR_FACTORY.getValidator().validate(søknad);
52+
53+
List<Feil> feil = validate.stream()
54+
.map(this::toFeil)
55+
.collect(Collectors.toList());
56+
57+
validerVersjon(søknad.getVersjon(), feil);
58+
validerBarnIkkeErSøker(søknad.getSøker(), søknad.getBerørtePersoner(), feil);
59+
feil.addAll(new PleiepengerSyktBarnYtelseValidator().valider(søknad.getYtelse()));
60+
61+
return feil;
62+
}
63+
64+
65+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstaker;
2323
import no.nav.k9.søknad.ytelse.psb.v1.arbeidstid.Arbeidstid;
2424

25-
public class PleiepengerSyktBarnValidator extends YtelseValidator {
25+
public class PleiepengerSyktBarnYtelseValidator extends YtelseValidator {
2626

2727
private static final ValidatorFactory VALIDATOR_FACTORY = Validation.buildDefaultValidatorFactory();
2828

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package no.nav.k9.søknad.ytelse.psb;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.util.List;
6+
7+
import org.junit.jupiter.api.Disabled;
8+
import org.junit.jupiter.api.Test;
9+
10+
import no.nav.k9.søknad.Søknad;
11+
import no.nav.k9.søknad.ValideringsFeil;
12+
import no.nav.k9.søknad.felles.Feil;
13+
import no.nav.k9.søknad.ytelse.psb.v1.PleiepengerSyktBarnSøknadValidator;
14+
15+
class FraJsonTest {
16+
17+
private static final PleiepengerSyktBarnSøknadValidator validator = new PleiepengerSyktBarnSøknadValidator();
18+
19+
20+
private List<Feil> valider(Søknad søknad) {
21+
try {
22+
return validator.valider(søknad);
23+
} catch (ValideringsFeil ex) {
24+
return ex.getFeil();
25+
}
26+
}
27+
28+
@Test
29+
public void komplettSøknadSkalIkkeHaValideringsfeil() {
30+
var søknad = SøknadJsonEksempel.komplettSøknadJson();
31+
final List<Feil> feil = valider(søknad);
32+
assertThat(feil).isEmpty();
33+
}
34+
35+
@Test
36+
public void minimumSøknadSkalIkkeHaValideringsfeil() {
37+
var søknad = SøknadJsonEksempel.minimumSøknadJson();
38+
final List<Feil> feil = valider(søknad);
39+
assertThat(feil).isEmpty();
40+
}
41+
42+
@Disabled
43+
@Test
44+
public void komplettSøknadGammelVersjonSkalIkkeHaValideringsfeil() {
45+
var søknad = SøknadJsonEksempel.komplettGammelVersjonSøknadJson();
46+
final List<Feil> feil = valider(søknad);
47+
assertThat(feil).isEmpty();
48+
}
49+
50+
@Test
51+
public void minimumSøknadGammelVersjonSkalIkkeHaValideringsfeil() {
52+
var søknad = SøknadJsonEksempel.minimumGammelVersjonSøknadJson();
53+
final List<Feil> feil = valider(søknad);
54+
assertThat(feil).isEmpty();
55+
}
56+
57+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package no.nav.k9.søknad.ytelse.psb;
2+
3+
import java.time.ZonedDateTime;
4+
5+
import no.nav.k9.søknad.Søknad;
6+
import no.nav.k9.søknad.felles.Versjon;
7+
import no.nav.k9.søknad.felles.personopplysninger.Søker;
8+
import no.nav.k9.søknad.felles.type.NorskIdentitetsnummer;
9+
import no.nav.k9.søknad.felles.type.Periode;
10+
import no.nav.k9.søknad.felles.type.SøknadId;
11+
12+
class SøknadEksempel {
13+
14+
public static Søknad komplettSøknad(Periode søknadsperiode) {
15+
return new Søknad(
16+
new SøknadId("1"),
17+
new Versjon("5.4.8"),
18+
ZonedDateTime.now(),
19+
new Søker(NorskIdentitetsnummer.of("11111111111")),
20+
YtelseEksempel.komplettYtelsePsb(søknadsperiode)
21+
);
22+
23+
}
24+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package no.nav.k9.søknad.ytelse.psb;
2+
3+
import java.io.IOException;
4+
import java.nio.file.Files;
5+
import java.nio.file.Path;
6+
7+
import no.nav.k9.søknad.Søknad;
8+
9+
public class SøknadJsonEksempel {
10+
11+
private static String jsonFromFile(String filename) {
12+
try {
13+
return Files.readString(Path.of("src/test/resources/ytelse/psb/" + filename));
14+
} catch (IOException e) {
15+
throw new RuntimeException(e);
16+
}
17+
}
18+
19+
public static Søknad komplettSøknadJson() {
20+
return Søknad.SerDes.deserialize(jsonFromFile("komplett-søknad.json"));
21+
}
22+
23+
public static Søknad minimumSøknadJson() {
24+
return Søknad.SerDes.deserialize(jsonFromFile("minimum-søknad.json"));
25+
}
26+
27+
public static Søknad komplettGammelVersjonSøknadJson() {
28+
return Søknad.SerDes.deserialize(jsonFromFile("5.1.33/komplett-søknad.json"));
29+
}
30+
31+
public static Søknad minimumGammelVersjonSøknadJson() {
32+
return Søknad.SerDes.deserialize(jsonFromFile("5.1.33/minimum-søknad.json"));
33+
}
34+
35+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package no.nav.k9.søknad.ytelse.psb;
2+
3+
import static no.nav.k9.søknad.ytelse.psb.TestUtils.feilListInneholderFeil;
4+
import static org.assertj.core.api.Assertions.assertThat;
5+
6+
import java.time.LocalDate;
7+
import java.util.List;
8+
9+
import org.junit.jupiter.api.Test;
10+
11+
import no.nav.k9.søknad.Søknad;
12+
import no.nav.k9.søknad.ValideringsFeil;
13+
import no.nav.k9.søknad.felles.Feil;
14+
import no.nav.k9.søknad.felles.personopplysninger.Søker;
15+
import no.nav.k9.søknad.felles.type.NorskIdentitetsnummer;
16+
import no.nav.k9.søknad.felles.type.Periode;
17+
import no.nav.k9.søknad.ytelse.psb.v1.PleiepengerSyktBarnSøknadValidator;
18+
19+
class SøknadTest {
20+
private static final PleiepengerSyktBarnSøknadValidator validator = new PleiepengerSyktBarnSøknadValidator();
21+
public static final Søknad KOMPLETT_SØKNAD = SøknadEksempel.komplettSøknad(new Periode(LocalDate.now(), LocalDate.now().plusMonths(2)));
22+
protected static final String PÅKREVD = "påkrevd";
23+
protected static final String UGYLDIG_ARGUMENT = "ugyldig argument";
24+
25+
@Test
26+
public void komplettSøknadHarIngenValideringFeil() {
27+
var feil = valider(KOMPLETT_SØKNAD);
28+
assertThat(feil).isEmpty();
29+
}
30+
31+
@Test
32+
public void barnKanIkkeVæreSøker() {
33+
var søknad = KOMPLETT_SØKNAD;
34+
søknad.medSøker(new Søker(NorskIdentitetsnummer.of(søknad.getBerørtePersoner().get(0).getPersonIdent().getVerdi())));
35+
36+
var feil = valider(søknad);
37+
assertThat(feil).isNotEmpty();
38+
feilListInneholderFeil(feil, new Feil("søker", "søkerSammeSomBarn", "Søker kan ikke være barn." ));
39+
40+
}
41+
42+
@Test
43+
public void søkerKanIkkeVæreNull() {
44+
var søknad = KOMPLETT_SØKNAD;
45+
søknad.medSøker(null);
46+
47+
var feil = valider(søknad);
48+
assertThat(feil).isNotEmpty();
49+
feilListInneholderFeil(feil, new Feil("søker", PÅKREVD, "must not be null"));
50+
}
51+
52+
53+
private List<Feil> valider(Søknad søknad) {
54+
try {
55+
return validator.valider(søknad);
56+
} catch (ValideringsFeil ex) {
57+
return ex.getFeil();
58+
}
59+
}
60+
61+
62+
}

0 commit comments

Comments
 (0)