diff --git a/vl-kontrakt-soeknad/soeknad-v3/src/main/resources/xsd/svangerskapspenger/svangerskapspenger-v1.xsd b/vl-kontrakt-soeknad/soeknad-v3/src/main/resources/xsd/svangerskapspenger/svangerskapspenger-v1.xsd index 2a1e0b59..1139c328 100644 --- a/vl-kontrakt-soeknad/soeknad-v3/src/main/resources/xsd/svangerskapspenger/svangerskapspenger-v1.xsd +++ b/vl-kontrakt-soeknad/soeknad-v3/src/main/resources/xsd/svangerskapspenger/svangerskapspenger-v1.xsd @@ -21,11 +21,26 @@ + + + + + + + + + + + + + + + diff --git "a/vl-kontrakt-soeknad/soeknad-v3/src/test/java/no/nav/foreldrepenger/s\303\270knad/v3/ParseSoeknadTest.java" "b/vl-kontrakt-soeknad/soeknad-v3/src/test/java/no/nav/foreldrepenger/s\303\270knad/v3/ParseSoeknadTest.java" index 858a6f48..0058a25a 100644 --- "a/vl-kontrakt-soeknad/soeknad-v3/src/test/java/no/nav/foreldrepenger/s\303\270knad/v3/ParseSoeknadTest.java" +++ "b/vl-kontrakt-soeknad/soeknad-v3/src/test/java/no/nav/foreldrepenger/s\303\270knad/v3/ParseSoeknadTest.java" @@ -2,15 +2,13 @@ import static org.assertj.core.api.Assertions.assertThat; -import java.io.BufferedReader; +import java.io.IOException; import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.time.LocalDate; import jakarta.xml.bind.JAXBElement; +import no.nav.vedtak.felles.xml.soeknad.svangerskapspenger.v1.Svangerskapspenger; import org.junit.jupiter.api.Test; import no.nav.foreldrepenger.søknad.util.JaxbHelper; @@ -37,17 +35,9 @@ public class ParseSoeknadTest { @Test public void skal_parse_soeknad_xml() throws Exception { - final InputStream resourceAsStream = getClass().getResourceAsStream("/soeknad-v3.xml"); - StringBuilder textBuilder = new StringBuilder(); - try (Reader reader = new BufferedReader(new InputStreamReader - (resourceAsStream, Charset.forName(StandardCharsets.UTF_8.name())))) { - int c = 0; - while ((c = reader.read()) != -1) { - textBuilder.append((char) c); - } - } + var xml = lesResource("/soeknad-v3.xml"); Soeknad søknad = JaxbHelper.unmarshalAndValidateXMLWithStAX(Soeknad.class, - textBuilder.toString(), + xml, "xsd/soeknad-v3.xsd", new String[]{ "xsd/engangsstoenad/engangsstoenad-v3.xsd", "xsd/foreldrepenger/foreldrepenger-v3.xsd", @@ -154,4 +144,31 @@ public void skal_marshalle_til_xml() throws Exception { assertThat(søknad).isEqualToComparingFieldByFieldRecursively(søknad2); } + + @Test + void svp_utvidet_med_ferieliste_skal_være_bakoverkompatibel() throws Exception { + var xml = lesResource("/svp-soeknad.xml"); + var søknad = JaxbHelper.unmarshalAndValidateXMLWithStAX(Soeknad.class, + xml, "xsd/soeknad-v3.xsd", SøknadConstants.ADDITIONAL_XSD_LOCATION, SøknadConstants.ADDITIONAL_CLASSES); + + assertThat(søknad).isNotNull(); + var svangerskapspenger = søknad.getOmYtelse().getAny().stream() + .filter(o -> o instanceof JAXBElement) + .findFirst() + .map(e -> (Svangerskapspenger) ((JAXBElement) e).getValue()); + + assertThat(svangerskapspenger) + .isNotEmpty() + .get() + .matches(svp -> svp.getAvtaltFerieListe() == null) + .matches(svp -> LocalDate.of(2024,12,1).equals(svp.getTermindato())); + } + + private String lesResource(String resourceFile) throws IOException { + final InputStream resourceAsStream = getClass().getResourceAsStream(resourceFile); + try (resourceAsStream) { + assert resourceAsStream != null; + return new String(resourceAsStream.readAllBytes(), StandardCharsets.UTF_8); + } + } } diff --git a/vl-kontrakt-soeknad/soeknad-v3/src/test/resources/svp-soeknad.xml b/vl-kontrakt-soeknad/soeknad-v3/src/test/resources/svp-soeknad.xml new file mode 100644 index 00000000..f1355577 --- /dev/null +++ b/vl-kontrakt-soeknad/soeknad-v3/src/test/resources/svp-soeknad.xml @@ -0,0 +1,38 @@ + + + 2024-08-30 + + Vbfc43b14-1303-4e40-ad7d-a8f8510f8aaa + + I000109 + Skjema for tilrettelegging og omplassering ved graviditet + + + + + 2024-12-01 + + true + false + false + + + + + + 2024-09-01 + + + 980000001 + + 2024-07-31 + Vbfc43b14-1303-4e40-ad7d-a8f8510f8aaa + + + + + + 1000000000000 + + + \ No newline at end of file