diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangTestFactory.java index f12e5395d16484c5be7abb8146552a5649280842..706f7dc3643035274f9b9470fc721b74d7bb3e61 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangTestFactory.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangTestFactory.java @@ -41,6 +41,7 @@ public class VorgangWithEingangTestFactory { .name(NAME) .status(STATUS) .nummer(NUMMER) + .aktenzeichen(AKTENZEICHEN) .createdAt(CREATED_AT) .hasNewPostfachNachricht(true) .header(VorgangHeadTestFactory.create()) diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/AbgabeCreator.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/AbgabeCreator.java index 94914c9bb45b167dd4d4577b0522566f62495c1f..3f7b8db4492f288ad2b9bceb2c7dc0ab496294f2 100644 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/AbgabeCreator.java +++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/AbgabeCreator.java @@ -3,6 +3,7 @@ package de.ozgcloud.alfa.export; import java.util.stream.Stream; import de.xoev.xdomea.AbgabeAbgabe0401; +import de.xoev.xdomea.AkteType; import de.xoev.xdomea.DokumentType; import de.xoev.xdomea.NkAbgabeType; import de.xoev.xdomea.VorgangType; @@ -34,6 +35,11 @@ class AbgabeCreator { return this; } + public AbgabeCreator withAkteType(AkteType akteType) { + getSchriftgutobjekt().setAkte(akteType); + return this; + } + public AbgabeAbgabe0401 create() { return abgabeType; } diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/ExportService.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/ExportService.java index 3f5690be1f58840a358a13f484043a279d3ed3ff..7f63a5a48685328ddd6f41ca86d2f1bd52df6e2b 100644 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/ExportService.java +++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/ExportService.java @@ -51,6 +51,7 @@ class ExportService { var abgabe = AbgabeCreator.createAbgabeCreator() .withKopf(exportVorgangService.createKopf(vorgangWithEingang)) .withVorgang(exportVorgangService.createVorgangType(vorgangWithEingang)) + .withAkteType(exportVorgangService.createAkteType(vorgangWithEingang)) .withDokumentTypes( exportFileService.createDokumentTypes(ozgFiles.stream(), vorgangWithEingang.getEingang().getHeader().getFormEngineName())) .create(); diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/ExportVorgangService.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/ExportVorgangService.java index e9065991f2beabac2478595cdfb3dafab372f6fd..086a3097893f17956ec76a0e291a2bf5ad99d207 100644 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/ExportVorgangService.java +++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/vorgang/ExportVorgangService.java @@ -1,8 +1,15 @@ package de.ozgcloud.alfa.vorgang; +import java.util.Optional; +import java.util.UUID; + +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import de.xoev.xdomea.AkteType; +import de.xoev.xdomea.AllgemeineMetadatenType; +import de.xoev.xdomea.IdentifikationObjektType; import de.xoev.xdomea.NkAbgabeType; import de.xoev.xdomea.VorgangType; @@ -29,4 +36,23 @@ public class ExportVorgangService { public NkAbgabeType createKopf(VorgangWithEingang vorgangWithEingang) { return kopfCreator.createKopf(vorgangWithEingang); } + + public AkteType createAkteType(VorgangWithEingang vorgangWithEingang) { + var akteType = new AkteType(); + akteType.setIdentifikation(createIdentifikationObjektType()); + akteType.setAllgemeineMetadaten(createAllgemeineMetadatenType(vorgangWithEingang)); + return akteType; + } + + IdentifikationObjektType createIdentifikationObjektType() { + var identifikationObjektType = new IdentifikationObjektType(); + identifikationObjektType.setID(UUID.randomUUID().toString()); + return identifikationObjektType; + } + + AllgemeineMetadatenType createAllgemeineMetadatenType(VorgangWithEingang vorgangWithEingang) { + var allgemeineMetadatenType = new AllgemeineMetadatenType(); + allgemeineMetadatenType.setKennzeichen(Optional.ofNullable(vorgangWithEingang.getAktenzeichen()).orElse(StringUtils.EMPTY)); + return allgemeineMetadatenType; + } } diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/AbgabeCreatorTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/AbgabeCreatorTest.java index 9e1524d0fd79e5b379471b53e09b436307a0ef7b..7efbe6cbcca7da55609df8d49d136d518d106134 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/AbgabeCreatorTest.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/AbgabeCreatorTest.java @@ -6,6 +6,7 @@ import java.util.List; import org.junit.jupiter.api.Test; +import de.xoev.xdomea.AkteType; import de.xoev.xdomea.DokumentType; import de.xoev.xdomea.NkAbgabeType; import de.xoev.xdomea.VorgangType; @@ -56,4 +57,13 @@ public class AbgabeCreatorTest { void shouldThrowExceptionIfVorgangNotSet() { assertThatThrownBy(() -> abgabeCreator.withDokumentTypes(dokumentTypes.stream())).isExactlyInstanceOf(IllegalStateException.class); } + + @Test + void shouldSetAkteType() { + var akteType = new AkteType(); + + var abgabeType = abgabeCreator.withAkteType(akteType).create(); + + assertThat(abgabeType.getSchriftgutobjekt().get(0).getAkte()).isEqualTo(akteType); + } } diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/AllgemeineMetadatenTypeTestFactory.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/AllgemeineMetadatenTypeTestFactory.java index 380ee3058d81429d22396a87b9d0f5948623419a..fc7dd301486edbb9fc0ba13bef92329bdf208872 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/AllgemeineMetadatenTypeTestFactory.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/AllgemeineMetadatenTypeTestFactory.java @@ -1,10 +1,16 @@ package de.ozgcloud.alfa.export; +import com.thedeanda.lorem.LoremIpsum; + import de.xoev.xdomea.AllgemeineMetadatenType; public class AllgemeineMetadatenTypeTestFactory { + public static final String KENNZEICHEN = LoremIpsum.getInstance().getWords(1); + public static AllgemeineMetadatenType create() { - return new AllgemeineMetadatenType(); + var allgemeineMetadatenType = new AllgemeineMetadatenType(); + allgemeineMetadatenType.setKennzeichen(KENNZEICHEN); + return allgemeineMetadatenType; } } diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportServiceTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportServiceTest.java index 342b1d2e6d5166a7062787664826cfb032e5bd86..5cb5123e7fb35b8ec94ae9a8a4c42a634e4e80c8 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportServiceTest.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportServiceTest.java @@ -40,6 +40,7 @@ import de.ozgcloud.alfa.vorgang.VorgangWithEingang; import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory; import de.ozgcloud.common.errorhandling.TechnicalException; import de.xoev.xdomea.AbgabeAbgabe0401; +import de.xoev.xdomea.AkteType; import de.xoev.xdomea.DokumentType; import de.xoev.xdomea.NkAbgabeType; import de.xoev.xdomea.VorgangType; @@ -186,6 +187,13 @@ class ExportServiceTest { verify(exportFileService).createDokumentTypes(ozgFiles, EingangHeaderTestFactory.FORM_ENGINE_NAME); } + @Test + void shouldCreateAkteType() { + callService(); + + verify(exportVorgangService).createAkteType(vorgang); + } + @Test void shouldSetKopf() { callService(); @@ -207,6 +215,16 @@ class ExportServiceTest { verify(abgabeCreator).withDokumentTypes(dokumentTypes); } + @Test + void shouldSetAkteType() { + var akteType = new AkteType(); + when(exportVorgangService.createAkteType(vorgang)).thenReturn(akteType); + + callService(); + + verify(abgabeCreator).withAkteType(akteType); + } + @Test void shouldCreateAbgabe() { callService(); diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/IdentifikationObjektTypeTestFactory.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/IdentifikationObjektTypeTestFactory.java index 84353f13e976b9de5d5bf24aed2483a0ff4142e6..9946765cf3e8bb56674da6ed13f4d089b7f3c084 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/IdentifikationObjektTypeTestFactory.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/IdentifikationObjektTypeTestFactory.java @@ -1,10 +1,16 @@ package de.ozgcloud.alfa.export; +import java.util.UUID; + import de.xoev.xdomea.IdentifikationObjektType; public class IdentifikationObjektTypeTestFactory { + public static final String ID = UUID.randomUUID().toString(); + public static IdentifikationObjektType create() { - return new IdentifikationObjektType(); + var identifikationObjektType = new IdentifikationObjektType(); + identifikationObjektType.setID(ID); + return identifikationObjektType; } } diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/ExportVorgangServiceTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/ExportVorgangServiceTest.java index 9601946a7a579c05ada5c2f21dc6dc73f0b3537d..4bf5f5eaf384761f16046c10c23662a344ecabf8 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/ExportVorgangServiceTest.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/vorgang/ExportVorgangServiceTest.java @@ -4,11 +4,15 @@ import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; +import de.ozgcloud.alfa.export.AllgemeineMetadatenTypeTestFactory; +import de.ozgcloud.alfa.export.IdentifikationObjektTypeTestFactory; + public class ExportVorgangServiceTest { private final static String VORGANG_ID = "DUMMY_ID"; @@ -21,20 +25,91 @@ public class ExportVorgangServiceTest { @Mock private VorgangService vorgangService; - @BeforeEach - void init() { - when(vorgangService.findVorgangWithEingang(anyString())).thenReturn(vorgang); + @Nested + class TestGetVorgang { + + @BeforeEach + void init() { + when(vorgangService.findVorgangWithEingang(VORGANG_ID)).thenReturn(vorgang); + } + + @Test + void shouldCallVorgangService() { + exportVorgangService.getVorgang(VORGANG_ID); + + verify(vorgangService).findVorgangWithEingang(VORGANG_ID); + } + + @Test + void shouldReturnVorgangWithEingang() { + assertThat(exportVorgangService.getVorgang(VORGANG_ID)).isEqualTo(vorgang); + } + } + + @Nested + class TestCreateAkteType { + + @Test + void shouldCallCreateIdentifikationObjektType() { + exportVorgangService.createAkteType(vorgang); + + verify(exportVorgangService).createIdentifikationObjektType(); + } + + @Test + void shouldSetIdentifikationObjektType() { + var identifikationObjektType = IdentifikationObjektTypeTestFactory.create(); + doReturn(identifikationObjektType).when(exportVorgangService).createIdentifikationObjektType(); + + var akteType = exportVorgangService.createAkteType(vorgang); + + assertThat(akteType.getIdentifikation()).isEqualTo(identifikationObjektType); + } + + @Test + void shouldCallCreateAllgemeineMetadatenType() { + exportVorgangService.createAkteType(vorgang); + + verify(exportVorgangService).createAllgemeineMetadatenType(vorgang); + } + + @Test + void shouldSetAllgemeineMetadatenType() { + var allgemeineMetadatenType = AllgemeineMetadatenTypeTestFactory.create(); + doReturn(allgemeineMetadatenType).when(exportVorgangService).createAllgemeineMetadatenType(vorgang); + + var akteType = exportVorgangService.createAkteType(vorgang); + + assertThat(akteType.getAllgemeineMetadaten()).isEqualTo(allgemeineMetadatenType); + } } - @Test - void shouldCallVorgangService() { - exportVorgangService.getVorgang(VORGANG_ID); + @Nested + class TestCreateIdentifikationObjektType { - verify(vorgangService).findVorgangWithEingang(VORGANG_ID); + @Test + void shouldSetID() { + var identifikationObjektType = exportVorgangService.createIdentifikationObjektType(); + + assertThat(identifikationObjektType.getID()).isNotBlank(); + } } - @Test - void shouldReturnVorgangWithEingang() { - assertThat(exportVorgangService.getVorgang(VORGANG_ID)).isEqualTo(vorgang); + @Nested + class TestCreateAllgemeineMetadatenType { + + @Test + void shouldSetKennzeichen() { + var allgemeineMetadatenType = exportVorgangService.createAllgemeineMetadatenType(vorgang); + + assertThat(allgemeineMetadatenType.getKennzeichen()).isEqualTo(VorgangHeaderTestFactory.AKTENZEICHEN); + } + + @Test + void shouldSetEmptyKennzeichen() { + var akteType = exportVorgangService.createAkteType(VorgangWithEingangTestFactory.createBuilder().aktenzeichen(null).build()); + + assertThat(akteType.getAllgemeineMetadaten().getKennzeichen()).isEmpty(); + } } }