From 82a00a07957bf1ff665e50cd65db1d64894233e7 Mon Sep 17 00:00:00 2001 From: Tobias Bruns <kontakt@tobias-bruns.de> Date: Fri, 3 Jan 2025 10:43:47 +0100 Subject: [PATCH] OZG-6988 load report settings to config server --- .../de/ozgcloud/admin/common/DtoService.java | 16 ++++++++ .../admin/common/SettingDtoService.java | 8 ++++ .../reporting/AggregationMappingMapper.java | 15 +++++++ ...ngAggregationManagerSettingDTOService.java | 32 +++++++++++++++ .../admin/reporting/ReportingSetting.java | 26 ++++++++++--- .../admin/reporting/ReportingSettingDto.java | 39 +++++++++++++++++++ .../reporting/ReportingSettingRepository.java | 9 ++++- .../MapBasedApplicationSettingDto.java | 22 +++++++++++ .../admin/setting/SettingConstants.java | 2 + .../setting/SettingEnvironmentRepository.java | 23 ++++++----- .../admin/setting/SettingService.java | 36 +++++++++++++++++ src/main/resources/application-local.yaml | 3 ++ src/main/resources/application.yaml | 2 +- .../LinkedResourceDeserializerTest.java | 2 - .../admin/common/ModelBuilderTest.java | 3 -- ...gregationManagerSettingDTOServiceTest.java | 30 ++++++++++++++ .../ReportingSettingDtoTestFactory.java | 25 ++++++++++++ ...TCase.java => ReportingSettingITCase.java} | 7 ++-- .../ReportingSettingRepositoryITCase.java | 37 ++++++++++++++++++ .../ReportingSettingTestFactory.java | 31 +++++++++++++++ src/test/resources/application-itcase.yaml | 2 + src/test/resources/reporting/request.json | 12 ++++++ 22 files changed, 354 insertions(+), 28 deletions(-) create mode 100644 src/main/java/de/ozgcloud/admin/common/DtoService.java create mode 100644 src/main/java/de/ozgcloud/admin/common/SettingDtoService.java create mode 100644 src/main/java/de/ozgcloud/admin/reporting/AggregationMappingMapper.java create mode 100644 src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDTOService.java create mode 100644 src/main/java/de/ozgcloud/admin/reporting/ReportingSettingDto.java create mode 100644 src/main/java/de/ozgcloud/admin/setting/MapBasedApplicationSettingDto.java create mode 100644 src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDTOServiceTest.java create mode 100644 src/test/java/de/ozgcloud/admin/reporting/ReportingSettingDtoTestFactory.java rename src/test/java/de/ozgcloud/admin/reporting/{ReportingSettingsITCase.java => ReportingSettingITCase.java} (92%) create mode 100644 src/test/java/de/ozgcloud/admin/reporting/ReportingSettingRepositoryITCase.java create mode 100644 src/test/java/de/ozgcloud/admin/reporting/ReportingSettingTestFactory.java create mode 100644 src/test/resources/reporting/request.json diff --git a/src/main/java/de/ozgcloud/admin/common/DtoService.java b/src/main/java/de/ozgcloud/admin/common/DtoService.java new file mode 100644 index 00000000..ca024525 --- /dev/null +++ b/src/main/java/de/ozgcloud/admin/common/DtoService.java @@ -0,0 +1,16 @@ +package de.ozgcloud.admin.common; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.springframework.stereotype.Service; + +@Service +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface DtoService { + + String value(); +} diff --git a/src/main/java/de/ozgcloud/admin/common/SettingDtoService.java b/src/main/java/de/ozgcloud/admin/common/SettingDtoService.java new file mode 100644 index 00000000..2624360a --- /dev/null +++ b/src/main/java/de/ozgcloud/admin/common/SettingDtoService.java @@ -0,0 +1,8 @@ +package de.ozgcloud.admin.common; + +public interface SettingDtoService { + + String getSettingKeyName(); + + Object getDataTransferObject(); +} diff --git a/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingMapper.java b/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingMapper.java new file mode 100644 index 00000000..80ba34c4 --- /dev/null +++ b/src/main/java/de/ozgcloud/admin/reporting/AggregationMappingMapper.java @@ -0,0 +1,15 @@ +package de.ozgcloud.admin.reporting; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.NullValueCheckStrategy; + +import de.ozgcloud.admin.reporting.ReportingSettingDto.AggregationMappingDto; + +@Mapper(nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) +public interface AggregationMappingMapper { + + @Mapping(target = "fieldMapping", ignore = true) + @Mapping(target = "fieldMappings", source = "mappings") + AggregationMappingDto toMapping(ReportingSetting setting); +} diff --git a/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDTOService.java b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDTOService.java new file mode 100644 index 00000000..b74146d6 --- /dev/null +++ b/src/main/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDTOService.java @@ -0,0 +1,32 @@ +package de.ozgcloud.admin.reporting; + +import java.util.stream.Stream; + +import de.ozgcloud.admin.common.DtoService; +import de.ozgcloud.admin.common.SettingDtoService; +import de.ozgcloud.admin.setting.SettingConstants; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +@DtoService(SettingConstants.AGGREGATION_MANAGER) +class ReportingAggregationManagerSettingDTOService implements SettingDtoService { + + private final ReportingSettingRepository repository; + private final AggregationMappingMapper mapper; + + @Override + public ReportingSettingDto getDataTransferObject() { + return mapToDto(repository.findAll().stream()); + } + + ReportingSettingDto mapToDto(Stream<ReportingSetting> settings) { + return ReportingSettingDto.builder() + .aggregationMappings(settings.map(mapper::toMapping).toList()) + .build(); + } + + @Override + public String getSettingKeyName() { + return "aggregation"; + } +} diff --git a/src/main/java/de/ozgcloud/admin/reporting/ReportingSetting.java b/src/main/java/de/ozgcloud/admin/reporting/ReportingSetting.java index 83ad52c2..963c9d0c 100644 --- a/src/main/java/de/ozgcloud/admin/reporting/ReportingSetting.java +++ b/src/main/java/de/ozgcloud/admin/reporting/ReportingSetting.java @@ -2,6 +2,7 @@ package de.ozgcloud.admin.reporting; import java.util.List; +import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; @@ -9,34 +10,47 @@ import org.springframework.data.annotation.Id; import org.springframework.data.annotation.TypeAlias; import org.springframework.data.mongodb.core.mapping.Document; +import com.fasterxml.jackson.annotation.JsonIgnore; + +import de.ozgcloud.admin.reporting.ReportingSettingDto.FormIdentifierDto; import lombok.Builder; import lombok.Getter; +import lombok.Singular; import lombok.extern.jackson.Jacksonized; @Document("settings") -@TypeAlias("reporting") +@TypeAlias("fieldMapping") @Jacksonized @Builder @Getter public class ReportingSetting { @Id + @JsonIgnore private String id; @Builder.Default - private String name = "reporting"; + private String name = "fieldMapping"; - @NotBlank - private String formEngineName; - @NotBlank - private String formId; + @Valid + private FormIdentifierDto formIdentifier; @NotEmpty + @Singular private List<FieldMapping> mappings; @Builder @Getter static class FieldMapping { + @NotBlank private String sourcePath; + @NotBlank private String targetPath; } + + static class FormIdentifer { + @NotBlank + private String formEngineName; + @NotBlank + private String formId; + } } diff --git a/src/main/java/de/ozgcloud/admin/reporting/ReportingSettingDto.java b/src/main/java/de/ozgcloud/admin/reporting/ReportingSettingDto.java new file mode 100644 index 00000000..5b25418b --- /dev/null +++ b/src/main/java/de/ozgcloud/admin/reporting/ReportingSettingDto.java @@ -0,0 +1,39 @@ +package de.ozgcloud.admin.reporting; + +import java.util.List; + +import lombok.Builder; +import lombok.Getter; +import lombok.Singular; +import lombok.ToString; + +@Builder +@Getter +@ToString +public class ReportingSettingDto { + + @Singular + private List<AggregationMappingDto> aggregationMappings; + + @Builder + @Getter + static class AggregationMappingDto { + private FormIdentifierDto formIdentifier; + @Singular + private List<FieldMappingDto> fieldMappings; + } + + @Builder + @Getter + static class FormIdentifierDto { + private String formEngineName; + private String formId; + } + + @Builder + @Getter + static class FieldMappingDto { + private String sourcePath; + private String targetPath; + } +} diff --git a/src/main/java/de/ozgcloud/admin/reporting/ReportingSettingRepository.java b/src/main/java/de/ozgcloud/admin/reporting/ReportingSettingRepository.java index 3614a99a..0c4f3ec7 100644 --- a/src/main/java/de/ozgcloud/admin/reporting/ReportingSettingRepository.java +++ b/src/main/java/de/ozgcloud/admin/reporting/ReportingSettingRepository.java @@ -1,9 +1,14 @@ package de.ozgcloud.admin.reporting; +import java.util.List; + import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.data.mongodb.repository.Query; import org.springframework.data.rest.core.annotation.RepositoryRestResource; @RepositoryRestResource -public interface ReportingSettingRepository extends MongoRepository<ReportingSetting, String> { - +interface ReportingSettingRepository extends MongoRepository<ReportingSetting, String> { + @Override + @Query("{'_class': 'fieldMapping'}") + List<ReportingSetting> findAll(); } diff --git a/src/main/java/de/ozgcloud/admin/setting/MapBasedApplicationSettingDto.java b/src/main/java/de/ozgcloud/admin/setting/MapBasedApplicationSettingDto.java new file mode 100644 index 00000000..864acde2 --- /dev/null +++ b/src/main/java/de/ozgcloud/admin/setting/MapBasedApplicationSettingDto.java @@ -0,0 +1,22 @@ +package de.ozgcloud.admin.setting; + +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; + +import lombok.Builder; +import lombok.Getter; +import lombok.Singular; + +@Builder +@Getter +public class MapBasedApplicationSettingDto implements ApplicationSettingDTO { + + @Singular + private Map<String, Object> settings; + + @JsonAnyGetter + public Map<String, Object> getSettings() { + return settings; + } +} diff --git a/src/main/java/de/ozgcloud/admin/setting/SettingConstants.java b/src/main/java/de/ozgcloud/admin/setting/SettingConstants.java index 9c40c612..afcf0934 100644 --- a/src/main/java/de/ozgcloud/admin/setting/SettingConstants.java +++ b/src/main/java/de/ozgcloud/admin/setting/SettingConstants.java @@ -32,4 +32,6 @@ public class SettingConstants { static final String REL = "settings"; public static final String PATH = "settings"; + + public static final String AGGREGATION_MANAGER = "OzgCloud_AggregationManager"; } diff --git a/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java b/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java index db793f2f..dfe17a50 100644 --- a/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java +++ b/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java @@ -23,6 +23,8 @@ */ package de.ozgcloud.admin.setting; +import static de.ozgcloud.admin.setting.SettingConstants.*; + import java.util.Map; import java.util.Optional; @@ -41,13 +43,12 @@ import lombok.RequiredArgsConstructor; @Component public class SettingEnvironmentRepository implements EnvironmentRepository { - private final SettingService settingService; - - private final ObjectMapper objectMapper; - private static final String ALFA = "Alfa"; private static final String VORGANG_MANAGER = "OzgCloud_VorgangManager"; + private final SettingService settingService; + private final ObjectMapper objectMapper; + @Override public Environment findOne(String application, String profile, String label) { return buildEnvironment(application, findAnwendungSettingDTO(application)); @@ -55,12 +56,14 @@ public class SettingEnvironmentRepository implements EnvironmentRepository { Optional<ApplicationSettingDTO> findAnwendungSettingDTO(String application) { switch (application) { - case ALFA: - return Optional.of(settingService.getAlfaSettingDTO()); - case VORGANG_MANAGER: - return Optional.of(settingService.getVorgangManagerSettingDTO()); - default: - return Optional.empty(); + case ALFA: + return Optional.of(settingService.getAlfaSettingDTO()); + case VORGANG_MANAGER: + return Optional.of(settingService.getVorgangManagerSettingDTO()); + case AGGREGATION_MANAGER: + return Optional.of(settingService.getAggregationManagerSettingDto()); + default: + return Optional.empty(); } } diff --git a/src/main/java/de/ozgcloud/admin/setting/SettingService.java b/src/main/java/de/ozgcloud/admin/setting/SettingService.java index 51b8529a..ef6a78f3 100644 --- a/src/main/java/de/ozgcloud/admin/setting/SettingService.java +++ b/src/main/java/de/ozgcloud/admin/setting/SettingService.java @@ -23,11 +23,20 @@ */ package de.ozgcloud.admin.setting; +import static de.ozgcloud.admin.setting.SettingConstants.*; + +import java.util.Collections; +import java.util.List; import java.util.Map; import java.util.stream.Collectors; +import jakarta.annotation.PostConstruct; + +import org.springframework.beans.factory.ListableBeanFactory; import org.springframework.stereotype.Service; +import de.ozgcloud.admin.common.DtoService; +import de.ozgcloud.admin.common.SettingDtoService; import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitSettings; import de.ozgcloud.admin.setting.postfach.PostfachSettingBody; import lombok.RequiredArgsConstructor; @@ -41,6 +50,21 @@ class SettingService { private final SettingRepository repository; private final SettingMapper mapper; + private final ListableBeanFactory beanFactory; + + private Map<String, List<SettingDtoService>> dtoServiceByManager; + + @PostConstruct + void initDtoServices() { + this.dtoServiceByManager = beanFactory.getBeansWithAnnotation(DtoService.class).values().stream() + .map(dtoService -> (SettingDtoService) dtoService) + .collect(Collectors.groupingBy(dtoService -> getManagerForService(dtoService))); + } + + private String getManagerForService(SettingDtoService dtoService) { + var annotation = dtoService.getClass().getDeclaredAnnotation(DtoService.class); + return annotation.value(); + } public AlfaSettingDTO getAlfaSettingDTO() { var postfachData = getSettingWithPostfachFromDb(); @@ -63,6 +87,17 @@ class SettingService { .build(); } + public ApplicationSettingDTO getAggregationManagerSettingDto() { + return MapBasedApplicationSettingDto.builder() + .settings(getDtoService(AGGREGATION_MANAGER).stream() + .collect(Collectors.toMap(SettingDtoService::getSettingKeyName, SettingDtoService::getDataTransferObject))) + .build(); + } + + private List<SettingDtoService> getDtoService(String managerName) { + return dtoServiceByManager.getOrDefault(managerName, Collections.emptyList()); + } + PostfachSettingBody getSettingWithPostfachFromDb() { return repository.findOneByName(POSTFACH_SETTING_ITEM_NAME) .map(Setting::getSettingBody) @@ -75,4 +110,5 @@ class SettingService { OrganisationsEinheitWithSettings::organisationsEinheitId, OrganisationsEinheitWithSettings::settings)); } + } diff --git a/src/main/resources/application-local.yaml b/src/main/resources/application-local.yaml index c5bb57b3..7faeb3ac 100644 --- a/src/main/resources/application-local.yaml +++ b/src/main/resources/application-local.yaml @@ -1,3 +1,6 @@ +logging: + config: classpath:log4j2-local.xml + spring: data: mongodb: diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index f4a4954d..eda94433 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -21,7 +21,7 @@ # unter der Lizenz sind dem Lizenztext zu entnehmen. logging: level: - ROOT: INFO + ROOT: WARN '[de.ozgcloud]': INFO management: diff --git a/src/test/java/de/ozgcloud/admin/common/LinkedResourceDeserializerTest.java b/src/test/java/de/ozgcloud/admin/common/LinkedResourceDeserializerTest.java index 57b29873..b5011677 100644 --- a/src/test/java/de/ozgcloud/admin/common/LinkedResourceDeserializerTest.java +++ b/src/test/java/de/ozgcloud/admin/common/LinkedResourceDeserializerTest.java @@ -31,8 +31,6 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.core.exc.StreamReadException; -import com.fasterxml.jackson.databind.DatabindException; import com.fasterxml.jackson.databind.ObjectMapper; import de.ozgcloud.admin.common.user.TestId; diff --git a/src/test/java/de/ozgcloud/admin/common/ModelBuilderTest.java b/src/test/java/de/ozgcloud/admin/common/ModelBuilderTest.java index eaaf4500..74c8a11d 100644 --- a/src/test/java/de/ozgcloud/admin/common/ModelBuilderTest.java +++ b/src/test/java/de/ozgcloud/admin/common/ModelBuilderTest.java @@ -24,11 +24,9 @@ package de.ozgcloud.admin.common; import static org.assertj.core.api.Assertions.*; -import static org.mockito.Mockito.*; import java.util.UUID; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -36,7 +34,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.NullAndEmptySource; import org.mockito.Mock; import org.springframework.context.ApplicationContext; -import org.springframework.core.env.Environment; import org.springframework.web.bind.annotation.RequestMapping; import lombok.Builder; diff --git a/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDTOServiceTest.java b/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDTOServiceTest.java new file mode 100644 index 00000000..a7b8213b --- /dev/null +++ b/src/test/java/de/ozgcloud/admin/reporting/ReportingAggregationManagerSettingDTOServiceTest.java @@ -0,0 +1,30 @@ +package de.ozgcloud.admin.reporting; + +import static org.assertj.core.api.Assertions.*; + +import java.util.stream.Stream; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; +import org.mockito.InjectMocks; +import org.mockito.Spy; + +class ReportingAggregationManagerSettingDTOServiceTest { + + @InjectMocks + private ReportingAggregationManagerSettingDTOService service; + @Spy + private AggregationMappingMapper mapper = Mappers.getMapper(AggregationMappingMapper.class); + + @Nested + class TestMapToDto { + @Test + void shouldCreateDto() { + var dto = service.mapToDto(Stream.of(ReportingSettingTestFactory.create())); + + assertThat(dto).usingRecursiveComparison().isEqualTo(ReportingSettingDtoTestFactory.create()); + } + } + +} diff --git a/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingDtoTestFactory.java b/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingDtoTestFactory.java new file mode 100644 index 00000000..b465498c --- /dev/null +++ b/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingDtoTestFactory.java @@ -0,0 +1,25 @@ +package de.ozgcloud.admin.reporting; + +import static de.ozgcloud.admin.reporting.ReportingSettingTestFactory.*; + +import de.ozgcloud.admin.reporting.ReportingSettingDto.AggregationMappingDto; +import de.ozgcloud.admin.reporting.ReportingSettingDto.FieldMappingDto; +import de.ozgcloud.admin.reporting.ReportingSettingDto.FormIdentifierDto; + +class ReportingSettingDtoTestFactory { + + public static final FormIdentifierDto FORM_IDENTIFIER = FormIdentifierDto.builder().formId(FORM_ID).formEngineName(FORM_ENGINE_NAME).build(); + + public static ReportingSettingDto create() { + return createBuilder().build(); + } + + public static ReportingSettingDto.ReportingSettingDtoBuilder createBuilder() { + return ReportingSettingDto.builder() + .aggregationMapping(AggregationMappingDto.builder() + .formIdentifier(FORM_IDENTIFIER) + .fieldMapping(FieldMappingDto.builder().sourcePath(SOURCE_PATH).targetPath(TARGET_PATH).build()) + .build()); + } + +} diff --git a/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingsITCase.java b/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingITCase.java similarity index 92% rename from src/test/java/de/ozgcloud/admin/reporting/ReportingSettingsITCase.java rename to src/test/java/de/ozgcloud/admin/reporting/ReportingSettingITCase.java index 6e0a486d..298e5a19 100644 --- a/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingsITCase.java +++ b/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingITCase.java @@ -6,7 +6,6 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; @@ -16,12 +15,13 @@ import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.servlet.MockMvc; import de.ozgcloud.common.test.DataITCase; +import de.ozgcloud.common.test.TestUtils; import lombok.SneakyThrows; @AutoConfigureMockMvc @WithMockUser(roles = "ADMIN_ADMIN") @DataITCase -class ReportingSettingsITCase { +class ReportingSettingITCase { @Autowired private MockMvc mockMvc; @@ -50,12 +50,11 @@ class ReportingSettingsITCase { .andExpect(status().isUnprocessableEntity()); } - @Disabled @Test @SneakyThrows void shouldAddReportingSetting() { mockMvc.perform(post("/api/configuration/reportingSettings").with(csrf()) - .contentType(MediaType.APPLICATION_JSON).content("{}")) + .contentType(MediaType.APPLICATION_JSON).content(TestUtils.loadTextFile("reporting/request.json"))) .andExpect(status().isCreated()); var collection = mongoOperations.getCollection("settings"); diff --git a/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingRepositoryITCase.java b/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingRepositoryITCase.java new file mode 100644 index 00000000..96905a1b --- /dev/null +++ b/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingRepositoryITCase.java @@ -0,0 +1,37 @@ +package de.ozgcloud.admin.reporting; + +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 org.springframework.data.mongodb.core.MongoOperations; + +import de.ozgcloud.admin.setting.SettingTestFactory; +import de.ozgcloud.common.test.DataITCase; + +@DataITCase +class ReportingSettingRepositoryITCase { + + @Autowired + private ReportingSettingRepository repository; + + @Autowired + private MongoOperations operations; + + @BeforeEach + void dropCollection() { + operations.dropCollection("settings"); + } + + @Test + void shouldLoadOnlyFieldMapping() { + operations.save(ReportingSettingTestFactory.create()); + operations.save(SettingTestFactory.create()); + + var result = repository.findAll(); + + assertThat(result).hasSize(1); + } + +} diff --git a/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingTestFactory.java b/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingTestFactory.java new file mode 100644 index 00000000..b825f04d --- /dev/null +++ b/src/test/java/de/ozgcloud/admin/reporting/ReportingSettingTestFactory.java @@ -0,0 +1,31 @@ +package de.ozgcloud.admin.reporting; + +import java.util.UUID; + +import de.ozgcloud.admin.reporting.ReportingSetting.FieldMapping; +import de.ozgcloud.admin.reporting.ReportingSettingDto.FormIdentifierDto; + +class ReportingSettingTestFactory { + + public static final String ID = UUID.randomUUID().toString(); + public static final String FORM_ENGINE_NAME = "A12"; + public static final String FORM_ID = "123AABC"; + + public static final String SOURCE_PATH = "name"; + public static final String TARGET_PATH = "antragsteller.name"; + + public static ReportingSetting create() { + return createBuilder().build(); + } + + public static ReportingSetting.ReportingSettingBuilder createBuilder() { + return ReportingSetting.builder() + .id(UUID.randomUUID().toString()) + .formIdentifier(FormIdentifierDto.builder() + .formEngineName(FORM_ENGINE_NAME) + .formId(FORM_ID) + .build()) + .mapping(FieldMapping.builder().sourcePath(SOURCE_PATH).targetPath(TARGET_PATH).build()); + } + +} diff --git a/src/test/resources/application-itcase.yaml b/src/test/resources/application-itcase.yaml index 05de7ad1..07702372 100644 --- a/src/test/resources/application-itcase.yaml +++ b/src/test/resources/application-itcase.yaml @@ -1,4 +1,6 @@ logging: + level: + '[org.springframework.data.mongodb]': WARN config: classpath:log4j2-local.xml spring: diff --git a/src/test/resources/reporting/request.json b/src/test/resources/reporting/request.json new file mode 100644 index 00000000..19608183 --- /dev/null +++ b/src/test/resources/reporting/request.json @@ -0,0 +1,12 @@ +{ + "formIdentifier": { + "formEngineName": "AFM", + "formId": "42" + }, + "mappings": [ + { + "sourcePath": "name", + "targetPath": "antragsteller.name" + } + ] +} \ No newline at end of file -- GitLab