Skip to content
Snippets Groups Projects
Verified Commit 75605575 authored by Sebastian Bergandy's avatar Sebastian Bergandy :keyboard:
Browse files

OZG-7473 add validation messages and change collection

Sub task: OZG-7933
parent 655a9ba5
Branches
Tags
1 merge request!10OZG-7473 add validation messages and change collection
Showing
with 34 additions and 30 deletions
...@@ -23,6 +23,8 @@ ...@@ -23,6 +23,8 @@
*/ */
package de.ozgcloud.admin.reporting; package de.ozgcloud.admin.reporting;
import static de.ozgcloud.admin.common.errorhandling.ValidationMessageCodes.*;
import java.util.List; import java.util.List;
import jakarta.validation.Valid; import jakarta.validation.Valid;
...@@ -41,26 +43,28 @@ import lombok.Singular; ...@@ -41,26 +43,28 @@ import lombok.Singular;
import lombok.ToString; import lombok.ToString;
import lombok.extern.jackson.Jacksonized; import lombok.extern.jackson.Jacksonized;
@Document("settings") @Document(AggregationMapping.COLLECTION_NAME)
@TypeAlias(AggregationMapping.TYPE_ALIAS) @TypeAlias(AggregationMapping.TYPE_ALIAS)
@Jacksonized @Jacksonized
@Builder @Builder
@Getter @Getter
@ToString @ToString
public class AggregationMapping { public class AggregationMapping {
static final String COLLECTION_NAME = "aggregationMapping";
public static final String TYPE_ALIAS = "AggregationMapping"; public static final String TYPE_ALIAS = "AggregationMapping";
@Id @Id
@JsonIgnore @JsonIgnore
private String id; private String id;
@Builder.Default
private String name = "aggregationMapping"; @NotEmpty(message = FIELD_IS_EMPTY)
private String name;
@Valid @Valid
private FormIdentifier formIdentifier; private FormIdentifier formIdentifier;
@NotEmpty @NotEmpty(message = FIELD_IS_EMPTY)
@Singular @Singular
@Valid @Valid
private List<FieldMapping> mappings; private List<FieldMapping> mappings;
...@@ -69,9 +73,9 @@ public class AggregationMapping { ...@@ -69,9 +73,9 @@ public class AggregationMapping {
@Getter @Getter
@ToString @ToString
static class FieldMapping { static class FieldMapping {
@NotBlank @NotBlank(message = FIELD_IS_EMPTY)
private String sourcePath; private String sourcePath;
// @NotBlank //TODO reactivate in OZG-7668 @NotBlank(message = FIELD_IS_EMPTY)
private String targetPath; private String targetPath;
} }
...@@ -79,9 +83,9 @@ public class AggregationMapping { ...@@ -79,9 +83,9 @@ public class AggregationMapping {
@Getter @Getter
@ToString @ToString
static class FormIdentifier { static class FormIdentifier {
@NotBlank @NotBlank(message = FIELD_IS_EMPTY)
private String formEngineName; private String formEngineName;
@NotBlank @NotBlank(message = FIELD_IS_EMPTY)
private String formId; private String formId;
} }
} }
...@@ -34,5 +34,5 @@ public interface AggregationMappingMapper { ...@@ -34,5 +34,5 @@ public interface AggregationMappingMapper {
@Mapping(target = "fieldMapping", ignore = true) @Mapping(target = "fieldMapping", ignore = true)
@Mapping(target = "fieldMappings", source = "mappings") @Mapping(target = "fieldMappings", source = "mappings")
AggregationMappingDto toMapping(AggregationMapping setting); AggregationMappingDto toMapping(AggregationMapping aggregationMapping);
} }
...@@ -23,12 +23,11 @@ ...@@ -23,12 +23,11 @@
*/ */
package de.ozgcloud.admin.reporting; package de.ozgcloud.admin.reporting;
import java.util.stream.Stream; import java.util.List;
import de.ozgcloud.admin.common.DtoService; import de.ozgcloud.admin.common.DtoService;
import de.ozgcloud.admin.common.SettingDtoService; import de.ozgcloud.admin.common.SettingDtoService;
import de.ozgcloud.admin.setting.SettingConstants; import de.ozgcloud.admin.setting.SettingConstants;
import de.ozgcloud.admin.setting.SettingRepository;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor @RequiredArgsConstructor
...@@ -37,16 +36,16 @@ class ReportingAggregationManagerSettingDtoService implements SettingDtoService ...@@ -37,16 +36,16 @@ class ReportingAggregationManagerSettingDtoService implements SettingDtoService
private final AggregationMappingMapper mapper; private final AggregationMappingMapper mapper;
private final SettingRepository repository; private final AggregationMappingRepository repository;
@Override @Override
public ReportingAggregationManagerSettingDto getDataTransferObject() { public ReportingAggregationManagerSettingDto getDataTransferObject() {
return mapToDto(repository.findByType("AggregationMapping", AggregationMapping.class)); return mapToDto(repository.findAll());
} }
ReportingAggregationManagerSettingDto mapToDto(Stream<AggregationMapping> settings) { ReportingAggregationManagerSettingDto mapToDto(List<AggregationMapping> aggregationMappings) {
return ReportingAggregationManagerSettingDto.builder() return ReportingAggregationManagerSettingDto.builder()
.aggregationMappings(settings.map(mapper::toMapping).toList()) .aggregationMappings(aggregationMappings.stream().map(mapper::toMapping).toList())
.build(); .build();
} }
......
...@@ -98,7 +98,7 @@ public class AggregationMappingEnvironmentSettingITCase { ...@@ -98,7 +98,7 @@ public class AggregationMappingEnvironmentSettingITCase {
.targetPath(YamlTestFactory.TARGET_PATH_2_2).build()) .targetPath(YamlTestFactory.TARGET_PATH_2_2).build())
.build(); .build();
mongoOperations.dropCollection("settings"); mongoOperations.dropCollection(AggregationMapping.COLLECTION_NAME);
mongoOperations.save(aggregationMapping1); mongoOperations.save(aggregationMapping1);
mongoOperations.save(aggregationMapping2); mongoOperations.save(aggregationMapping2);
} }
......
...@@ -47,7 +47,7 @@ class AggregationMappingRepositoryITCase { ...@@ -47,7 +47,7 @@ class AggregationMappingRepositoryITCase {
@BeforeEach @BeforeEach
void dropCollection() { void dropCollection() {
operations.dropCollection("settings"); operations.dropCollection(AggregationMapping.COLLECTION_NAME);
} }
@Test @Test
......
...@@ -31,6 +31,7 @@ import de.ozgcloud.admin.reporting.AggregationMapping.FormIdentifier; ...@@ -31,6 +31,7 @@ import de.ozgcloud.admin.reporting.AggregationMapping.FormIdentifier;
public class AggregationMappingTestFactory { public class AggregationMappingTestFactory {
public static final String ID = UUID.randomUUID().toString(); public static final String ID = UUID.randomUUID().toString();
public static final String NAME = "Test Auswertung";
public static final String FORM_ENGINE_NAME = "A12"; public static final String FORM_ENGINE_NAME = "A12";
public static final String FORM_ID = "42"; public static final String FORM_ID = "42";
...@@ -44,6 +45,7 @@ public class AggregationMappingTestFactory { ...@@ -44,6 +45,7 @@ public class AggregationMappingTestFactory {
public static AggregationMapping.AggregationMappingBuilder createBuilder() { public static AggregationMapping.AggregationMappingBuilder createBuilder() {
return AggregationMapping.builder() return AggregationMapping.builder()
.id(UUID.randomUUID().toString()) .id(UUID.randomUUID().toString())
.name(NAME)
.formIdentifier(FormIdentifier.builder() .formIdentifier(FormIdentifier.builder()
.formEngineName(FORM_ENGINE_NAME) .formEngineName(FORM_ENGINE_NAME)
.formId(FORM_ID) .formId(FORM_ID)
......
...@@ -27,7 +27,7 @@ import static org.assertj.core.api.Assertions.*; ...@@ -27,7 +27,7 @@ import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*; import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import java.util.stream.Stream; import java.util.List;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
...@@ -38,8 +38,6 @@ import org.mockito.InjectMocks; ...@@ -38,8 +38,6 @@ import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Spy; import org.mockito.Spy;
import de.ozgcloud.admin.setting.SettingRepository;
class ReportingAggregationManagerSettingDtoServiceTest { class ReportingAggregationManagerSettingDtoServiceTest {
@Spy @Spy
...@@ -49,7 +47,7 @@ class ReportingAggregationManagerSettingDtoServiceTest { ...@@ -49,7 +47,7 @@ class ReportingAggregationManagerSettingDtoServiceTest {
@Mock @Mock
private AggregationMappingMapper mapper; private AggregationMappingMapper mapper;
@Mock @Mock
private SettingRepository repository; private AggregationMappingRepository repository;
@Nested @Nested
class TestMapToDto { class TestMapToDto {
...@@ -62,14 +60,14 @@ class ReportingAggregationManagerSettingDtoServiceTest { ...@@ -62,14 +60,14 @@ class ReportingAggregationManagerSettingDtoServiceTest {
@Test @Test
void shouldCallMapper() { void shouldCallMapper() {
var mapping = AggregationMappingTestFactory.create(); var mapping = AggregationMappingTestFactory.create();
service.mapToDto(Stream.of(mapping)); service.mapToDto(List.of(mapping));
verify(mapper).toMapping(mapping); verify(mapper).toMapping(mapping);
} }
@Test @Test
void shouldBuildDto() { void shouldBuildDto() {
var dto = service.mapToDto(Stream.of(AggregationMappingTestFactory.create())); var dto = service.mapToDto(List.of(AggregationMappingTestFactory.create()));
assertThat(dto).usingRecursiveComparison().isEqualTo(ReportingAggregationMAnagerSettingDtoTestFactory.create()); assertThat(dto).usingRecursiveComparison().isEqualTo(ReportingAggregationMAnagerSettingDtoTestFactory.create());
} }
...@@ -79,7 +77,7 @@ class ReportingAggregationManagerSettingDtoServiceTest { ...@@ -79,7 +77,7 @@ class ReportingAggregationManagerSettingDtoServiceTest {
class TestGetDataTransferObject { class TestGetDataTransferObject {
@Captor @Captor
private ArgumentCaptor<Stream<AggregationMapping>> streamCaptor; private ArgumentCaptor<List<AggregationMapping>> listCaptor;
@BeforeEach @BeforeEach
void disableMapToDtoFunction() { void disableMapToDtoFunction() {
...@@ -90,18 +88,18 @@ class ReportingAggregationManagerSettingDtoServiceTest { ...@@ -90,18 +88,18 @@ class ReportingAggregationManagerSettingDtoServiceTest {
void shouldCallRepository() { void shouldCallRepository() {
service.getDataTransferObject(); service.getDataTransferObject();
verify(repository).findByType(AggregationMapping.TYPE_ALIAS, AggregationMapping.class); verify(repository).findAll();
} }
@Test @Test
void shouldCallMapToDto() { void shouldCallMapToDto() {
AggregationMapping mapping = AggregationMappingTestFactory.create(); AggregationMapping mapping = AggregationMappingTestFactory.create();
when(repository.findByType(any(), any())).thenReturn(Stream.of(mapping)); when(repository.findAll()).thenReturn(List.of(mapping));
service.getDataTransferObject(); service.getDataTransferObject();
verify(service).mapToDto(streamCaptor.capture()); verify(service).mapToDto(listCaptor.capture());
assertThat(streamCaptor.getValue()).contains(mapping); assertThat(listCaptor.getValue()).contains(mapping);
} }
} }
......
...@@ -56,7 +56,7 @@ class ReportingSettingITCase { ...@@ -56,7 +56,7 @@ class ReportingSettingITCase {
@BeforeEach @BeforeEach
void clearDatabase() { void clearDatabase() {
mongoOperations.dropCollection("settings"); mongoOperations.dropCollection(AggregationMapping.COLLECTION_NAME);
} }
@Test @Test
...@@ -110,7 +110,7 @@ class ReportingSettingITCase { ...@@ -110,7 +110,7 @@ class ReportingSettingITCase {
.contentType(MediaType.APPLICATION_JSON).content(TestUtils.loadTextFile("reporting/request.json"))) .contentType(MediaType.APPLICATION_JSON).content(TestUtils.loadTextFile("reporting/request.json")))
.andExpect(status().isCreated()); .andExpect(status().isCreated());
var collection = mongoOperations.getCollection("settings"); var collection = mongoOperations.getCollection(AggregationMapping.COLLECTION_NAME);
assertThat(collection.countDocuments()).isEqualTo(1); assertThat(collection.countDocuments()).isEqualTo(1);
var mapping = mongoOperations.findAll(AggregationMapping.class).getFirst(); var mapping = mongoOperations.findAll(AggregationMapping.class).getFirst();
assertThat(mapping).usingRecursiveComparison().ignoringFields("id").isEqualTo(AggregationMappingTestFactory.create()); assertThat(mapping).usingRecursiveComparison().ignoringFields("id").isEqualTo(AggregationMappingTestFactory.create());
......
{ {
"name": "Test Auswertung",
"formIdentifier": { "formIdentifier": {
"formEngineName": "A12", "formEngineName": "A12",
"formId": "42" "formId": "42"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment