diff --git a/alfa-server/src/main/resources/application.yml b/alfa-server/src/main/resources/application.yml index 3396df96aa0b06fd2c95d525f353fd88795cdd64..ac930de36a83c9b7d962e72dca5ef29eae2fdd57 100644 --- a/alfa-server/src/main/resources/application.yml +++ b/alfa-server/src/main/resources/application.yml @@ -96,13 +96,3 @@ ozgcloud: behoerdenschluessel: behoerdenschluessel-uri: behoerdenschluessel-version: - codeliste: - - uri: urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:kreis - version: 2021-07-31 - pattern: \d{5} - - uri: urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:ags - version: 2024-06-30 - pattern: \d{8} - - uri: urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:rs - version: 2024-06-30 - pattern: \d{12} diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/AmbiguousCodelistePatternException.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/AmbiguousCodelistePatternException.java deleted file mode 100644 index 9defafcd5659d2adc634aad9271a207fc26e7b40..0000000000000000000000000000000000000000 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/AmbiguousCodelistePatternException.java +++ /dev/null @@ -1,14 +0,0 @@ -package de.ozgcloud.alfa.export; - -import lombok.Getter; - -@Getter -public class AmbiguousCodelistePatternException extends RuntimeException { - - private final String behoerdenschluessel; - - public AmbiguousCodelistePatternException(String behoerdenschluessel) { - super("Multiple Codelisten match Behördenschlüssel " + behoerdenschluessel); - this.behoerdenschluessel = behoerdenschluessel; - } -} diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/BehoerdenschluesselProperties.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/BehoerdenschluesselProperties.java deleted file mode 100644 index ac1fa1350809c5689566affddfd3f67db368b1b3..0000000000000000000000000000000000000000 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/BehoerdenschluesselProperties.java +++ /dev/null @@ -1,61 +0,0 @@ -package de.ozgcloud.alfa.export; - -import java.util.List; -import java.util.Optional; - -import org.apache.commons.lang3.StringUtils; - -import de.ozgcloud.alfa.export.XdomeaProperties.Codeliste; -import lombok.RequiredArgsConstructor; - -@RequiredArgsConstructor -public class BehoerdenschluesselProperties { - - private final XdomeaProperties xdomeaProperties; - - public Optional<String> getBehoerdenschluessel() { - return ofNullableOrBlank(xdomeaProperties.getBehoerdenschluessel()); - } - - public Optional<String> getBehoerdenschluesselUri() { - return ofNullableOrBlank(xdomeaProperties.getBehoerdenschluesselUri()).or(this::getDefaultBehoerdenschluesselUri); - } - - Optional<String> getDefaultBehoerdenschluesselUri() { - return getCodeliste().map(Codeliste::getUri); - } - - public Optional<String> getBehoerdenschluesselVersion() { - return ofNullableOrBlank(xdomeaProperties.getBehoerdenschluesselVersion()).or(this::getDefaultBehoerdenschluesselVersion); - } - - Optional<String> getDefaultBehoerdenschluesselVersion() { - return getCodeliste().map(Codeliste::getVersion); - } - - Optional<Codeliste> getCodeliste() { - return ofNullableOrBlank(xdomeaProperties.getBehoerdenschluessel()).flatMap(this::getCodeliste); - } - - private Optional<Codeliste> getCodeliste(String behoerdenschluessel) { - var matchingCodelisten = getCodelistenMatchingBehoerdenschluessel(behoerdenschluessel); - if (matchingCodelisten.size() > 1) { - throw new AmbiguousCodelistePatternException(behoerdenschluessel); - } - return matchingCodelisten.size() == 1 ? Optional.of(matchingCodelisten.getFirst()) : Optional.empty(); - } - - private List<Codeliste> getCodelistenMatchingBehoerdenschluessel(String behoerdenschluessel) { - return xdomeaProperties.getCodeliste().stream() - .filter(codeliste -> codelisteMatchesBehoerdenschluessel(codeliste, behoerdenschluessel)) - .toList(); - } - - private boolean codelisteMatchesBehoerdenschluessel(Codeliste codeliste, String behoerdenschluessel) { - return codeliste.getPattern().matcher(behoerdenschluessel).matches(); - } - - private static Optional<String> ofNullableOrBlank(String value) { - return Optional.ofNullable(value).filter(StringUtils::isNotBlank); - } -} diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesValidator.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesValidator.java index 54568a6f8c7c537f9da3053ef8a402ee6a9a65e0..1789c74036f8171291dd229dd70396f8a31c6948 100644 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesValidator.java +++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesValidator.java @@ -1,11 +1,12 @@ package de.ozgcloud.alfa.export; -import java.util.Optional; -import java.util.function.Supplier; - +import org.apache.commons.beanutils.BeanUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.validation.Errors; import org.springframework.validation.Validator; +import de.ozgcloud.common.errorhandling.TechnicalException; + public class BehoerdenschluesselPropertiesValidator implements Validator { @Override @@ -15,33 +16,25 @@ public class BehoerdenschluesselPropertiesValidator implements Validator { @Override public void validate(Object target, Errors errors) { - var properties = getBehoerdenschluesselProperties((XdomeaProperties) target); - if (properties.getBehoerdenschluessel().isPresent()) { - validateProperties(properties, errors); + var properties = (XdomeaProperties) target; + if (StringUtils.isNotBlank(properties.getBehoerdenschluessel())) { + validateNotBlank("behoerdenschluesselUri", properties, errors); + validateNotBlank("behoerdenschluesselVersion", properties, errors); } } - BehoerdenschluesselProperties getBehoerdenschluesselProperties(XdomeaProperties xdomeaProperties) { - return new BehoerdenschluesselProperties(xdomeaProperties); - } - - private void validateProperties(BehoerdenschluesselProperties props, Errors errors) { - try { - validateNotEmpty(props, errors); - } catch (AmbiguousCodelistePatternException e) { - errors.reject("ozgcloud.xdomea.codeliste.pattern.ambiguous", e.getMessage()); + private void validateNotBlank(String propertyName, XdomeaProperties properties, Errors errors) { + getPropertyValue(propertyName, properties); + if (StringUtils.isBlank(getPropertyValue(propertyName, properties))) { + errors.rejectValue(propertyName, String.format("ozgcloud.xdomea.%s.empty", propertyName), String.format("%s must be set", propertyName)); } } - private void validateNotEmpty(BehoerdenschluesselProperties props, Errors errors) { - validateNotEmpty(props::getBehoerdenschluesselUri, "behoerdenschluesselUri", "behoerdenschluessel-uri", errors); - validateNotEmpty(props::getBehoerdenschluesselVersion, "behoerdenschluesselVersion", "behoerdenschluessel-version", errors); - } - - private <T> void validateNotEmpty(Supplier<Optional<T>> propertyAccessor, String fieldName, String propertyName, Errors errors) { - var propertyValue = propertyAccessor.get(); - if (propertyValue.isEmpty()) { - errors.rejectValue(fieldName, String.format("ozgcloud.xdomea.%s.empty", propertyName), String.format("%s must be set", propertyName)); + private static String getPropertyValue(String fieldName, XdomeaProperties properties) { + try { + return BeanUtils.getSimpleProperty(properties, fieldName); + } catch (Exception e) { + throw new TechnicalException("Property does not exist", e); } } } diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/XdomeaProperties.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/XdomeaProperties.java index 6c88c117f5b3003a11949bf55b84674c4dedf873..2d2157c690d1b1c354875b477ec6163752cc1234 100644 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/XdomeaProperties.java +++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/XdomeaProperties.java @@ -1,16 +1,9 @@ package de.ozgcloud.alfa.export; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Pattern; - import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.validation.annotation.Validated; -import jakarta.validation.Valid; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; @@ -30,20 +23,4 @@ public class XdomeaProperties { private String behoerdenschluessel; private String behoerdenschluesselUri; private String behoerdenschluesselVersion; - - @Valid - private List<Codeliste> codeliste = new ArrayList<>(); - - @Builder - @Setter - @Getter - public static class Codeliste { - - @NotBlank - private String uri; - @NotBlank - private String version; - @NotNull - private Pattern pattern; - } } diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/KopfCreator.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/KopfCreator.java index 192c03e3dace1b94ee197f8070092133e0eacb01..5305519177c60d83ac4de118977b4fbd4c549fa2 100644 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/KopfCreator.java +++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/KopfCreator.java @@ -7,7 +7,6 @@ import org.springframework.stereotype.Component; import de.ozgcloud.alfa.common.DateConverter; import de.ozgcloud.alfa.common.UUIDConverter; -import de.ozgcloud.alfa.export.BehoerdenschluesselProperties; import de.ozgcloud.alfa.export.XdomeaProperties; import de.xoev.xdomea.BehoerdenkennungType; import de.xoev.xdomea.Code; @@ -16,6 +15,7 @@ import de.xoev.xdomea.NachrichtentypCodeType; import de.xoev.xdomea.NkAbgabeType; import de.xoev.xdomea.OrganisationseinheitType; import de.xoev.xdomea.SystemType; +import io.micrometer.common.util.StringUtils; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor @@ -27,7 +27,7 @@ class KopfCreator { static final String NACHRICHTENTYP_ABGABE_ABGABE_TYPE_CODE = "0401"; static final String PRODUKT_NAME = "OZG-Cloud"; - private final XdomeaProperties xDomeaProperties; + private final XdomeaProperties xdomeaProperties; public NkAbgabeType createKopf(VorgangWithEingang vorgang) { var nkAbgabeType = new NkAbgabeType(); @@ -58,34 +58,29 @@ class KopfCreator { KontaktType createKontaktType() { var kontakt = new KontaktType(); - var behoerdenschluesselProperties = getBehoerdenschluesselProperties(xDomeaProperties); - if (behoerdenschluesselProperties.getBehoerdenschluessel().isPresent()) { - kontakt.setBehoerdenkennung(createBehoerdenkennung(behoerdenschluesselProperties)); + if (StringUtils.isNotBlank(xdomeaProperties.getBehoerdenschluessel())) { + kontakt.setBehoerdenkennung(createBehoerdenkennung()); } return kontakt; } - BehoerdenschluesselProperties getBehoerdenschluesselProperties(XdomeaProperties xdomeaProperties) { - return new BehoerdenschluesselProperties(xdomeaProperties); - } - OrganisationseinheitType createOrganisationseinheitType(String organisationseinheitId) { var organisationseinheit = new OrganisationseinheitType(); organisationseinheit.setName(organisationseinheitId); return organisationseinheit; } - BehoerdenkennungType createBehoerdenkennung(BehoerdenschluesselProperties behoerdenschluesselProperties) { + BehoerdenkennungType createBehoerdenkennung() { var behoerdenkennungType = new BehoerdenkennungType(); - behoerdenkennungType.setBehoerdenschluessel(createBehoerdenschluessel(behoerdenschluesselProperties)); + behoerdenkennungType.setBehoerdenschluessel(createBehoerdenschluessel()); return behoerdenkennungType; } - Code createBehoerdenschluessel(BehoerdenschluesselProperties behoerdenschluesselProperties) { + Code createBehoerdenschluessel() { var behoerdenschluessel = new Code(); - behoerdenschluessel.setCode(behoerdenschluesselProperties.getBehoerdenschluessel().orElseThrow()); - behoerdenschluessel.setListURI(behoerdenschluesselProperties.getBehoerdenschluesselUri().orElseThrow()); - behoerdenschluessel.setListVersionID(behoerdenschluesselProperties.getBehoerdenschluesselVersion().orElseThrow()); + behoerdenschluessel.setCode(xdomeaProperties.getBehoerdenschluessel()); + behoerdenschluessel.setListURI(xdomeaProperties.getBehoerdenschluesselUri()); + behoerdenschluessel.setListVersionID(xdomeaProperties.getBehoerdenschluesselVersion()); return behoerdenschluessel; } diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesITCase.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesITCase.java deleted file mode 100644 index 8e2b4758a60598760e0c428244afa0c5de3a213d..0000000000000000000000000000000000000000 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesITCase.java +++ /dev/null @@ -1,38 +0,0 @@ -package de.ozgcloud.alfa.export; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import de.ozgcloud.common.test.ITCase; - -@ITCase -class BehoerdenschluesselPropertiesITCase { - - @Autowired - private XdomeaProperties xdomeaProperties; - - private BehoerdenschluesselProperties behoerdenschluesselProperties; - - @BeforeEach - void init() { - behoerdenschluesselProperties = new BehoerdenschluesselProperties(xdomeaProperties); - } - - @Test - void shouldHaveBehoerdenschluessel() { - assertThat(behoerdenschluesselProperties.getBehoerdenschluessel()).isPresent().get().isEqualTo("12345678"); - } - - @Test - void shouldHaveBehoerdenschluesselUri() { - assertThat(behoerdenschluesselProperties.getBehoerdenschluesselUri()).isPresent().get().isEqualTo("urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:ags"); - } - - @Test - void shouldHaveBehoerdenschluesselVersion() { - assertThat(behoerdenschluesselProperties.getBehoerdenschluesselVersion()).isPresent().get().isEqualTo("2024-06-30"); - } -} diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesTest.java deleted file mode 100644 index 3830c5b9701a47e148156cfaecf0803263fa0bce..0000000000000000000000000000000000000000 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesTest.java +++ /dev/null @@ -1,293 +0,0 @@ -package de.ozgcloud.alfa.export; - -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; - -import java.util.List; -import java.util.Optional; -import java.util.UUID; -import java.util.stream.Stream; - -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; -import org.junit.jupiter.params.provider.NullAndEmptySource; -import org.mockito.Spy; - -import de.ozgcloud.alfa.export.XdomeaProperties.Codeliste; -import de.ozgcloud.alfa.export.XdomeaProperties.XdomeaPropertiesBuilder; -import lombok.RequiredArgsConstructor; - -class BehoerdenschluesselPropertiesTest { - - @Nested - class TestGetBehoerdenschluessel { - - @Test - void shouldReturnBehoerdenschluessel() { - var xdomeaProps = XdomeaPropertiesTestFactory.create(); - var bsProps = new BehoerdenschluesselProperties(xdomeaProps); - - assertThat(bsProps.getBehoerdenschluessel()).isPresent().get().isEqualTo(XdomeaPropertiesTestFactory.BEHOERDENSCHLUESSEL); - } - - @ParameterizedTest - @NullAndEmptySource - void shouldReturnEmptyIfBehoerdenschluesselIsNotSet(String bs) { - var xdomeaProps = XdomeaPropertiesTestFactory.createBuilder().behoerdenschluessel(bs).build(); - var bsProps = new BehoerdenschluesselProperties(xdomeaProps); - - assertThat(bsProps.getBehoerdenschluessel()).isNotPresent(); - } - } - - @Nested - class TestGetBehoerdenschluesselUri extends TestGetPropertyValue { - - @Override - protected void verifyDefaultPropertyValueAccessorWasCalled(BehoerdenschluesselProperties bsProps) { - verify(bsProps).getDefaultBehoerdenschluesselUri(); - } - - @Override - protected String getPropertyValue(XdomeaProperties props) { - return props.getBehoerdenschluesselUri(); - } - - @Override - protected Optional<String> getPropertyValue(BehoerdenschluesselProperties bsProps) { - return bsProps.getBehoerdenschluesselUri(); - } - - @Override - protected XdomeaPropertiesBuilder withPropertyValue(String value, XdomeaPropertiesBuilder propertiesBuilder) { - return propertiesBuilder.behoerdenschluesselUri(value); - } - - @Override - protected void mockPropertyDefaultValue(Optional<String> defaultValue, BehoerdenschluesselProperties bsProps) { - doReturn(defaultValue).when(bsProps).getDefaultBehoerdenschluesselUri(); - } - } - - @Nested - class TestGetBehoerdenschluesselVersion extends TestGetPropertyValue { - - @Override - protected void verifyDefaultPropertyValueAccessorWasCalled(BehoerdenschluesselProperties bsProps) { - verify(bsProps).getDefaultBehoerdenschluesselVersion(); - } - - @Override - protected String getPropertyValue(XdomeaProperties props) { - return props.getBehoerdenschluesselVersion(); - } - - @Override - protected Optional<String> getPropertyValue(BehoerdenschluesselProperties bsProps) { - return bsProps.getBehoerdenschluesselVersion(); - } - - @Override - protected XdomeaPropertiesBuilder withPropertyValue(String value, XdomeaPropertiesBuilder propertiesBuilder) { - return propertiesBuilder.behoerdenschluesselVersion(value); - } - - @Override - protected void mockPropertyDefaultValue(Optional<String> defaultValue, BehoerdenschluesselProperties bsProps) { - doReturn(defaultValue).when(bsProps).getDefaultBehoerdenschluesselVersion(); - } - } - - @RequiredArgsConstructor - private abstract static class TestGetPropertyValue { - - @Test - @SuppressWarnings("unused") - void shouldReturnPropertyValue() { - var xdomeaProps = XdomeaPropertiesTestFactory.create(); - var bsProps = new BehoerdenschluesselProperties(xdomeaProps); - - var value = getPropertyValue(bsProps); - - assertThat(value).isPresent().get().isEqualTo(getPropertyValue(xdomeaProps)); - } - - @ParameterizedTest - @NullAndEmptySource - @SuppressWarnings("unused") - void shouldGetDefaultPropertyValue(String bs) { - var xdomeaProps = withPropertyValue(null, XdomeaPropertiesTestFactory.createBuilder().behoerdenschluessel(bs)).build(); - var bsProps = spy(new BehoerdenschluesselProperties(xdomeaProps)); - mockPropertyDefaultValue(Optional.of(UUID.randomUUID().toString()), bsProps); - - getPropertyValue(bsProps); - - verifyDefaultPropertyValueAccessorWasCalled(bsProps); - } - - @ParameterizedTest - @NullAndEmptySource - @SuppressWarnings("unused") - void shouldReturnDefaultPropertyValue(String bs) { - final String DEFAULT_VALUE = UUID.randomUUID().toString(); - var xdomeaProps = withPropertyValue(null, XdomeaPropertiesTestFactory.createBuilder().behoerdenschluessel(bs)).build(); - var bsProps = spy(new BehoerdenschluesselProperties(xdomeaProps)); - mockPropertyDefaultValue(Optional.of(DEFAULT_VALUE), bsProps); - - var value = getPropertyValue(bsProps); - - assertThat(value).isPresent().get().isEqualTo(DEFAULT_VALUE); - } - - @ParameterizedTest - @NullAndEmptySource - @SuppressWarnings("unused") - void shouldReturnEmptyIfDefaultPropertyValueIsEmpty(String bs) { - var xdomeaProps = withPropertyValue(null, XdomeaPropertiesTestFactory.createBuilder().behoerdenschluessel(bs)).build(); - var bsProps = spy(new BehoerdenschluesselProperties(xdomeaProps)); - mockPropertyDefaultValue(Optional.empty(), bsProps); - - var value = getPropertyValue(bsProps); - - assertThat(value).isEmpty(); - } - - protected abstract void verifyDefaultPropertyValueAccessorWasCalled(BehoerdenschluesselProperties bsProps); - - protected abstract String getPropertyValue(XdomeaProperties props); - - protected abstract Optional<String> getPropertyValue(BehoerdenschluesselProperties bsProps); - - protected abstract XdomeaPropertiesBuilder withPropertyValue(String value, XdomeaPropertiesBuilder propertiesBuilder); - - protected abstract void mockPropertyDefaultValue(Optional<String> defaultValue, BehoerdenschluesselProperties bsProps); - } - - @Nested - class TestGetDefaultBehoerdenschluesselUri extends TestGetPropertyDefaultValue { - - @Override - protected Optional<String> getPropertyDefaultValue(BehoerdenschluesselProperties bsProps) { - return bsProps.getDefaultBehoerdenschluesselUri(); - } - - @Override - protected String getPropertyDefaultValueFromCodeliste(Codeliste codeliste) { - return codeliste.getUri(); - } - } - - @Nested - class TestGetDefaultBehoerdenschluesselVersion extends TestGetPropertyDefaultValue { - - @Override - protected Optional<String> getPropertyDefaultValue(BehoerdenschluesselProperties bsProps) { - return bsProps.getDefaultBehoerdenschluesselVersion(); - } - - @Override - protected String getPropertyDefaultValueFromCodeliste(Codeliste codeliste) { - return codeliste.getVersion(); - } - } - - @RequiredArgsConstructor - private abstract static class TestGetPropertyDefaultValue { - - @Spy - private BehoerdenschluesselProperties bsProps = new BehoerdenschluesselProperties(XdomeaPropertiesTestFactory.create()); - - @Test - @SuppressWarnings("unused") - void shouldGetCodeliste() { - doReturn(Optional.of(XdomeaPropertiesTestFactory.createCodeliste1())).when(bsProps).getCodeliste(); - - getPropertyDefaultValue(); - - verify(bsProps).getCodeliste(); - } - - @Test - @SuppressWarnings("unused") - void shouldReturnEmptyIfCodelisteIsEmpty() { - doReturn(Optional.empty()).when(bsProps).getCodeliste(); - - var defaultValue = getPropertyDefaultValue(); - - assertThat(defaultValue).isEmpty(); - } - - @Test - void shouldReturnDefaultValueFromCodeliste() { - doReturn(Optional.of(XdomeaPropertiesTestFactory.createCodeliste1())).when(bsProps).getCodeliste(); - - var defaultValue = getPropertyDefaultValue(); - - assertThat(defaultValue).isPresent().get().isEqualTo(getPropertyDefaultValueFromCodeliste(XdomeaPropertiesTestFactory.createCodeliste1())); - } - - private Optional<String> getPropertyDefaultValue() { - return getPropertyDefaultValue(bsProps); - } - - protected abstract Optional<String> getPropertyDefaultValue(BehoerdenschluesselProperties bsProps); - - protected abstract String getPropertyDefaultValueFromCodeliste(Codeliste codeliste); - } - - @Nested - class TestGetCodeliste { - - @ParameterizedTest - @NullAndEmptySource - void shouldReturnEmtpyIfBehoerdenschluesselIsNotSet(String bs) { - var bsProps = new BehoerdenschluesselProperties(XdomeaPropertiesTestFactory.createBuilder().behoerdenschluessel(bs).build()); - - var codeliste = bsProps.getCodeliste(); - - assertThat(codeliste).isEmpty(); - } - - @Test - void shouldReturnEmptyIfNoCodelisteMatchesBehoerdenschluessel() { - var bsProps = new BehoerdenschluesselProperties(XdomeaPropertiesTestFactory.create()); - - var codeliste = bsProps.getCodeliste(); - - assertThat(codeliste).isEmpty(); - } - - @ParameterizedTest - @MethodSource("provideData") - void shouldReturnCodelisteMatchingBehoerdenschluessel(String bs, Codeliste expectedCodeliste) { - var bsProps = new BehoerdenschluesselProperties(XdomeaPropertiesTestFactory.createBuilder().behoerdenschluessel(bs).build()); - - var codeliste = bsProps.getCodeliste(); - - assertThat(codeliste).isPresent().get().usingRecursiveComparison().isEqualTo(expectedCodeliste); - } - - @Test - void shouldThrowExceptionIfMatchIsAmbiguous() { - var props = XdomeaPropertiesTestFactory.createBuilder() - .behoerdenschluessel(XdomeaPropertiesTestFactory.CODELISTE_1_VALID_BEHOERDENSCHLUESSEL) - .codeliste(List.of(XdomeaPropertiesTestFactory.createCodeliste1(), XdomeaPropertiesTestFactory.createCodeliste1())) - .build(); - var bsProps = new BehoerdenschluesselProperties(props); - - assertThatThrownBy(bsProps::getCodeliste).isInstanceOf(AmbiguousCodelistePatternException.class) - .hasFieldOrPropertyWithValue("behoerdenschluessel", props.getBehoerdenschluessel()) - .hasMessageContaining(props.getBehoerdenschluessel()); - } - - private static Stream<Arguments> provideData() { - return Stream.of( - Arguments.of(XdomeaPropertiesTestFactory.CODELISTE_1_VALID_BEHOERDENSCHLUESSEL, XdomeaPropertiesTestFactory.createCodeliste1()), - Arguments.of(XdomeaPropertiesTestFactory.CODELISTE_2_VALID_BEHOERDENSCHLUESSEL, XdomeaPropertiesTestFactory.createCodeliste2()) - ); - } - } -} diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesValidatorTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesValidatorTest.java index 4e9c3db40af5cdf4ba1334b0dd6cdffd8461a822..eb81f121bc6a7ae12c425c9825f7e1ec02d38bd3 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesValidatorTest.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/BehoerdenschluesselPropertiesValidatorTest.java @@ -1,25 +1,16 @@ package de.ozgcloud.alfa.export; -import static de.ozgcloud.alfa.export.XdomeaPropertiesTestFactory.*; import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; -import java.util.Optional; - -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.mockito.Mock; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.NullAndEmptySource; import org.mockito.Spy; import org.springframework.validation.Errors; -import org.springframework.validation.SimpleErrors; class BehoerdenschluesselPropertiesValidatorTest { - private final XdomeaProperties properties = XdomeaPropertiesTestFactory.create(); - private final Errors errors = new SimpleErrors(properties); - @Mock - private BehoerdenschluesselProperties behoerdenschluesselProperties; @Spy private BehoerdenschluesselPropertiesValidator validator; @@ -37,32 +28,21 @@ class BehoerdenschluesselPropertiesValidatorTest { @Nested class TestValidate { - @BeforeEach - void init() { - doReturn(behoerdenschluesselProperties).when(validator).getBehoerdenschluesselProperties(properties); - } - - @Test - void shouldGetBehoerdenschluesselProperties() { - validate(); - - verify(validator).getBehoerdenschluesselProperties(properties); - } - @Test void shouldBeValidIfAllBehoerdenschluesselPropertiesAreSet() { - givenProperties(BEHOERDENSCHLUESSEL, BEHOERDENSCHLUESSEL_URI, BEHOERDENSCHLUESSEL_VERSION); + var properties = XdomeaPropertiesTestFactory.create(); - validate(); + var errors = validate(properties); assertThat(errors.hasErrors()).isFalse(); } - @Test - void shouldBeValidIfBehoerdenschluesselIsNotSet() { - when(behoerdenschluesselProperties.getBehoerdenschluessel()).thenReturn(Optional.empty()); + @ParameterizedTest + @NullAndEmptySource + void shouldBeValidIfBehoerdenschluesselIsNotSet(String behoerdenschluessel) { + var properties = XdomeaPropertiesTestFactory.createBuilder().behoerdenschluessel(behoerdenschluessel).build(); - validate(); + var errors = validate(properties); assertThat(errors.hasErrors()).isFalse(); } @@ -70,149 +50,89 @@ class BehoerdenschluesselPropertiesValidatorTest { @Nested class OnUriNotSet { - private static final String FIELD = "behoerdenschluesselUri"; - public static final String PROPERTY_NAME = "behoerdenschluessel-uri"; + private static final String PROPERTY_NAME = "behoerdenschluesselUri"; public static final String PROPERTY_PATH = "ozgcloud.xdomea." + PROPERTY_NAME; public static final String ERROR_CODE = PROPERTY_PATH + ".empty"; - @BeforeEach - void init() { - givenUriNotSet(); - } + @ParameterizedTest + @NullAndEmptySource + void shouldHaveFieldErrors(String uri) { + var properties = havingBehoerdenschluesselUri(uri); - @Test - void shouldHaveFieldErrors() { - validate(); + var errors = validate(properties); - assertThat(errors.hasFieldErrors(FIELD)).isTrue(); + assertThat(errors.hasFieldErrors(PROPERTY_NAME)).isTrue(); } - @Test - void shouldHaveMeaningfulErrorMessage() { - validate(); + @ParameterizedTest + @NullAndEmptySource + void shouldHaveMeaningfulErrorMessage(String uri) { + var properties = havingBehoerdenschluesselUri(uri); - assertThat(errors.getFieldError(FIELD).getDefaultMessage()).contains(PROPERTY_NAME); + var errors = validate(properties); + + assertThat(errors.getFieldError(PROPERTY_NAME).getDefaultMessage()).contains(PROPERTY_NAME); } - @Test - void shouldHaveErrorCode() { - validate(); + @ParameterizedTest + @NullAndEmptySource + void shouldHaveErrorCode(String uri) { + var properties = havingBehoerdenschluesselUri(uri); + + var errors = validate(properties); - assertThat(errors.getFieldError(FIELD).getCode()).isEqualTo(ERROR_CODE); + assertThat(errors.getFieldError(PROPERTY_NAME).getCode()).isEqualTo(ERROR_CODE); } - private void givenUriNotSet() { - givenProperties(BEHOERDENSCHLUESSEL, null, BEHOERDENSCHLUESSEL_VERSION); + private XdomeaProperties havingBehoerdenschluesselUri(String uri) { + return XdomeaPropertiesTestFactory.createBuilder().behoerdenschluesselUri(uri).build(); } } @Nested class OnVersionNotSet { - private static final String FIELD = "behoerdenschluesselVersion"; - public static final String PROPERTY_NAME = "behoerdenschluessel-version"; + public static final String PROPERTY_NAME = "behoerdenschluesselVersion"; public static final String PROPERTY_PATH = "ozgcloud.xdomea." + PROPERTY_NAME; public static final String ERROR_CODE = PROPERTY_PATH + ".empty"; - @BeforeEach - void init() { - givenVersionNotSet(); - } - - @Test - void shouldHaveFieldErrors() { - validate(); - - assertThat(errors.hasFieldErrors(FIELD)).isTrue(); - } - - @Test - void shouldHaveMeaningfulErrorMessage() { - validate(); - - assertThat(errors.getFieldError(FIELD).getDefaultMessage()).contains(PROPERTY_NAME); - } - - @Test - void shouldHaveErrorCode() { - validate(); - - assertThat(errors.getFieldError(FIELD).getCode()).isEqualTo(ERROR_CODE); - } - - private void givenVersionNotSet() { - givenProperties(BEHOERDENSCHLUESSEL, BEHOERDENSCHLUESSEL_URI, null); - } - } - - @Nested - class OnAmbiguousCodelistePattern { - - public static final String PROPERTY_PATH = "ozgcloud.xdomea.codeliste.pattern"; - public static final String ERROR_CODE = PROPERTY_PATH + ".ambiguous"; + @ParameterizedTest + @NullAndEmptySource + void shouldHaveFieldErrors(String version) { + var properties = havingBehoerdenschluesselVersion(version); - private final AmbiguousCodelistePatternException exception = new AmbiguousCodelistePatternException(BEHOERDENSCHLUESSEL); + var errors = validate(properties); - @BeforeEach - void init() { - givenAmbiguousCodelistePattern(); + assertThat(errors.hasFieldErrors(PROPERTY_NAME)).isTrue(); } - @Test - void shouldHaveGlobalError() { - validate(); + @ParameterizedTest + @NullAndEmptySource + void shouldHaveMeaningfulErrorMessage(String version) { + var properties = havingBehoerdenschluesselVersion(version); - assertThat(errors.hasGlobalErrors()).isTrue(); - } - - @Test - void shouldHaveErrorMessageOfException() { - validate(); + var errors = validate(properties); - assertThat(errors.getGlobalError().getDefaultMessage()).isEqualTo(exception.getMessage()); + assertThat(errors.getFieldError(PROPERTY_NAME).getDefaultMessage()).contains(PROPERTY_NAME); } - @Test - void shouldHaveErrorCode() { - validate(); + @ParameterizedTest + @NullAndEmptySource + void shouldHaveErrorCode(String version) { + var properties = havingBehoerdenschluesselVersion(version); - assertThat(errors.getGlobalError().getCode()).isEqualTo(ERROR_CODE); - } + var errors = validate(properties); - private void givenAmbiguousCodelistePattern() { - when(behoerdenschluesselProperties.getBehoerdenschluessel()).thenReturn(Optional.of(BEHOERDENSCHLUESSEL)); - when(behoerdenschluesselProperties.getBehoerdenschluesselUri()).thenThrow(exception); + assertThat(errors.getFieldError(PROPERTY_NAME).getCode()).isEqualTo(ERROR_CODE); } - } - private void givenProperties(String bs, String bsUri, String bsVersion) { - when(behoerdenschluesselProperties.getBehoerdenschluessel()).thenReturn(Optional.ofNullable(bs)); - when(behoerdenschluesselProperties.getBehoerdenschluesselUri()).thenReturn(Optional.ofNullable(bsUri)); - when(behoerdenschluesselProperties.getBehoerdenschluesselVersion()).thenReturn(Optional.ofNullable(bsVersion)); - } - - private void validate() { - validator.validate(properties, errors); - } - } - - @Nested - class TestGetBehoerdenschluesselProperties { - - @Test - void shouldCreateBehoerdenschluesselProperties() { - try (var mockBehoerdenschluesselProperties = mockConstruction(BehoerdenschluesselProperties.class)) { - validator.getBehoerdenschluesselProperties(XdomeaPropertiesTestFactory.create()); - - assertThat(mockBehoerdenschluesselProperties.constructed()).hasSize(1); + private XdomeaProperties havingBehoerdenschluesselVersion(String version) { + return XdomeaPropertiesTestFactory.createBuilder().behoerdenschluesselVersion(version).build(); } } - @Test - void shouldReturnBehoerdenschluesselProperties() { - var behoerdenschluesselProperties = validator.getBehoerdenschluesselProperties(XdomeaPropertiesTestFactory.create()); - - assertThat(behoerdenschluesselProperties).isNotNull(); + private Errors validate(XdomeaProperties properties) { + return validator.validateObject(properties); } } } diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/XdomeaPropertiesTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/XdomeaPropertiesTest.java deleted file mode 100644 index 36b7a2e053922c14a4bf0d13df50691f9582360a..0000000000000000000000000000000000000000 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/XdomeaPropertiesTest.java +++ /dev/null @@ -1,86 +0,0 @@ -package de.ozgcloud.alfa.export; - -import static org.assertj.core.api.Assertions.*; - -import org.assertj.core.api.*; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.NullAndEmptySource; - -import jakarta.validation.ConstraintViolation; -import jakarta.validation.Validation; -import jakarta.validation.Validator; -import jakarta.validation.ValidatorFactory; - -class XdomeaPropertiesTest { - - private static ValidatorFactory validatorFactory; - private static Validator validator; - - private static final ThrowingConsumer<ConstraintViolation<XdomeaProperties>> comesFromNotBlankValidationContraint = violation -> assertThat( - violation.getMessageTemplate()).contains("NotBlank"); - private static final ThrowingConsumer<ConstraintViolation<XdomeaProperties>> comesFromNotNullValidationContraint = violation -> assertThat( - violation.getMessageTemplate()).contains("NotNull"); - - @BeforeAll - static void init() { - validatorFactory = Validation.buildDefaultValidatorFactory(); - validator = validatorFactory.getValidator(); - } - - @AfterAll - static void cleanup() { - validatorFactory.close(); - } - - @ParameterizedTest - @NullAndEmptySource - void shouldCodelisteUriBeNotBlank(String uri) { - var properties = XdomeaPropertiesTestFactory.create(); - properties.getCodeliste().getFirst().setUri(uri); - - var violations = validator.validate(properties); - - var hasExpectedPropertyPath = getHasPropertyPathAssertion("codeliste[0].uri"); - assertThat(violations).hasSize(1).first().satisfies( - hasExpectedPropertyPath, comesFromNotBlankValidationContraint); - } - - @ParameterizedTest - @NullAndEmptySource - void shouldCodelisteVersionBeNotBlank(String version) { - var properties = XdomeaPropertiesTestFactory.create(); - properties.getCodeliste().getFirst().setVersion(version); - - var violations = validator.validate(properties); - - var hasExpectedPropertyPath = getHasPropertyPathAssertion("codeliste[0].version"); - assertThat(violations).hasSize(1).first().satisfies( - hasExpectedPropertyPath, comesFromNotBlankValidationContraint); - } - - @Test - void shouldCodelistePatternBeNotNull() { - var properties = XdomeaPropertiesTestFactory.create(); - properties.getCodeliste().getFirst().setPattern(null); - - var violations = validator.validate(properties); - - var hasExpectedPropertyPath = getHasPropertyPathAssertion("codeliste[0].pattern"); - assertThat(violations).hasSize(1).first().satisfies( - hasExpectedPropertyPath, comesFromNotNullValidationContraint); - } - - @Test - void shouldPassValidation() { - var violations = validator.validate(XdomeaPropertiesTestFactory.create()); - - assertThat(violations).isEmpty(); - } - - private ThrowingConsumer<ConstraintViolation<XdomeaProperties>> getHasPropertyPathAssertion(String propertyPath) { - return violation -> assertThat(violation.getPropertyPath()).hasToString(propertyPath); - } -} diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/XdomeaPropertiesTestFactory.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/XdomeaPropertiesTestFactory.java index 4440933c7ac0a23fe0be6d2cc8aefaa986f4440e..78d786011aeedec05d51b6407305c2fb3769a626 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/XdomeaPropertiesTestFactory.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/XdomeaPropertiesTestFactory.java @@ -1,11 +1,7 @@ package de.ozgcloud.alfa.export; -import java.util.List; -import java.util.regex.Pattern; - import com.thedeanda.lorem.LoremIpsum; -import de.ozgcloud.alfa.export.XdomeaProperties.Codeliste; import de.ozgcloud.alfa.export.XdomeaProperties.XdomeaPropertiesBuilder; public class XdomeaPropertiesTestFactory { @@ -14,16 +10,6 @@ public class XdomeaPropertiesTestFactory { public static final String BEHOERDENSCHLUESSEL_URI = LoremIpsum.getInstance().getUrl(); public static final String BEHOERDENSCHLUESSEL_VERSION = LoremIpsum.getInstance().getWords(1); - public static final String CODELISTE_1_URI = LoremIpsum.getInstance().getUrl(); - public static final String CODELISTE_1_VERSION = LoremIpsum.getInstance().getWords(1); - public static final Pattern CODELISTE_1_PATTERN = Pattern.compile("\\d{3}"); - public static final String CODELISTE_1_VALID_BEHOERDENSCHLUESSEL = "123"; - - public static final String CODELISTE_2_URI = LoremIpsum.getInstance().getUrl(); - public static final String CODELISTE_2_VERSION = LoremIpsum.getInstance().getWords(1); - public static final Pattern CODELISTE_2_PATTERN = Pattern.compile("\\d{7}"); - public static final String CODELISTE_2_VALID_BEHOERDENSCHLUESSEL = "1234567"; - public static XdomeaProperties create() { return createBuilder().build(); } @@ -32,15 +18,6 @@ public class XdomeaPropertiesTestFactory { return new XdomeaPropertiesBuilder() .behoerdenschluessel(BEHOERDENSCHLUESSEL) .behoerdenschluesselUri(BEHOERDENSCHLUESSEL_URI) - .behoerdenschluesselVersion(BEHOERDENSCHLUESSEL_VERSION) - .codeliste(List.of(createCodeliste1(), createCodeliste2())); - } - - public static Codeliste createCodeliste1() { - return Codeliste.builder().uri(CODELISTE_1_URI).version(CODELISTE_1_VERSION).pattern(CODELISTE_1_PATTERN).build(); - } - - public static Codeliste createCodeliste2() { - return Codeliste.builder().uri(CODELISTE_2_URI).version(CODELISTE_2_VERSION).pattern(CODELISTE_2_PATTERN).build(); + .behoerdenschluesselVersion(BEHOERDENSCHLUESSEL_VERSION); } } diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/KopfCreatorTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/KopfCreatorTest.java index bd0658f74bebe29c54d6eaf1b1b8bea78899b5e0..ad2a07d492a41a25956fe6032f940df5b82c0f9e 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/KopfCreatorTest.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/KopfCreatorTest.java @@ -1,13 +1,12 @@ package de.ozgcloud.alfa.vorgang; +import static de.ozgcloud.alfa.export.XdomeaPropertiesTestFactory.*; import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import java.time.ZoneOffset; import java.time.ZonedDateTime; -import java.util.Optional; -import java.util.UUID; import javax.xml.datatype.XMLGregorianCalendar; @@ -15,6 +14,9 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.NullAndEmptySource; +import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockedStatic; import org.mockito.Spy; @@ -23,9 +25,7 @@ import com.thedeanda.lorem.LoremIpsum; import de.ozgcloud.alfa.common.DateConverter; import de.ozgcloud.alfa.common.UUIDConverter; -import de.ozgcloud.alfa.export.BehoerdenschluesselProperties; import de.ozgcloud.alfa.export.XdomeaProperties; -import de.ozgcloud.alfa.export.XdomeaPropertiesTestFactory; import de.xoev.xdomea.BehoerdenkennungType; import de.xoev.xdomea.Code; import de.xoev.xdomea.KontaktType; @@ -36,11 +36,12 @@ import de.xoev.xdomea.SystemType; class KopfCreatorTest { - private final XdomeaProperties xDomeaProperties = XdomeaPropertiesTestFactory.create(); @Spy - private KopfCreator creator = new KopfCreator(xDomeaProperties); + @InjectMocks + private KopfCreator creator; + @Mock - private DateConverter dateConverter; + private XdomeaProperties xdomeaProperties; @Nested class TestCreateKopf { @@ -170,9 +171,6 @@ class KopfCreatorTest { @Nested class TestCreateAbsender { - @Mock - private BehoerdenkennungType behoerdenkennungType; - @Test void shouldCallCreateKontaktType() { creator.createAbsender(ZustaendigeStelleTestFactory.ORGANISATIONSEINHEITEN_ID); @@ -194,45 +192,24 @@ class KopfCreatorTest { @Nested class TestCreateKontaktType { - @Mock - private BehoerdenschluesselProperties behoerdenschluesselProperties; - - @BeforeEach - void init() { - doReturn(behoerdenschluesselProperties).when(creator).getBehoerdenschluesselProperties(xDomeaProperties); - } - - @Test - void shouldGetBehoerdenschluesselProperties() { - creator.createKontaktType(); - - verify(creator).getBehoerdenschluesselProperties(xDomeaProperties); - } - - @Test - void shouldGetBehoerdenschluessel() { - creator.createKontaktType(); - - verify(behoerdenschluesselProperties).getBehoerdenschluessel(); - } - @Nested class OnBehoerdenschluesselNotSet { - @BeforeEach - void init() { - when(behoerdenschluesselProperties.getBehoerdenschluessel()).thenReturn(Optional.empty()); - } + @ParameterizedTest + @NullAndEmptySource + void shouldNotCreateBehoerdenkennung(String behoerdenschluessel) { + when(xdomeaProperties.getBehoerdenschluessel()).thenReturn(behoerdenschluessel); - @Test - void shouldNotCreateBehoerdenkennung() { creator.createKontaktType(); - verify(creator, never()).createBehoerdenkennung(behoerdenschluesselProperties); + verify(creator, never()).createBehoerdenkennung(); } - @Test - void shouldNotSetBehoerdenkennung() { + @ParameterizedTest + @NullAndEmptySource + void shouldNotSetBehoerdenkennung(String behoerdenschluessel) { + when(xdomeaProperties.getBehoerdenschluessel()).thenReturn(behoerdenschluessel); + var kontaktType = creator.createKontaktType(); assertThat(kontaktType.getBehoerdenkennung()).isNull(); @@ -242,21 +219,19 @@ class KopfCreatorTest { @Nested class OnBehoerdenschluesselSet { - private static final String BEHOERDENSCHLUESSEL = UUID.randomUUID().toString(); - private static final BehoerdenkennungType expectedValue = new BehoerdenkennungType(); @BeforeEach void init() { - when(behoerdenschluesselProperties.getBehoerdenschluessel()).thenReturn(Optional.of(BEHOERDENSCHLUESSEL)); - doReturn(expectedValue).when(creator).createBehoerdenkennung(behoerdenschluesselProperties); + when(xdomeaProperties.getBehoerdenschluessel()).thenReturn(BEHOERDENSCHLUESSEL); + doReturn(expectedValue).when(creator).createBehoerdenkennung(); } @Test void shouldCreateBehoerdenkennung() { creator.createKontaktType(); - verify(creator).createBehoerdenkennung(behoerdenschluesselProperties); + verify(creator).createBehoerdenkennung(); } @Test @@ -268,26 +243,6 @@ class KopfCreatorTest { } } - @Nested - class TestGetBehoerdenschluesselProperties { - - @Test - void shouldCreateBehoerdenschluesselProperties() { - try (var mockBehoerdenschluesselProperties = mockConstruction(BehoerdenschluesselProperties.class)) { - creator.getBehoerdenschluesselProperties(XdomeaPropertiesTestFactory.create()); - - assertThat(mockBehoerdenschluesselProperties.constructed()).hasSize(1); - } - } - - @Test - void shouldReturnBehoerdenschluesselProperties() { - var behoerdenschluesselProperties = creator.getBehoerdenschluesselProperties(XdomeaPropertiesTestFactory.create()); - - assertThat(behoerdenschluesselProperties).isNotNull(); - } - } - @Nested class TestCreateOrganisationseinheitType { @@ -303,24 +258,22 @@ class KopfCreatorTest { class TestCreateBehoerdenkennung { private final Code expectedBehoerdenschluessel = new Code(); - @Mock - private BehoerdenschluesselProperties behoerdenschluesselProperties; @BeforeEach void init() { - doReturn(expectedBehoerdenschluessel).when(creator).createBehoerdenschluessel(behoerdenschluesselProperties); + doReturn(expectedBehoerdenschluessel).when(creator).createBehoerdenschluessel(); } @Test void shouldcreateBehoerdenschluessel() { - creator.createBehoerdenkennung(behoerdenschluesselProperties); + creator.createBehoerdenkennung(); - verify(creator).createBehoerdenschluessel(behoerdenschluesselProperties); + verify(creator).createBehoerdenschluessel(); } @Test void shouldSetBehoerdenschluessel() { - var behoerdenkennungType = creator.createBehoerdenkennung(behoerdenschluesselProperties); + var behoerdenkennungType = creator.createBehoerdenkennung(); assertThat(behoerdenkennungType.getBehoerdenschluessel()).isEqualTo(expectedBehoerdenschluessel); } @@ -329,37 +282,30 @@ class KopfCreatorTest { @Nested class TestCreateBehoerdenschlussel { - private static final String BEHOERDENSCHLUESSEL = LoremIpsum.getInstance().getWords(1); - private static final String BEHOERDENSCHLUESSEL_URI = LoremIpsum.getInstance().getUrl(); - private static final String BEHOERDENSCHLUESSEL_VERSION = LoremIpsum.getInstance().getWords(1); - - @Mock - private BehoerdenschluesselProperties behoerdenschluesselProperties; - @BeforeEach void init() { - when(behoerdenschluesselProperties.getBehoerdenschluessel()).thenReturn(Optional.of(BEHOERDENSCHLUESSEL)); - when(behoerdenschluesselProperties.getBehoerdenschluesselUri()).thenReturn(Optional.of(BEHOERDENSCHLUESSEL_URI)); - when(behoerdenschluesselProperties.getBehoerdenschluesselVersion()).thenReturn(Optional.of(BEHOERDENSCHLUESSEL_VERSION)); + when(xdomeaProperties.getBehoerdenschluessel()).thenReturn(BEHOERDENSCHLUESSEL); + when(xdomeaProperties.getBehoerdenschluesselUri()).thenReturn(BEHOERDENSCHLUESSEL_URI); + when(xdomeaProperties.getBehoerdenschluesselVersion()).thenReturn(BEHOERDENSCHLUESSEL_VERSION); } @Test void shouldSetCode() { - var behoerdenschlussel = creator.createBehoerdenschluessel(behoerdenschluesselProperties); + var behoerdenschlussel = creator.createBehoerdenschluessel(); assertThat(behoerdenschlussel.getCode()).isEqualTo(BEHOERDENSCHLUESSEL); } @Test void shouldSetListURI() { - var behoerdenschlussel = creator.createBehoerdenschluessel(behoerdenschluesselProperties); + var behoerdenschlussel = creator.createBehoerdenschluessel(); assertThat(behoerdenschlussel.getListURI()).isEqualTo(BEHOERDENSCHLUESSEL_URI); } @Test void shouldSetListVersionID() { - var behoerdenschlussel = creator.createBehoerdenschluessel(behoerdenschluesselProperties); + var behoerdenschlussel = creator.createBehoerdenschluessel(); assertThat(behoerdenschlussel.getListVersionID()).isEqualTo(BEHOERDENSCHLUESSEL_VERSION); } diff --git a/alfa-xdomea/src/test/resources/application-itcase.yaml b/alfa-xdomea/src/test/resources/application-itcase.yaml index aaabd1166c0a4921519a69a2a278982c50b0b2e8..c6f85b1e94d61d1ee6c5992b97cbac70b7260e24 100644 --- a/alfa-xdomea/src/test/resources/application-itcase.yaml +++ b/alfa-xdomea/src/test/resources/application-itcase.yaml @@ -1,15 +1,5 @@ ozgcloud: xdomea: - behoerdenschluessel: 12345678 - behoerdenschluessel-uri: - behoerdenschluessel-version: - codeliste: - - uri: urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:kreis - version: 2021-07-31 - pattern: \d{5} - - uri: urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:ags - version: 2024-06-30 - pattern: \d{8} - - uri: urn:de:bund:destatis:bevoelkerungsstatistik:schluessel:rs - version: 2024-06-30 - pattern: \d{12} \ No newline at end of file + behoerdenschluessel: ABC + behoerdenschluesselUri: http://meine.behoer.de + behoerdenschluesselVersion: 1.0.15b \ No newline at end of file