Skip to content
Snippets Groups Projects
Commit 806fe94d authored by OZGCloud's avatar OZGCloud
Browse files

OZG-5284 Export Attachments of PostfachMails

parent 5881ca9a
Branches
Tags
No related merge requests found
...@@ -54,6 +54,7 @@ class ExportService { ...@@ -54,6 +54,7 @@ class ExportService {
ExportData collectExportData(String vorgangId, String filenameId) { ExportData collectExportData(String vorgangId, String filenameId) {
var vorgang = exportVorgangService.getVorgang(vorgangId); var vorgang = exportVorgangService.getVorgang(vorgangId);
var kommentarsData = exportKommentarService.createExportData(vorgang); var kommentarsData = exportKommentarService.createExportData(vorgang);
var postfachMailData = exportNachrichtService.createExportData(vorgang);
var representations = exportFileService.getRepresentations(vorgang).toList(); var representations = exportFileService.getRepresentations(vorgang).toList();
var attachments = exportFileService.getAttachments(vorgang).toList(); var attachments = exportFileService.getAttachments(vorgang).toList();
var formEngineName = getFormEngineName(vorgang); var formEngineName = getFormEngineName(vorgang);
...@@ -65,9 +66,13 @@ class ExportService { ...@@ -65,9 +66,13 @@ class ExportService {
.withAttachments(exportFileService.createDokumentTypes(attachments, formEngineName).toList()) .withAttachments(exportFileService.createDokumentTypes(attachments, formEngineName).toList())
.withHistorie(exportHistorieService.createHistorienProtokollInformationTypes(vorgang).toList()) .withHistorie(exportHistorieService.createHistorienProtokollInformationTypes(vorgang).toList())
.withKommentare(kommentarsData.getDokumentTypes()) .withKommentare(kommentarsData.getDokumentTypes())
.withPostfachMails(exportNachrichtService.createDokumentTypes(vorgang).toList()) .withPostfachMails(postfachMailData.getDokumentTypes())
.build(); .build();
var exportFiles = Stream.of(representations.stream(), attachments.stream(), kommentarsData.getAttachments().stream()).flatMap(s -> s) var exportFiles = Stream
.of(representations.stream(), attachments.stream(),
kommentarsData.getAttachments().stream(),
postfachMailData.getAttachments().stream())
.flatMap(s -> s)
.toList(); .toList();
return ExportData.builder().abgabe(abgabe).exportFilename(buildXmlFilename(filenameId)).exportFiles(exportFiles).build(); return ExportData.builder().abgabe(abgabe).exportFilename(buildXmlFilename(filenameId)).exportFiles(exportFiles).build();
} }
......
package de.ozgcloud.alfa.postfach; package de.ozgcloud.alfa.postfach;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Stream; import java.util.stream.Stream;
...@@ -9,6 +10,7 @@ import de.ozgcloud.alfa.common.binaryfile.BinaryFileService; ...@@ -9,6 +10,7 @@ import de.ozgcloud.alfa.common.binaryfile.BinaryFileService;
import de.ozgcloud.alfa.common.file.OzgFile; import de.ozgcloud.alfa.common.file.OzgFile;
import de.ozgcloud.alfa.common.user.UserProfile; import de.ozgcloud.alfa.common.user.UserProfile;
import de.ozgcloud.alfa.common.user.UserService; import de.ozgcloud.alfa.common.user.UserService;
import de.ozgcloud.alfa.postfach.PostfachMailExportData.PostfachMailExportDataBuilder;
import de.ozgcloud.alfa.vorgang.VorgangWithEingang; import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
import de.xoev.xdomea.DokumentType; import de.xoev.xdomea.DokumentType;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -20,15 +22,22 @@ public class ExportNachrichtService { ...@@ -20,15 +22,22 @@ public class ExportNachrichtService {
private final BinaryFileService binaryFileService; private final BinaryFileService binaryFileService;
private final UserService userService; private final UserService userService;
public Stream<DokumentType> createDokumentTypes(VorgangWithEingang vorgang) { public PostfachMailExportData createExportData(VorgangWithEingang vorgang) {
var postfachMails = postfachMailService.getAll(vorgang.getId()); var builder = PostfachMailExportData.builder();
return postfachMails.map(mail -> buildDokumentType(mail, vorgang)); postfachMailService.getAll(vorgang.getId()).forEach(mail -> addPostfachMailToBuilder(mail, builder, vorgang));
return builder.build();
} }
DokumentType buildDokumentType(PostfachMail postfachMail, VorgangWithEingang vorgang) { void addPostfachMailToBuilder(PostfachMail postfachMail, PostfachMailExportDataBuilder builder, VorgangWithEingang vorgang) {
var attachments = getAttachments(postfachMail).toList();
builder.attachments(attachments);
builder.dokumentType(buildDokumentType(postfachMail, attachments, vorgang));
}
DokumentType buildDokumentType(PostfachMail postfachMail, List<OzgFile> attachments, VorgangWithEingang vorgang) {
return DokumentTypeBuilder.builder() return DokumentTypeBuilder.builder()
.withPostfachMail(postfachMail) .withPostfachMail(postfachMail)
.withOzgFiles(getAttachments(postfachMail).toList()) .withOzgFiles(attachments)
.withUserProfile(getUserProfile(postfachMail)) .withUserProfile(getUserProfile(postfachMail))
.withVorgang(vorgang) .withVorgang(vorgang)
.build(); .build();
......
package de.ozgcloud.alfa.postfach;
import java.util.List;
import de.ozgcloud.alfa.common.file.OzgFile;
import de.xoev.xdomea.DokumentType;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Singular;
@Builder
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class PostfachMailExportData {
@Singular
private List<DokumentType> dokumentTypes;
@Singular
private List<OzgFile> attachments;
}
...@@ -36,6 +36,8 @@ import de.ozgcloud.alfa.kommentar.ExportKommentarService; ...@@ -36,6 +36,8 @@ import de.ozgcloud.alfa.kommentar.ExportKommentarService;
import de.ozgcloud.alfa.kommentar.KommentarsExportData; import de.ozgcloud.alfa.kommentar.KommentarsExportData;
import de.ozgcloud.alfa.kommentar.KommentarsExportDataTestFactory; import de.ozgcloud.alfa.kommentar.KommentarsExportDataTestFactory;
import de.ozgcloud.alfa.postfach.ExportNachrichtService; import de.ozgcloud.alfa.postfach.ExportNachrichtService;
import de.ozgcloud.alfa.postfach.PostfachMailExportData;
import de.ozgcloud.alfa.postfach.PostfachMailExportDataTestFactory;
import de.ozgcloud.alfa.vorgang.EingangHeaderTestFactory; import de.ozgcloud.alfa.vorgang.EingangHeaderTestFactory;
import de.ozgcloud.alfa.vorgang.EingangTestFactory; import de.ozgcloud.alfa.vorgang.EingangTestFactory;
import de.ozgcloud.alfa.vorgang.ExportVorgangService; import de.ozgcloud.alfa.vorgang.ExportVorgangService;
...@@ -132,10 +134,10 @@ class ExportServiceTest { ...@@ -132,10 +134,10 @@ class ExportServiceTest {
private final List<OzgFile> attachments = List.of(OzgFileTestFactory.create()); private final List<OzgFile> attachments = List.of(OzgFileTestFactory.create());
private final List<DokumentType> representationsDokumentTypes = List.of(DokumentTypeTestFactory.create()); private final List<DokumentType> representationsDokumentTypes = List.of(DokumentTypeTestFactory.create());
private final List<DokumentType> attachmentsDokumentTypes = List.of(DokumentTypeTestFactory.create()); private final List<DokumentType> attachmentsDokumentTypes = List.of(DokumentTypeTestFactory.create());
private final List<DokumentType> postfachMailsDokumentTypes = List.of(DokumentTypeTestFactory.create());
private final List<HistorienProtokollInformationType> historienProtokollInformationTypes = List.of( private final List<HistorienProtokollInformationType> historienProtokollInformationTypes = List.of(
HistorienProtokollInformationTypeTestFactory.create()); HistorienProtokollInformationTypeTestFactory.create());
private final KommentarsExportData kommentarsExportData = KommentarsExportDataTestFactory.create(); private final KommentarsExportData kommentarsExportData = KommentarsExportDataTestFactory.create();
private final PostfachMailExportData postfachMailExportData = PostfachMailExportDataTestFactory.create();
@Mock @Mock
private XdomeaNachrichtBuilder xdomeaNachrichtBuilder; private XdomeaNachrichtBuilder xdomeaNachrichtBuilder;
...@@ -170,7 +172,7 @@ class ExportServiceTest { ...@@ -170,7 +172,7 @@ class ExportServiceTest {
when(xdomeaNachrichtBuilder.withAttachments(attachmentsDokumentTypes)).thenReturn(xdomeaNachrichtBuilder); when(xdomeaNachrichtBuilder.withAttachments(attachmentsDokumentTypes)).thenReturn(xdomeaNachrichtBuilder);
when(xdomeaNachrichtBuilder.withHistorie(historienProtokollInformationTypes)).thenReturn(xdomeaNachrichtBuilder); when(xdomeaNachrichtBuilder.withHistorie(historienProtokollInformationTypes)).thenReturn(xdomeaNachrichtBuilder);
when(xdomeaNachrichtBuilder.withKommentare(kommentarsExportData.getDokumentTypes())).thenReturn(xdomeaNachrichtBuilder); when(xdomeaNachrichtBuilder.withKommentare(kommentarsExportData.getDokumentTypes())).thenReturn(xdomeaNachrichtBuilder);
when(xdomeaNachrichtBuilder.withPostfachMails(postfachMailsDokumentTypes)).thenReturn(xdomeaNachrichtBuilder); when(xdomeaNachrichtBuilder.withPostfachMails(postfachMailExportData.getDokumentTypes())).thenReturn(xdomeaNachrichtBuilder);
xdomeaNachrichtBuilderMockedStatic.when(XdomeaNachrichtBuilder::builder).thenReturn(xdomeaNachrichtBuilder); xdomeaNachrichtBuilderMockedStatic.when(XdomeaNachrichtBuilder::builder).thenReturn(xdomeaNachrichtBuilder);
when(xdomeaNachrichtBuilder.build()).thenReturn(abgabe); when(xdomeaNachrichtBuilder.build()).thenReturn(abgabe);
} }
...@@ -195,7 +197,7 @@ class ExportServiceTest { ...@@ -195,7 +197,7 @@ class ExportServiceTest {
} }
private void setUpExportNachrichtService() { private void setUpExportNachrichtService() {
when(exportNachrichtService.createDokumentTypes(vorgang)).thenReturn(postfachMailsDokumentTypes.stream()); when(exportNachrichtService.createExportData(vorgang)).thenReturn(postfachMailExportData);
} }
@AfterEach @AfterEach
...@@ -260,10 +262,10 @@ class ExportServiceTest { ...@@ -260,10 +262,10 @@ class ExportServiceTest {
} }
@Test @Test
void shouldCreatePostfachMailsDokumentTypes() { void shouldCreatePostfachMailsExportData() {
callService(); callService();
verify(exportNachrichtService).createDokumentTypes(vorgang); verify(exportNachrichtService).createExportData(vorgang);
} }
@Test @Test
...@@ -305,7 +307,7 @@ class ExportServiceTest { ...@@ -305,7 +307,7 @@ class ExportServiceTest {
void shouldSetPostfachMails() { void shouldSetPostfachMails() {
callService(); callService();
verify(xdomeaNachrichtBuilder).withPostfachMails(postfachMailsDokumentTypes); verify(xdomeaNachrichtBuilder).withPostfachMails(postfachMailExportData.getDokumentTypes());
} }
@Test @Test
...@@ -348,10 +350,11 @@ class ExportServiceTest { ...@@ -348,10 +350,11 @@ class ExportServiceTest {
var exportData = callService(); var exportData = callService();
assertThat(exportData.getExportFiles()) assertThat(exportData.getExportFiles())
.hasSize(3) .hasSize(4)
.containsAll(representations) .containsAll(representations)
.containsAll(attachments) .containsAll(attachments)
.containsAll(kommentarsExportData.getAttachments()); .containsAll(kommentarsExportData.getAttachments())
.containsAll(postfachMailExportData.getAttachments());
} }
@Test @Test
......
...@@ -25,7 +25,7 @@ import de.ozgcloud.alfa.common.user.UserProfile; ...@@ -25,7 +25,7 @@ import de.ozgcloud.alfa.common.user.UserProfile;
import de.ozgcloud.alfa.common.user.UserProfileTestFactory; import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
import de.ozgcloud.alfa.common.user.UserService; import de.ozgcloud.alfa.common.user.UserService;
import de.ozgcloud.alfa.export.DokumentTypeTestFactory; import de.ozgcloud.alfa.export.DokumentTypeTestFactory;
import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory; import de.ozgcloud.alfa.postfach.PostfachMailExportData.PostfachMailExportDataBuilder;
import de.ozgcloud.alfa.vorgang.VorgangWithEingang; import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory; import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
import de.xoev.xdomea.DokumentType; import de.xoev.xdomea.DokumentType;
...@@ -46,47 +46,109 @@ class ExportNachrichtServiceTest { ...@@ -46,47 +46,109 @@ class ExportNachrichtServiceTest {
private BinaryFileService binaryFileService; private BinaryFileService binaryFileService;
@Nested @Nested
class TestCreateDokumentTypes { class TestCreateExportData {
private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
private final PostfachMail postfachMail = PostfachMailTestFactory.create(); private final PostfachMail postfachMail = PostfachMailTestFactory.create();
private final PostfachMailExportData exportData = PostfachMailExportDataTestFactory.create();
private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create(); private MockedStatic<PostfachMailExportData> postfachMailExportDataMockedStatic;
@Mock
private PostfachMailExportDataBuilder exportDataBuilder;
@BeforeEach
void setUpMock() {
postfachMailExportDataMockedStatic = mockStatic(PostfachMailExportData.class);
postfachMailExportDataMockedStatic.when(PostfachMailExportData::builder).thenReturn(exportDataBuilder);
when(postfachMailService.getAll(vorgang.getId())).thenReturn(Stream.of(postfachMail));
doNothing().when(service).addPostfachMailToBuilder(postfachMail, exportDataBuilder, vorgang);
when(exportDataBuilder.build()).thenReturn(exportData);
}
@AfterEach
void tearDown() {
postfachMailExportDataMockedStatic.close();
}
@Test @Test
void shouldCallPostfachMailServiceGetAll() { void shouldLoadPostfachMails() {
callCreateDokumentTypes(); callMethodToBeTested();
verify(postfachMailService).getAll(VorgangHeaderTestFactory.ID); verify(postfachMailService).getAll(vorgang.getId());
} }
@Test @Test
void shouldCallBuildDokumentType() { void shouldAddNachrichtToBuilder() {
when(postfachMailService.getAll(VorgangHeaderTestFactory.ID)).thenReturn(Stream.of(postfachMail)); callMethodToBeTested();
doReturn(DokumentTypeTestFactory.create()).when(service).buildDokumentType(postfachMail, vorgang);
callCreateDokumentTypes().toList(); verify(service).addPostfachMailToBuilder(postfachMail, exportDataBuilder, vorgang);
}
verify(service).buildDokumentType(postfachMail, vorgang); @Test
void shouldBuildExportData() {
callMethodToBeTested();
verify(exportDataBuilder).build();
} }
@Test @Test
void shouldReturnBuiltDokumente() { void shouldReturnBuiltExportData() {
var expectedDokument1 = DokumentTypeTestFactory.create(); var result = callMethodToBeTested();
var expectedDokument2 = DokumentTypeTestFactory.create();
var postfachMail2 = PostfachMailTestFactory.create();
when(postfachMailService.getAll(VorgangHeaderTestFactory.ID)).thenReturn(Stream.of(postfachMail, postfachMail2)); assertThat(result).isEqualTo(exportData);
doReturn(expectedDokument1).when(service).buildDokumentType(postfachMail, vorgang); }
doReturn(expectedDokument2).when(service).buildDokumentType(postfachMail2, vorgang);
var resultDokumente = callCreateDokumentTypes(); private PostfachMailExportData callMethodToBeTested() {
return service.createExportData(vorgang);
}
}
assertThat(resultDokumente).containsExactly(expectedDokument1, expectedDokument2); @Nested
class TestAddPostfachMailToBuilder {
private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
private final PostfachMail postfachMail = PostfachMailTestFactory.create();
private final List<OzgFile> attachments = List.of(OzgFileTestFactory.create());
private final DokumentType dokumentType = DokumentTypeTestFactory.create();
@Mock
private PostfachMailExportDataBuilder exportDataBuilder;
@BeforeEach
void setUpMocks() {
doReturn(attachments.stream()).when(service).getAttachments(postfachMail);
doReturn(dokumentType).when(service).buildDokumentType(postfachMail, attachments, vorgang);
} }
private Stream<DokumentType> callCreateDokumentTypes() { @Test
return service.createDokumentTypes(vorgang); void shouldCallGetAttachents() {
callMethodToBeTested();
verify(service).getAttachments(postfachMail);
}
@Test
void shouldAddAttachmentsToBuilder() {
callMethodToBeTested();
verify(exportDataBuilder).attachments(attachments);
}
@Test
void shouldBuildDokumentType() {
callMethodToBeTested();
verify(service).buildDokumentType(postfachMail, attachments, vorgang);
} }
@Test
void shouldAddDokumentTypeToBuilder() {
callMethodToBeTested();
verify(exportDataBuilder).dokumentType(dokumentType);
}
private void callMethodToBeTested() {
service.addPostfachMailToBuilder(postfachMail, exportDataBuilder, vorgang);
}
} }
@Nested @Nested
...@@ -98,9 +160,7 @@ class ExportNachrichtServiceTest { ...@@ -98,9 +160,7 @@ class ExportNachrichtServiceTest {
@Mock @Mock
private DokumentTypeBuilder dokumentTypeBuilder; private DokumentTypeBuilder dokumentTypeBuilder;
private final OzgFile ozgFile = OzgFileTestFactory.create(); private final List<OzgFile> ozgFileList = List.of(OzgFileTestFactory.create());
private final Stream<OzgFile> ozgFileStream = Stream.of(ozgFile);
private final List<OzgFile> ozgFileList = List.of(ozgFile);
private final Optional<UserProfile> userProfile = Optional.of(UserProfileTestFactory.create()); private final Optional<UserProfile> userProfile = Optional.of(UserProfileTestFactory.create());
@BeforeEach @BeforeEach
...@@ -112,7 +172,6 @@ class ExportNachrichtServiceTest { ...@@ -112,7 +172,6 @@ class ExportNachrichtServiceTest {
when(dokumentTypeBuilder.withOzgFiles(ozgFileList)).thenReturn(dokumentTypeBuilder); when(dokumentTypeBuilder.withOzgFiles(ozgFileList)).thenReturn(dokumentTypeBuilder);
when(dokumentTypeBuilder.withUserProfile(userProfile)).thenReturn(dokumentTypeBuilder); when(dokumentTypeBuilder.withUserProfile(userProfile)).thenReturn(dokumentTypeBuilder);
when(dokumentTypeBuilder.withVorgang(vorgang)).thenReturn(dokumentTypeBuilder); when(dokumentTypeBuilder.withVorgang(vorgang)).thenReturn(dokumentTypeBuilder);
doReturn(ozgFileStream).when(service).getAttachments(postfachMail);
doReturn(userProfile).when(service).getUserProfile(postfachMail); doReturn(userProfile).when(service).getUserProfile(postfachMail);
} }
...@@ -128,13 +187,6 @@ class ExportNachrichtServiceTest { ...@@ -128,13 +187,6 @@ class ExportNachrichtServiceTest {
dokumentTypeBuilderMockedStatic.verify(() -> DokumentTypeBuilder.builder()); dokumentTypeBuilderMockedStatic.verify(() -> DokumentTypeBuilder.builder());
} }
@Test
void shouldCallGetOzgFiles() {
callService();
verify(service).getAttachments(postfachMail);
}
@Test @Test
void shouldCallGetUserProfile() { void shouldCallGetUserProfile() {
callService(); callService();
...@@ -188,7 +240,7 @@ class ExportNachrichtServiceTest { ...@@ -188,7 +240,7 @@ class ExportNachrichtServiceTest {
} }
private DokumentType callService() { private DokumentType callService() {
return service.buildDokumentType(postfachMail, vorgang); return service.buildDokumentType(postfachMail, ozgFileList, vorgang);
} }
} }
......
package de.ozgcloud.alfa.postfach;
import de.ozgcloud.alfa.common.file.OzgFile;
import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
import de.ozgcloud.alfa.export.DokumentTypeTestFactory;
import de.ozgcloud.alfa.postfach.PostfachMailExportData.PostfachMailExportDataBuilder;
import de.xoev.xdomea.DokumentType;
public class PostfachMailExportDataTestFactory {
public static final DokumentType DOKUMENT_TYPE = DokumentTypeTestFactory.create();
public static final OzgFile OZG_FILE = OzgFileTestFactory.create();
public static PostfachMailExportData create() {
return createBuilder().build();
}
public static PostfachMailExportDataBuilder createBuilder() {
return PostfachMailExportData.builder()
.dokumentType(DOKUMENT_TYPE)
.attachment(OZG_FILE);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment