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

Merge branch 'master' into OZG-4713-xdomea-aenderung-historie

# Conflicts:
#	alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/ExportService.java
#	alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/XdomeaNachrichtBuilder.java
#	alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportServiceITCase.java
#	alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportServiceTest.java
#	alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/XdomeaNachrichtBuilderTest.java
parents c0945069 b8b41683
No related branches found
No related tags found
No related merge requests found
Showing
with 354 additions and 20 deletions
......@@ -46,6 +46,10 @@ public class DateConverter {
return null;
}
public static XMLGregorianCalendar createEmpty() {
return DateConverter.createDatatypeFactory().newXMLGregorianCalendar();
}
static DatatypeFactory createDatatypeFactory() {
try {
return DatatypeFactory.newInstance();
......
......@@ -35,11 +35,15 @@ public class PrimaerdokumentTypeBuilder {
throw new IllegalStateException("Can not build Primaerdokument when ozg file is null");
}
var primaerdokumentType = new PrimaerdokumentType();
primaerdokumentType.setDateiname(ExportFilenameGenerator.generateExportFilename(ozgFile));
primaerdokumentType.setDateinameOriginal(ozgFile.getName());
primaerdokumentType.setErsteller(ersteller);
primaerdokumentType.setDatumUhrzeit(DateConverter.toXmlGregorianCalendar(createdAt));
return primaerdokumentType;
var primaerdokument = new PrimaerdokumentType();
primaerdokument.setDateiname(ExportFilenameGenerator.generateExportFilename(ozgFile));
primaerdokument.setDateinameOriginal(ozgFile.getName());
primaerdokument.setErsteller(ersteller);
if (createdAt != null) {
primaerdokument.setDatumUhrzeit(DateConverter.toXmlGregorianCalendar(createdAt));
} else {
primaerdokument.setDatumUhrzeit(DateConverter.createEmpty());
}
return primaerdokument;
}
}
......@@ -19,6 +19,7 @@ import de.ozgcloud.alfa.common.ExportFilenameGenerator;
import de.ozgcloud.alfa.common.file.OzgFile;
import de.ozgcloud.alfa.file.ExportFileService;
import de.ozgcloud.alfa.historie.ExportHistorieService;
import de.ozgcloud.alfa.kommentar.ExportKommentarService;
import de.ozgcloud.alfa.vorgang.Eingang;
import de.ozgcloud.alfa.vorgang.EingangHeader;
import de.ozgcloud.alfa.vorgang.ExportVorgangService;
......@@ -40,6 +41,7 @@ class ExportService {
private final ExportFileService exportFileService;
private final ExportVorgangService exportVorgangService;
private final ExportHistorieService exportHistorieService;
private final ExportKommentarService exportKommentarService;
public void writeExport(String vorgangId, String filenameId, OutputStream out) {
var exportData = collectExportData(vorgangId, filenameId);
......@@ -59,6 +61,7 @@ class ExportService {
.withRepresentations(exportFileService.createDokumentTypes(representations, formEngineName).toList())
.withAttachments(exportFileService.createDokumentTypes(attachments, formEngineName).toList())
.withHistorie(exportHistorieService.createHistorienProtokollInformationTypes(vorgang).toList())
.withKommentare(exportKommentarService.createDokumentTypes(vorgang).toList())
.build();
var exportFiles = Stream.concat(representations.stream(), attachments.stream()).toList();
return ExportData.builder().abgabe(abgabe).exportFilename(buildXmlFilename(filenameId)).exportFiles(exportFiles).build();
......
......@@ -21,6 +21,7 @@ class XdomeaNachrichtBuilder {
private AkteType aktenzeichen;
private List<DokumentType> representations = Collections.emptyList();
private List<DokumentType> attachments = Collections.emptyList();
private List<DokumentType> kommentare = Collections.emptyList();
private List<HistorienProtokollInformationType> historie = Collections.emptyList();
public static XdomeaNachrichtBuilder builder() {
......@@ -57,6 +58,11 @@ class XdomeaNachrichtBuilder {
return this;
}
public XdomeaNachrichtBuilder withKommentare(List<DokumentType> kommentare) {
this.kommentare = kommentare;
return this;
}
public AbgabeAbgabe0401 build() {
addVorgangDokumente();
addVorgangChangeHistory();
......@@ -77,6 +83,7 @@ class XdomeaNachrichtBuilder {
void addVorgangDokumente() {
representations.forEach(vorgang.getDokument()::add);
attachments.forEach(vorgang.getDokument()::add);
kommentare.forEach(vorgang.getDokument()::add);
}
void addVorgangChangeHistory() {
......
package de.ozgcloud.alfa.common;
package de.ozgcloud.alfa.file;
import de.xoev.xdomea.DateiformatCodeType;
import lombok.Getter;
......@@ -6,7 +6,7 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@Getter
public enum DateiformatCode {
enum DateiformatCode {
PDF("vCBzR", "018");
static final String LIST_URI = "urn:xoev-de:xdomea:codeliste:dateiformat";
......
......@@ -2,7 +2,6 @@ package de.ozgcloud.alfa.file;
import org.apache.commons.lang3.StringUtils;
import de.ozgcloud.alfa.common.DateiformatCode;
import de.ozgcloud.alfa.common.PrimaerdokumentTypeBuilder;
import de.ozgcloud.alfa.common.UUIDConverter;
import de.ozgcloud.alfa.common.file.OzgFile;
......
package de.ozgcloud.alfa.kommentar;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import org.apache.commons.lang3.StringUtils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class DateiformatCode {
static final String SONSTIGES_CODE = "100";
// MIME type -> file extension -> xdomea code
private static final Map<String, Map<String, String>> mimeTypesMapping = new HashMap<>();
static {
mimeTypesMapping.put("image/bmp", Map.of("bmp", "001"));
mimeTypesMapping.put("text/csv", Map.of("csv", "002"));
mimeTypesMapping.put("application/msword", Map.of("doc", "003", "dot", "032"));
mimeTypesMapping.put("message/rfc822", Map.of("eml", "006"));
mimeTypesMapping.put("text/html", Map.of("htm", "007", "html", "008"));
mimeTypesMapping.put("image/jpeg", Map.of("jpe", "009", "jpeg", "010", "jpg", "011"));
mimeTypesMapping.put("application/vnd.ms-outlook", Map.of("msg", "012"));
mimeTypesMapping.put("application/vnd.oasis.opendocument.presentation", Map.of("odp", "013"));
mimeTypesMapping.put("application/vnd.oasis.opendocument.spreadsheet", Map.of("ods", "014"));
mimeTypesMapping.put("application/vnd.oasis.opendocument.text", Map.of("odt", "015"));
mimeTypesMapping.put("application/vnd.oasis.opendocument.presentation-template", Map.of("otp", "016"));
mimeTypesMapping.put("application/vnd.oasis.opendocument.spreadsheet-template", Map.of("ots", "017"));
mimeTypesMapping.put("application/pdf", Map.of("pdf", "018"));
mimeTypesMapping.put("image/png", Map.of("png", "019"));
mimeTypesMapping.put("application/vnd.ms-powerpoint", Map.of("ppt", "020", "pot", "033"));
mimeTypesMapping.put("application/postscript", Map.of("ps", "021"));
mimeTypesMapping.put("application/rtf", Map.of("rtf", "022"));
mimeTypesMapping.put("image/tiff", Map.of("tif", "023", "tiff", "024"));
mimeTypesMapping.put("application/vnd.ms-works", Map.of("wps", "025"));
mimeTypesMapping.put("application/vnd.ms-excel", Map.of("xlc", "026", "xlm", "027", "xls", "028", "xlw", "029", "xlt", "034"));
mimeTypesMapping.put("application/xml", Map.of("xml", "030", "xsd", "031"));
mimeTypesMapping.put("application/vnd.openxmlformats-officedocument.wordprocessingml.document", Map.of("docx", "035"));
mimeTypesMapping.put("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", Map.of("xlsx", "036"));
mimeTypesMapping.put("application/vnd.openxmlformats-officedocument.presentationml.presentation", Map.of("pptx", "037"));
mimeTypesMapping.put("application/vnd.openxmlformats-officedocument.wordprocessingml.template", Map.of("dotx", "038"));
mimeTypesMapping.put("application/vnd.openxmlformats-officedocument.spreadsheetml.template", Map.of("xltx", "039"));
mimeTypesMapping.put("application/vnd.openxmlformats-officedocument.presentationml.template", Map.of("potx", "040"));
mimeTypesMapping.put("application/xml-dtd", Map.of("dtd", "041"));
mimeTypesMapping.put("application/vnd.ms-project", Map.of("mpp", "042"));
mimeTypesMapping.put("application/vnd.oasis.opendocument.text-template", Map.of("ott", "043"));
mimeTypesMapping.put("text/plain", Map.of("txt", "045"));
mimeTypesMapping.put("application/x-pkcs7-certificates", Map.of("p7b", "046"));
mimeTypesMapping.put("application/pkcs7-mime", Map.of("p7c", "047", "p7m", "048"));
mimeTypesMapping.put("application/pkcs7-signature", Map.of("p7s", "049"));
mimeTypesMapping.put("application/vnd.etsi.asic-s+zip", Map.of("asics", "050"));
mimeTypesMapping.put("application/scvp-cv-response", Map.of("scs", "051"));
}
public static String getXdomeaCode(String mimeType, String extension) {
var fileExtensionToCodeMapping = getFileExtensionToCodeMapping(mimeType);
if (hasSingleExtensionMapping(fileExtensionToCodeMapping)) {
return getCodeOrDefault(fileExtensionToCodeMapping);
}
return getCodeForExtensionOrDefault(extension, fileExtensionToCodeMapping);
}
private static Map<String, String> getFileExtensionToCodeMapping(String mimeType) {
return mimeTypesMapping.getOrDefault(Objects.requireNonNullElse(mimeType, StringUtils.EMPTY), Collections.emptyMap());
}
private static boolean hasSingleExtensionMapping(Map<String, String> fileExtensionToCodeMapping) {
return fileExtensionToCodeMapping.entrySet().size() == 1;
}
private static String getCodeOrDefault(Map<String, String> fileExtensionToCodeMapping) {
return fileExtensionToCodeMapping.values().stream().findFirst().orElse(SONSTIGES_CODE);
}
private static String getCodeForExtensionOrDefault(String extension, Map<String, String> fileExtensionToCodeMapping) {
return fileExtensionToCodeMapping.getOrDefault(Objects.requireNonNullElse(extension, StringUtils.EMPTY), SONSTIGES_CODE);
}
}
package de.ozgcloud.alfa.kommentar;
import java.util.Collections;
import java.util.List;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang3.StringUtils;
import de.ozgcloud.alfa.common.PrimaerdokumentTypeBuilder;
import de.ozgcloud.alfa.common.UUIDConverter;
import de.ozgcloud.alfa.common.file.OzgFile;
import de.xoev.xdomea.AnlageDokumentType;
import de.xoev.xdomea.DateiformatCodeType;
import de.xoev.xdomea.DokumentType;
import de.xoev.xdomea.FormatType;
import de.xoev.xdomea.IdentifikationObjektType;
import de.xoev.xdomea.VersionType;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
class DokumentTypeBuilder {
static final String VERSION_NUMMER = "1";
static final String TYP = "Notiz";
static final String DATEI_FORMAT_LIST_URI = "urn:xoev-de:xdomea:codeliste:dateiformat";
private Kommentar kommentar;
private List<OzgFile> kommentarAttachments = Collections.emptyList();
public static DokumentTypeBuilder builder() {
return new DokumentTypeBuilder();
}
public DokumentTypeBuilder withKommentar(Kommentar kommentar) {
this.kommentar = kommentar;
return this;
}
public DokumentTypeBuilder withKommentarAttachments(List<OzgFile> kommentarAttachments) {
this.kommentarAttachments = kommentarAttachments;
return this;
}
public DokumentType build() {
var dokumentType = new DokumentType();
dokumentType.setIdentifikation(createKommentarIdentifikation());
dokumentType.setTyp(TYP);
kommentarAttachments.stream().map(this::createAnlage).forEach(dokumentType.getAnlage()::add);
return dokumentType;
}
IdentifikationObjektType createKommentarIdentifikation() {
var identifikation = new IdentifikationObjektType();
identifikation.setID(UUIDConverter.fromObjectId(kommentar.getId()));
return identifikation;
}
AnlageDokumentType createAnlage(OzgFile ozgFile) {
var anlage = new AnlageDokumentType();
anlage.setIdentifikation(createKommentarAttachmentIdentifikation(ozgFile));
anlage.getVersion().add(createVersionType(ozgFile));
return anlage;
}
IdentifikationObjektType createKommentarAttachmentIdentifikation(OzgFile attachment) {
var identifikation = new IdentifikationObjektType();
identifikation.setID(UUIDConverter.fromObjectId(attachment.getId().toString()));
return identifikation;
}
VersionType createVersionType(OzgFile ozgFile) {
var versionType = new VersionType();
versionType.setNummer(VERSION_NUMMER);
versionType.getFormat().add(createFormatType(ozgFile));
return versionType;
}
FormatType createFormatType(OzgFile ozgFile) {
var formatType = new FormatType();
formatType.setName(createDateiformatCodeType(ozgFile));
formatType.setVersion(StringUtils.EMPTY);
formatType.setPrimaerdokument(PrimaerdokumentTypeBuilder.builder()
.withOzgFile(ozgFile)
.build());
return formatType;
}
DateiformatCodeType createDateiformatCodeType(OzgFile ozgFile) {
var dateiformatCode = new DateiformatCodeType();
dateiformatCode.setCode(DateiformatCode.getXdomeaCode(ozgFile.getContentType(), FilenameUtils.getExtension(ozgFile.getName())));
dateiformatCode.setListURI(DATEI_FORMAT_LIST_URI);
return dateiformatCode;
}
}
package de.ozgcloud.alfa.kommentar;
import java.util.stream.Stream;
import org.springframework.stereotype.Service;
import de.ozgcloud.alfa.common.binaryfile.BinaryFileService;
import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
import de.xoev.xdomea.DokumentType;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@Service
public class ExportKommentarService {
private final KommentarService kommentarService;
private final BinaryFileService binaryFileService;
public Stream<DokumentType> createDokumentTypes(VorgangWithEingang vorgang) {
return kommentarService.findByVorgangId(vorgang.getId())
.map(kommentar -> DokumentTypeBuilder.builder()
.withKommentarAttachments(binaryFileService.getFiles(kommentar.getAttachments()).toList())
.withKommentar(kommentar)
.build());
}
}
package de.ozgcloud.alfa.common;
import de.xoev.xdomea.DateiformatCodeType;
public class DateiformatCodeTypeTestFactory {
public static DateiformatCodeType create() {
return new DateiformatCodeType();
}
}
......@@ -2,7 +2,7 @@ package de.ozgcloud.alfa.common;
import de.xoev.xdomea.FormatType;
public class FormTypeTestFactory {
public class FormatTypeTestFactory {
public static FormatType create() {
return new FormatType();
......
......@@ -92,12 +92,14 @@ class PrimaerdokumentTypeBuilderTest {
void shouldNotHaveDatumUhrzeit() {
var primaerdokumentType = builder.build();
assertThat(primaerdokumentType.getDatumUhrzeit()).isNull();
assertThat(primaerdokumentType.getDatumUhrzeit().getYear()).isNegative();
}
@Test
void shouldThrowIllegalgStateException() {
assertThatThrownBy(() -> builder.withOzgFile(null).build()).isInstanceOf(IllegalStateException.class);
builder.withOzgFile(null);
assertThatThrownBy(builder::build).isInstanceOf(IllegalStateException.class);
}
}
......
......@@ -6,7 +6,7 @@ public class VersionTypeTestFactory {
public static VersionType create() {
var versionType = new VersionType();
versionType.getFormat().add(FormTypeTestFactory.create());
versionType.getFormat().add(FormatTypeTestFactory.create());
return versionType;
}
}
......@@ -22,6 +22,7 @@ import de.ozgcloud.alfa.common.file.OzgFile;
import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
import de.ozgcloud.alfa.file.ExportFileService;
import de.ozgcloud.alfa.historie.ExportHistorieService;
import de.ozgcloud.alfa.kommentar.ExportKommentarService;
import de.ozgcloud.alfa.vorgang.ExportVorgangService;
import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
......@@ -37,6 +38,8 @@ class ExportServiceITCase {
private ExportVorgangService exportVorgangService;
@MockBean
private ExportHistorieService exportHistorieService;
@MockBean
private ExportKommentarService exportKommentarService;
@Autowired
private ExportService exportService;
......@@ -52,6 +55,7 @@ class ExportServiceITCase {
doReturn(Stream.of(createOzgFile())).when(exportFileService).getAttachments(vorgang);
doNothing().when(exportFileService).writeOzgFile(any(), any());
when(exportHistorieService.createHistorienProtokollInformationTypes(vorgang)).thenReturn(Stream.empty());
when(exportKommentarService.createDokumentTypes(vorgang)).thenReturn(Stream.empty());
}
@Test
......
......@@ -32,6 +32,7 @@ import de.ozgcloud.alfa.common.file.OzgFile;
import de.ozgcloud.alfa.common.file.OzgFileTestFactory;
import de.ozgcloud.alfa.file.ExportFileService;
import de.ozgcloud.alfa.historie.ExportHistorieService;
import de.ozgcloud.alfa.kommentar.ExportKommentarService;
import de.ozgcloud.alfa.vorgang.EingangHeaderTestFactory;
import de.ozgcloud.alfa.vorgang.EingangTestFactory;
import de.ozgcloud.alfa.vorgang.ExportVorgangService;
......@@ -63,6 +64,8 @@ class ExportServiceTest {
private ExportVorgangService exportVorgangService;
@Mock
private ExportHistorieService exportHistorieService;
@Mock
private ExportKommentarService exportKommentarService;
@DisplayName("Write exportToXdomea")
@Nested
......@@ -126,6 +129,7 @@ class ExportServiceTest {
private final List<DokumentType> attachmentsDokumentTypes = List.of(DokumentTypeTestFactory.create());
private final List<HistorienProtokollInformationType> historienProtokollInformationTypes = List.of(
HistorienProtokollInformationTypeTestFactory.create());
private final List<DokumentType> kommentareDokumentTypes = List.of(DokumentTypeTestFactory.create());
@Mock
private XdomeaNachrichtBuilder xdomeaNachrichtBuilder;
......@@ -157,6 +161,7 @@ class ExportServiceTest {
when(xdomeaNachrichtBuilder.withRepresentations(representationsDokumentTypes)).thenReturn(xdomeaNachrichtBuilder);
when(xdomeaNachrichtBuilder.withAttachments(attachmentsDokumentTypes)).thenReturn(xdomeaNachrichtBuilder);
when(xdomeaNachrichtBuilder.withHistorie(historienProtokollInformationTypes)).thenReturn(xdomeaNachrichtBuilder);
when(xdomeaNachrichtBuilder.withKommentare(kommentareDokumentTypes)).thenReturn(xdomeaNachrichtBuilder);
xdomeaNachrichtBuilderMockedStatic.when(XdomeaNachrichtBuilder::builder).thenReturn(xdomeaNachrichtBuilder);
when(xdomeaNachrichtBuilder.build()).thenReturn(abgabe);
}
......@@ -170,6 +175,7 @@ class ExportServiceTest {
.thenReturn(stream));
mockStreamToList(attachmentsDokumentTypes, stream ->
when(exportFileService.createDokumentTypes(attachments, EingangHeaderTestFactory.FORM_ENGINE_NAME)).thenReturn(stream));
mockStreamToList(kommentareDokumentTypes, stream -> when(exportKommentarService.createDokumentTypes(vorgang)).thenReturn(stream));
}
private void setUpExportHistorieService() {
......@@ -316,7 +322,13 @@ class ExportServiceTest {
.hasSize(2)
.containsAll(representations)
.containsAll(attachments);
}
@Test
void shouldExportKommentare() {
callService();
verify(exportKommentarService).createDokumentTypes(vorgang);
}
private ExportData callService() {
......
......@@ -20,6 +20,7 @@ class XdomeaNachrichtBuilderTest {
private final List<DokumentType> attachments = List.of(DokumentTypeTestFactory.create(), DokumentTypeTestFactory.create());
private final List<HistorienProtokollInformationType> historie = List.of(HistorienProtokollInformationTypeTestFactory.create(),
HistorienProtokollInformationTypeTestFactory.create());
private final List<DokumentType> kommentare = List.of(DokumentTypeTestFactory.create(), DokumentTypeTestFactory.create());
private final XdomeaNachrichtBuilder builder = XdomeaNachrichtBuilder.builder().withVorgang(vorgangType);
@Test
......@@ -70,4 +71,11 @@ class XdomeaNachrichtBuilderTest {
assertThat(abgabeType.getSchriftgutobjekt().get(0).getVorgang().getHistorienProtokollInformation()).isEmpty();
}
@Test
void shouldAddKommentare() {
var abgabeType = builder.withKommentare(kommentare).build();
assertThat(abgabeType.getSchriftgutobjekt().get(0).getVorgang().getDokument()).isEqualTo(kommentare);
}
}
package de.ozgcloud.alfa.common;
package de.ozgcloud.alfa.file;
import static org.assertj.core.api.Assertions.*;
......
......@@ -11,9 +11,9 @@ import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.MockedStatic;
import org.mockito.Spy;
import de.ozgcloud.alfa.common.DateiformatCode;
import de.ozgcloud.alfa.common.FormTypeTestFactory;
import de.ozgcloud.alfa.common.FormatTypeTestFactory;
import de.ozgcloud.alfa.common.PrimaerdokumentTypeBuilder;
import de.ozgcloud.alfa.common.PrimaerdokumentTypeTestFactory;
import de.ozgcloud.alfa.common.TestUtils;
......@@ -35,10 +35,11 @@ class DokumentTypeBuilderTest {
private static final String FORM_ENGINE_NAME = "DUMMY_NAME";
private final OzgFile ozgFile = OzgFileTestFactory.create();
private final DokumentTypeBuilder builder = spy(DokumentTypeBuilder.builder()
@Spy
private final DokumentTypeBuilder builder = DokumentTypeBuilder.builder()
.withOzgFile(ozgFile)
.withFormEngineName(FORM_ENGINE_NAME)
.withOrdinalNumber(DOKUMENT_ORDINAL_NUMBER));
.withOrdinalNumber(DOKUMENT_ORDINAL_NUMBER);
private MockedStatic<UUIDConverter> uuidConverter;
......@@ -220,7 +221,7 @@ class DokumentTypeBuilderTest {
@Nested
class CreateVersionType {
private final FormatType formatType = FormTypeTestFactory.create();
private final FormatType formatType = FormatTypeTestFactory.create();
@BeforeEach
void setUp() {
......@@ -297,7 +298,7 @@ class DokumentTypeBuilderTest {
void shouldReturnBuildPrimaerdokument() {
var primaerdokument = builder.createPrimaerdokument();
assertThat(primaerdokument).isEqualTo(primaerdokument);
assertThat(primaerdokument).isEqualTo(primaerdokumentType);
}
}
......
package de.ozgcloud.alfa.kommentar;
import de.xoev.xdomea.AnlageDokumentType;
class AnlageDokumentTypeTestFactory {
public static AnlageDokumentType create() {
return new AnlageDokumentType();
}
}
package de.ozgcloud.alfa.kommentar;
import static org.assertj.core.api.Assertions.*;
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;
class DateiformatCodeTest {
@Nested
class TestGetXdomeaCode {
@Test
void shouldReturnCode() {
var code = DateiformatCode.getXdomeaCode("application/pdf", "pdf");
assertThat(code).isEqualTo("018");
}
@Test
void shouldReturnSonstiges() {
var code = DateiformatCode.getXdomeaCode("abc", "abc");
assertThat(code).isEqualTo(DateiformatCode.SONSTIGES_CODE);
}
@ParameterizedTest
@NullAndEmptySource
void shouldReturnCodeOnSingleFileExtensionMapping(String extension) {
var code = DateiformatCode.getXdomeaCode("application/pdf", extension);
assertThat(code).isEqualTo("018");
}
@Test
void shouldReturnCodeOnMultipleFileExtensionMapping() {
var code = DateiformatCode.getXdomeaCode("image/jpeg", "jpg");
assertThat(code).isEqualTo("011");
}
@ParameterizedTest
@NullAndEmptySource
void shouldReturnSonstigesOnMultipleFileExtensionMapping(String extension) {
var code = DateiformatCode.getXdomeaCode("image/jpeg", extension);
assertThat(code).isEqualTo(DateiformatCode.SONSTIGES_CODE);
}
@ParameterizedTest
@NullAndEmptySource
void shouldReturnSonstigesOnEmptyMimeType(String mimeType) {
var code = DateiformatCode.getXdomeaCode(mimeType, "pdf");
assertThat(code).isEqualTo(DateiformatCode.SONSTIGES_CODE);
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment