Skip to content

Commit

Permalink
uuid for institusjon i søknaden (#320)
Browse files Browse the repository at this point in the history
* uuid for institusjon i søknaden

* Legger kursholder med uuid i eget objekt

* rename felt
  • Loading branch information
oyvemb authored Oct 20, 2022
1 parent f019216 commit c556aa7
Show file tree
Hide file tree
Showing 5 changed files with 119 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import java.util.stream.Collectors;

import no.nav.fpsak.tidsserie.LocalDateTimeline;
Expand All @@ -19,6 +20,7 @@
import no.nav.k9.søknad.ytelse.Ytelse;
import no.nav.k9.søknad.ytelse.YtelseValidator;
import no.nav.k9.søknad.ytelse.olp.v1.kurs.KursPeriodeMedReisetid;
import no.nav.k9.søknad.ytelse.olp.v1.kurs.Kursholder;

class OpplæringspengerYtelseValidator extends YtelseValidator {

Expand Down Expand Up @@ -96,7 +98,9 @@ List<Feil> validerOgLeggTilFeilene(Opplæringspenger olp,

validerAtYtelsePeriodenErKomplettMedSøknad(søknadsperiodeTidslinje, olp.getUttak().getPerioder(), "uttak", feilene);

validerReisetidMotKursperioden(olp.getKurs().getKursperioder(), "kurs", feilene);
validerKursholderOgInstitusjonUuid(olp.getKurs().getKursholder(), "kurs.kursholder", feilene);

validerReisetidMotKursperioden(olp.getKurs().getKursperioder(), "kurs.kursperioder", feilene);

return feilene;
}
Expand Down Expand Up @@ -129,6 +133,17 @@ private List<Feil> validerAtYtelsePerioderErInnenforIntervalForEndring(LocalDate
.collect(Collectors.toCollection(ArrayList::new)));
}

private void validerKursholderOgInstitusjonUuid(Kursholder kursholder, String felt, List<Feil> feil) {
String holder = kursholder.getHolder();
UUID institusjonUuid = kursholder.getInstitusjonUuid();

if (holder == null && institusjonUuid == null) {
feil.add(lagFeil(felt, "ugyldigHolderEllerInstitusjonUuid", "Enten holder eller institusjonUuid må være satt."));
} else if (holder != null && institusjonUuid != null) {
feil.add(lagFeil(felt, "ugyldigHolderEllerInstitusjonUuid", "Kan ikke ha både holder og institusjonUuid satt samtidig."));
}
}

private void validerReisetidMotKursperioden(List<KursPeriodeMedReisetid> kursperioder, String felt, List<Feil> feil) {
for (KursPeriodeMedReisetid kursPeriode : kursperioder) {
if (kursPeriode != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
Expand All @@ -15,10 +16,10 @@
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
public class Kurs {

@JsonProperty(value = "holder", required = true)
@JsonProperty(value = "kursholder", required = true)
@NotNull
@Valid
private String holder;
private Kursholder kursholder;

@JsonProperty(value = "formål", required = true)
@NotNull
Expand All @@ -34,14 +35,14 @@ public class Kurs {
public Kurs() {
}

public Kurs(String kursholder, String formålMedKurset, List<KursPeriodeMedReisetid> kursperioder) {
this.holder = kursholder;
public Kurs(Kursholder kursholder, String formålMedKurset, List<KursPeriodeMedReisetid> kursperioder) {
this.kursholder = kursholder;
this.formål = formålMedKurset;
this.kursperioder = kursperioder;
}

public String getHolder() {
return holder;
public Kursholder getKursholder() {
return kursholder;
}

public String getFormål() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package no.nav.k9.søknad.ytelse.olp.v1.kurs;

import java.util.UUID;

import javax.validation.Valid;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
public class Kursholder {

@JsonProperty(value = "holder", required = true)
@Valid
@Size(max = 100)
@Pattern(regexp = "^[\\p{Pd}\\p{Graph}\\p{Space}\\p{Sc}\\p{L}\\p{M}\\p{N}§]*$", message = "[${validatedValue}] matcher ikke tillatt pattern [{regexp}]")
private String holder;

@JsonProperty(value = "institusjonsidentifikator", required = true)
@Valid
private UUID institusjonUuid;

public Kursholder() {
}

public Kursholder(String holder, UUID institusjonUuid) {
this.holder = holder;
this.institusjonUuid = institusjonUuid;
}

public String getHolder() {
return holder;
}

public UUID getInstitusjonUuid() {
return institusjonUuid;
}
}
2 changes: 1 addition & 1 deletion soknad/src/test/java/no/nav/k9/søknad/TestUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ public static void feilInneholder(List<Feil> feil, String felt, String feilkode,
.stream()
.filter(f -> f.getFeilkode().equals(feilkode) && f.getFelt().equals(felt) && f.getFeilmelding().equals(feilmelding))
.collect(Collectors.toList()))
.withFailMessage("Finner ikke fetl og feilkode: " + felt + ", " + feilkode + ", " + feilmelding)
.withFailMessage("Finner ikke felt og feilkode: " + felt + ", " + feilkode + ", " + feilmelding)
.isNotEmpty();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package no.nav.k9.søknad.ytelse.olp.v1;

import static org.assertj.core.api.Assertions.assertThat;

import java.time.LocalDate;
import java.util.List;
import java.util.UUID;

import org.junit.jupiter.api.Test;

import no.nav.k9.søknad.TestUtils;
import no.nav.k9.søknad.felles.Feil;
import no.nav.k9.søknad.felles.type.Periode;
import no.nav.k9.søknad.ytelse.olp.v1.kurs.Kurs;
import no.nav.k9.søknad.ytelse.olp.v1.kurs.KursPeriodeMedReisetid;
import no.nav.k9.søknad.ytelse.olp.v1.kurs.Kursholder;
import no.nav.k9.søknad.ytelse.psb.YtelseEksempel;

class OpplæringspengerYtelseValidatorTest {

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

private Opplæringspenger lagYtelse(String holder, UUID institusjonUuid) {
Periode søknadsperiode = new Periode(LocalDate.now(), LocalDate.now().plusWeeks(1));
KursPeriodeMedReisetid kursPeriode = new KursPeriodeMedReisetid(søknadsperiode, søknadsperiode.getFraOgMed(), søknadsperiode.getTilOgMed());
Kurs kurs = new Kurs(new Kursholder(holder, institusjonUuid), "?", List.of(kursPeriode));
return new Opplæringspenger().medBarn(YtelseEksempel.lagBarn()).medSøknadsperiode(List.of(søknadsperiode)).medUttak(YtelseEksempel.lagUttak(søknadsperiode)).medKurs(kurs);
}

@Test
void skalValidereOk() {
Opplæringspenger olpYtelse = lagYtelse(null, UUID.randomUUID());

List<Feil> feil = ytelseValidator.valider(olpYtelse);
assertThat(feil).isEmpty();
}

@Test
void skalGiFeilHvisBådeHolderOgUuidErNull() {
Opplæringspenger olpYtelse = lagYtelse(null, null);

List<Feil> feil = ytelseValidator.valider(olpYtelse);
TestUtils.feilInneholder(feil, "ytelse.kurs.kursholder", "ugyldigHolderEllerInstitusjonUuid", "Enten holder eller institusjonUuid må være satt.");
}

@Test
void skalGiFeilHvisBådeHolderOgUuidErSatt() {
Opplæringspenger olpYtelse = lagYtelse("Franz Holder", UUID.randomUUID());

List<Feil> feil = ytelseValidator.valider(olpYtelse);
TestUtils.feilInneholder(feil, "ytelse.kurs.kursholder", "ugyldigHolderEllerInstitusjonUuid", "Kan ikke ha både holder og institusjonUuid satt samtidig.");
}
}

0 comments on commit c556aa7

Please sign in to comment.