Skip to content

Commit 461cf4a

Browse files
authored
TSFF-1464: Gjør Kurs nullable for å kunne trekke perioder for opplæringspenger (#527)
### **Behov / Bakgrunn** Dersom man skal trekke periode for opplæringspenger skal det ikke være nødvendig å legge til Kurs. Jira: https://jira.adeo.no/browse/TSFF-1464 ### **Løsning** Gjør Kurs nullable og legger til validering slik at Kurs kun er null dersom det finnes perioder i trekkKravPerioder inneholder minst en periode. ### **Andre endringer** Legger til pull request template
1 parent cf7f311 commit 461cf4a

File tree

4 files changed

+92
-14
lines changed

4 files changed

+92
-14
lines changed

.github/pull_request_template.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
### **Behov / Bakgrunn**
2+
3+
### **Løsning**
4+
5+
### **Andre endringer**

soknad/src/main/java/no/nav/k9/søknad/ytelse/olp/v1/Opplæringspenger.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,8 @@ public class Opplæringspenger implements Ytelse {
8787
private Omsorg omsorg = new Omsorg();
8888

8989
@Valid
90-
@NotNull
91-
@JsonProperty(value = "kurs", required = true)
92-
private Kurs kurs = new Kurs();
90+
@JsonProperty(value = "kurs")
91+
private Kurs kurs = null;
9392

9493
public Opplæringspenger() {
9594
}

soknad/src/main/java/no/nav/k9/søknad/ytelse/olp/v1/OpplæringspengerYtelseValidator.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,11 +95,19 @@ List<Feil> validerOgLeggTilFeilene(Opplæringspenger olp,
9595
feilene.addAll(validerAtIngenPerioderOverlapperMedTrekkKravPerioder(trekkKravPerioderTidslinje, ytelsePeriodeTidsserie, ytelsePeriode.getFelt() + ".perioder"));
9696
}
9797

98-
validerAtYtelsePeriodenErKomplettMedSøknad(søknadsperiodeTidslinje, olp.getKurs().getKursperioder(), "kurs.kursperioder", feilene);
98+
if (olp.getKurs() != null) {
99+
validerAtYtelsePeriodenErKomplettMedSøknad(søknadsperiodeTidslinje, olp.getKurs().getKursperioder(), "kurs.kursperioder", feilene);
99100

100-
validerReise(olp.getKurs().getReise(), "kurs.reise", feilene);
101-
validerReisetidMotKursperioden(olp.getKurs().getKursperioder(), olp.getKurs().getReise(), "kurs.reise", feilene);
102-
validerKursholder(olp.getKurs().getKursholder(), feilene);
101+
validerReise(olp.getKurs().getReise(), "kurs.reise", feilene);
102+
validerReisetidMotKursperioden(olp.getKurs().getKursperioder(), olp.getKurs().getReise(), "kurs.reise", feilene);
103+
validerKursholder(olp.getKurs().getKursholder(), feilene);
104+
} else {
105+
validerAtYtelsePeriodenErKomplettMedSøknad(søknadsperiodeTidslinje, List.of(), "kurs.kursperioder", feilene);
106+
107+
if (trekkKravPerioderTidslinje.isEmpty()) {
108+
feilene.add(lagFeil("kurs", "påkrevd", "Kurs eller trekkKravPerioder må være satt."));
109+
}
110+
}
103111

104112
return feilene;
105113
}

soknad/src/test/java/no/nav/k9/søknad/ytelse/olp/v1/OpplæringspengerYtelseValidatorTest.java

Lines changed: 73 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,87 @@
1616
import no.nav.k9.søknad.ytelse.psb.YtelseEksempel;
1717

1818
class OpplæringspengerYtelseValidatorTest {
19+
private final Periode SØKNADSPERIODE = new Periode(LocalDate.now(), LocalDate.now().plusWeeks(1));
20+
private final Periode GYLDIG_ENDRINGS_PERIODE = new Periode(LocalDate.now(), LocalDate.now().plusWeeks(2));
21+
private final Reise REISEDAG_I_DAG = new Reise(true, List.of(LocalDate.now()), "Langt å kjøre");
22+
private final Reise INGEN_REISEDAG = new Reise(false, List.of(), null);
1923

2024
private final OpplæringspengerYtelseValidator ytelseValidator = new OpplæringspengerYtelseValidator();
2125

22-
private Opplæringspenger lagYtelse() {
23-
Periode søknadsperiode = new Periode(LocalDate.now(), LocalDate.now().plusWeeks(1));
24-
Reise reise = new Reise(true, List.of(LocalDate.now()), "Langt å kjøre");
25-
Kurs kurs = new Kurs(new Kursholder(UUID.randomUUID()), List.of(søknadsperiode), reise);
26-
return new Opplæringspenger().medBarn(YtelseEksempel.lagBarn()).medSøknadsperiode(List.of(søknadsperiode)).medUttak(YtelseEksempel.lagUttak(søknadsperiode)).medKurs(kurs);
26+
@Test
27+
void skalValidereOk() {
28+
Kurs kurs = new Kurs(new Kursholder(UUID.randomUUID()), List.of(SØKNADSPERIODE), REISEDAG_I_DAG);
29+
Opplæringspenger olpYtelse = new Opplæringspenger().medBarn(YtelseEksempel.lagBarn()).medSøknadsperiode(List.of(SØKNADSPERIODE)).medUttak(YtelseEksempel.lagUttak(SØKNADSPERIODE)).medKurs(kurs);
30+
31+
List<Feil> feil = ytelseValidator.valider(olpYtelse);
32+
assertThat(feil).isEmpty();
2733
}
2834

2935
@Test
30-
void skalValidereOk() {
31-
Opplæringspenger olpYtelse = lagYtelse();
36+
void KursperioderIkkeLikSøknadsperiodeSkalKasteFeil() {
37+
Periode kursPeriodeSomIkkeErLikSøknadsperiode = new Periode(LocalDate.now().minusDays(1), LocalDate.now().plusDays(1));
38+
Kurs kurs = new Kurs(new Kursholder(UUID.randomUUID()), List.of(kursPeriodeSomIkkeErLikSøknadsperiode), REISEDAG_I_DAG);
39+
40+
Opplæringspenger olpYtelse = new Opplæringspenger().medBarn(YtelseEksempel.lagBarn()).medSøknadsperiode(List.of(SØKNADSPERIODE)).medUttak(YtelseEksempel.lagUttak(SØKNADSPERIODE)).medKurs(kurs);
3241

3342
List<Feil> feil = ytelseValidator.valider(olpYtelse);
43+
assertThat(feil.size()).isEqualTo(1);
44+
assertThat(feil.get(0).getFeilmelding()).contains("Periodene er ikke komplett, periode som mangler er:");
45+
}
46+
47+
@Test
48+
void TrekkAvKravPerioderSkalVæreOk() {
49+
Periode trekkKravPeriode = new Periode(GYLDIG_ENDRINGS_PERIODE.getFraOgMed(), GYLDIG_ENDRINGS_PERIODE.getFraOgMed());
50+
Opplæringspenger olpYtelse = new Opplæringspenger().medBarn(YtelseEksempel.lagBarn()).medSøknadsperiode(List.of()).addTrekkKravPeriode(trekkKravPeriode);
51+
52+
List<Feil> feil = ytelseValidator.valider(olpYtelse, List.of(GYLDIG_ENDRINGS_PERIODE));
3453
assertThat(feil).isEmpty();
3554
}
55+
56+
@Test
57+
void ManglendeKursOgTrekkVarPeriodeSkalKasteFeil() {
58+
Opplæringspenger olpYtelse = new Opplæringspenger().medBarn(YtelseEksempel.lagBarn()).medSøknadsperiode(List.of());
59+
List<Feil> feil = ytelseValidator.valider(olpYtelse, List.of(GYLDIG_ENDRINGS_PERIODE));
60+
61+
assertThat(feil.size()).isEqualTo(1);
62+
assertThat(feil.get(0).getFeilmelding()).isEqualTo("Kurs eller trekkKravPerioder må være satt.");
63+
}
64+
65+
@Test
66+
void TrekkAvPeriodeOgLeggTilNyttKursIAnnenPeriodeSkalVæreOk() {
67+
Periode trekkKravPeriode = new Periode(GYLDIG_ENDRINGS_PERIODE.getFraOgMed(), GYLDIG_ENDRINGS_PERIODE.getFraOgMed().plusWeeks(1));
68+
Periode nyKursPeriode = new Periode(LocalDate.now().plusWeeks(3), LocalDate.now().plusWeeks(4));
69+
Kurs kurs = new Kurs(new Kursholder(UUID.randomUUID()), List.of(nyKursPeriode), INGEN_REISEDAG);
70+
71+
Opplæringspenger olpYtelse = new Opplæringspenger().medBarn(YtelseEksempel.lagBarn()).medSøknadsperiode(List.of(nyKursPeriode)).addAllTrekkKravPerioder(List.of(trekkKravPeriode)).medKurs(kurs);
72+
List<Feil> feil = ytelseValidator.valider(olpYtelse, List.of(GYLDIG_ENDRINGS_PERIODE));
73+
74+
assertThat(feil.size()).isEqualTo(0);
75+
}
76+
77+
// test at trekkKravPeriode overlapper med søknadsperiode gir feil
78+
@Test
79+
void TrekkKravPeriodeOverlapperMedSøknadsperiodeGirFeil() {
80+
Periode trekkKravPeriode = new Periode(SØKNADSPERIODE.getFraOgMed().minusDays(1), SØKNADSPERIODE.getTilOgMed().plusDays(1));
81+
Kurs kurs = new Kurs(new Kursholder(UUID.randomUUID()), List.of(SØKNADSPERIODE), REISEDAG_I_DAG);
82+
Opplæringspenger olpYtelse = new Opplæringspenger().medBarn(YtelseEksempel.lagBarn()).medSøknadsperiode(List.of(SØKNADSPERIODE)).addTrekkKravPeriode(trekkKravPeriode).medKurs(kurs);
83+
84+
List<Feil> feil = ytelseValidator.valider(olpYtelse);
85+
assertThat(feil.size()).isEqualTo(1);
86+
assertThat(feil.get(0).getFelt()).isEqualTo("ytelse.trekkKravPerioder");
87+
assertThat(feil.get(0).getFeilmelding()).contains("Overlapper med trekk krav periode:");
88+
}
89+
90+
@Test
91+
void SøknadsperiodeUtenKursSomOverlapperTrekkKreavPeriodeGir2Feil() {
92+
Periode trekkKravPeriode = new Periode(SØKNADSPERIODE.getFraOgMed().minusDays(1), SØKNADSPERIODE.getTilOgMed().plusDays(1));
93+
Opplæringspenger olpYtelse = new Opplæringspenger().medBarn(YtelseEksempel.lagBarn()).medSøknadsperiode(List.of(SØKNADSPERIODE)).addTrekkKravPeriode(trekkKravPeriode);
94+
95+
List<Feil> feil = ytelseValidator.valider(olpYtelse);
96+
assertThat(feil.size()).isEqualTo(2);
97+
assertThat(feil.get(0).getFelt()).isEqualTo("ytelse.trekkKravPerioder");
98+
assertThat(feil.get(0).getFeilmelding()).contains("Overlapper med trekk krav periode:");
99+
assertThat(feil.get(1).getFelt()).isEqualTo("ytelse.kurs.kursperioder");
100+
assertThat(feil.get(1).getFeilmelding()).contains("Periodene er ikke komplett, periode som mangler er:");
101+
}
36102
}

0 commit comments

Comments
 (0)