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

Merge branch 'OZG-7473-aggregation-mapping-validation' into 'main'

OZG-7473 add validation messages and change collection

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