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

OZG-6842 fix formId mapping

parent 18e192df
No related branches found
No related tags found
No related merge requests found
package de.ozgcloud.apilib.vorgang.grpc;
import java.util.ArrayList;
import java.util.Objects;
import org.mapstruct.CollectionMappingStrategy;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
......@@ -18,10 +21,11 @@ import de.ozgcloud.vorgang.vorgang.GrpcVorgangQueryExpression.Builder;
@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, unmappedTargetPolicy = ReportingPolicy.WARN)
public interface OzgCloudVorgangQueryMapper {
static final String FORM_ENGINE_NAME_PATH = "formEngineName";
static final String FORM_ENGINE_NAME_PATH = "eingangs.header.formEngineName";
static final String STATUS_PATH = "status";
static final String ORGANISATIONS_EINHEIT_ID_PATH = "eingangs.zustaendigeStelle.organisationseinheitenId";
static final String AKTENZEICHEN_PATH = "aktenzeichen";
static final String FORM_ID_PATH = "eingangs.header.formId";
default GrpcQuery toGrpc(OzgCloudVorgangQuery ozgCloudVorgangQuery) {
var queryBuilder = mapPropertiesToQuery(ozgCloudVorgangQuery);
......@@ -38,7 +42,7 @@ public interface OzgCloudVorgangQueryMapper {
default GrpcQuery.Builder mapPropertiesToQuery(OzgCloudVorgangQuery query) {
var queryBuilder = GrpcQuery.newBuilder().setLogicalOperator(GrpcLogicalOperator.AND);
query.getAktenzeichen().map(this::toAktenzeichenExpression).ifPresent(queryBuilder::addExpressions);
query.getForm().map(this::toFormExpression).ifPresent(queryBuilder::addExpressions);
query.getForm().map(this::toFormExpressions).ifPresent(queryBuilder::addAllExpressions);
query.getStatus().map(this::toStatusExpression).ifPresent(queryBuilder::addExpressions);
query.getOrganisationsEinheitId().map(this::toOrganisationsEinheitIdExpression).ifPresent(queryBuilder::addExpressions);
return queryBuilder;
......@@ -65,11 +69,29 @@ public interface OzgCloudVorgangQueryMapper {
.build();
}
default GrpcVorgangQueryExpression toFormExpression(FormIdentification formIdentification) {
return getEqualExpressionBuilder()
default Iterable<GrpcVorgangQueryExpression> toFormExpressions(FormIdentification formIdentification) {
var expressions = new ArrayList<GrpcVorgangQueryExpression>(2);
if (Objects.nonNull(formIdentification.formEngineName())) {
addFormEngineNameExpression(formIdentification, expressions);
}
if (Objects.nonNull(formIdentification.formId())) {
addFormIdExpression(formIdentification, expressions);
}
return expressions;
}
private void addFormEngineNameExpression(FormIdentification formIdentification, ArrayList<GrpcVorgangQueryExpression> expressions) {
expressions.add(getEqualExpressionBuilder()
.setPath(FORM_ENGINE_NAME_PATH)
.setOperandStringValue(formIdentification.formEngineName())
.build();
.build());
}
private void addFormIdExpression(FormIdentification formIdentification, ArrayList<GrpcVorgangQueryExpression> expressions) {
expressions.add(getEqualExpressionBuilder()
.setPath(FORM_ID_PATH)
.setOperandStringValue(formIdentification.formId())
.build());
}
private Builder getEqualExpressionBuilder() {
......
......@@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.List;
import java.util.Optional;
import org.junit.jupiter.api.BeforeEach;
......@@ -14,6 +15,7 @@ import org.mockito.Spy;
import de.ozgcloud.apilib.vorgang.FormIdentificationTestFactory;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangQuery;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangQuery.FormIdentification;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangQuery.Query;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangQueryTestFactory;
import de.ozgcloud.apilib.vorgang.QueryTestFactory;
......@@ -142,16 +144,18 @@ class OzgCloudVorgangQueryMapperTest {
@Nested
class TestMapPropertiesToQuery {
private final GrpcVorgangQueryExpression aktenzeichenExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
.setPath(OzgCloudVorgangQueryMapper.AKTENZEICHEN_PATH)
private final GrpcVorgangQueryExpression formEngineNameExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
.setPath(OzgCloudVorgangQueryMapper.FORM_ENGINE_NAME_PATH)
.setOperator(GrpcQueryOperator.EQUAL)
.setOperandStringValue(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN)
.setOperandStringValue(FormIdentificationTestFactory.FORM_ENGINE_NAME)
.build();
private final GrpcVorgangQueryExpression formExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
.setPath(OzgCloudVorgangQueryMapper.FORM_ENGINE_NAME_PATH)
private final List<GrpcVorgangQueryExpression> formExpressions = List.of(formEngineNameExpression);
private final GrpcVorgangQueryExpression aktenzeichenExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
.setPath(OzgCloudVorgangQueryMapper.AKTENZEICHEN_PATH)
.setOperator(GrpcQueryOperator.EQUAL)
.setOperandStringValue(FormIdentificationTestFactory.FORM_ENGINE_NAME)
.setOperandStringValue(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN)
.build();
private final GrpcVorgangQueryExpression statusExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
......@@ -174,9 +178,10 @@ class OzgCloudVorgangQueryMapperTest {
@BeforeEach
void mock() {
doReturn(aktenzeichenExpression).when(mapper).toAktenzeichenExpression(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN);
doReturn(formExpression).when(mapper).toOrganisationsEinheitIdExpression(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID);
doReturn(organisationsEinheitIdExpression).when(mapper)
.toOrganisationsEinheitIdExpression(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID);
doReturn(statusExpression).when(mapper).toStatusExpression(OzgCloudVorgangQueryTestFactory.STATUS);
doReturn(organisationsEinheitIdExpression).when(mapper).toFormExpression(OzgCloudVorgangQueryTestFactory.FORM);
doReturn(formExpressions).when(mapper).toFormExpressions(OzgCloudVorgangQueryTestFactory.FORM);
}
@Test
......@@ -204,15 +209,15 @@ class OzgCloudVorgangQueryMapperTest {
void shouldCallToFormExpression() {
callMapPropertiesToQuery();
verify(mapper).toFormExpression(OzgCloudVorgangQueryTestFactory.FORM);
verify(mapper).toFormExpressions(OzgCloudVorgangQueryTestFactory.FORM);
}
@Test
void shouldReturnQueryBuilderContainingAllExpressions() {
var queryBuilder = callMapPropertiesToQuery();
assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(aktenzeichenExpression, statusExpression, formExpression,
organisationsEinheitIdExpression);
assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(aktenzeichenExpression, statusExpression,
formEngineNameExpression, organisationsEinheitIdExpression);
}
@Test
......@@ -234,6 +239,14 @@ class OzgCloudVorgangQueryMapperTest {
.aktenzeichen(Optional.empty())
.build();
@BeforeEach
void mock() {
doReturn(organisationsEinheitIdExpression).when(mapper)
.toOrganisationsEinheitIdExpression(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID);
doReturn(statusExpression).when(mapper).toStatusExpression(OzgCloudVorgangQueryTestFactory.STATUS);
doReturn(formExpressions).when(mapper).toFormExpressions(OzgCloudVorgangQueryTestFactory.FORM);
}
@Test
void shouldNotCallToAktenzeichenExpression() {
callMapPropertiesToQuery();
......@@ -245,7 +258,7 @@ class OzgCloudVorgangQueryMapperTest {
void shouldReturnQueryBuilderContainingAllOtherExpressions() {
var queryBuilder = callMapPropertiesToQuery();
assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(statusExpression, formExpression,
assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(statusExpression, formEngineNameExpression,
organisationsEinheitIdExpression);
}
......@@ -261,11 +274,19 @@ class OzgCloudVorgangQueryMapperTest {
.form(Optional.empty())
.build();
@BeforeEach
void mock() {
doReturn(aktenzeichenExpression).when(mapper).toAktenzeichenExpression(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN);
doReturn(organisationsEinheitIdExpression).when(mapper)
.toOrganisationsEinheitIdExpression(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID);
doReturn(statusExpression).when(mapper).toStatusExpression(OzgCloudVorgangQueryTestFactory.STATUS);
}
@Test
void shouldNotCallToFormExpression() {
callMapPropertiesToQuery();
verify(mapper, never()).toFormExpression(any());
verify(mapper, never()).toFormExpressions(any());
}
@Test
......@@ -288,6 +309,14 @@ class OzgCloudVorgangQueryMapperTest {
.status(Optional.empty())
.build();
@BeforeEach
void mock() {
doReturn(aktenzeichenExpression).when(mapper).toAktenzeichenExpression(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN);
doReturn(organisationsEinheitIdExpression).when(mapper)
.toOrganisationsEinheitIdExpression(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID);
doReturn(formExpressions).when(mapper).toFormExpressions(OzgCloudVorgangQueryTestFactory.FORM);
}
@Test
void shouldNotCallToStatusExpression() {
callMapPropertiesToQuery();
......@@ -299,7 +328,7 @@ class OzgCloudVorgangQueryMapperTest {
void shouldReturnQueryBuilderContainingAllOtherExpressions() {
var queryBuilder = callMapPropertiesToQuery();
assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(aktenzeichenExpression, formExpression,
assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(aktenzeichenExpression, formEngineNameExpression,
organisationsEinheitIdExpression);
}
......@@ -315,6 +344,13 @@ class OzgCloudVorgangQueryMapperTest {
.organisationsEinheitId(Optional.empty())
.build();
@BeforeEach
void mock() {
doReturn(aktenzeichenExpression).when(mapper).toAktenzeichenExpression(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN);
doReturn(statusExpression).when(mapper).toStatusExpression(OzgCloudVorgangQueryTestFactory.STATUS);
doReturn(formExpressions).when(mapper).toFormExpressions(OzgCloudVorgangQueryTestFactory.FORM);
}
@Test
void shouldNotCallToOrganisationsEinheitIdExpression() {
callMapPropertiesToQuery();
......@@ -326,7 +362,8 @@ class OzgCloudVorgangQueryMapperTest {
void shouldReturnQueryBuilderContainingAllOtherExpressions() {
var queryBuilder = callMapPropertiesToQuery();
assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(aktenzeichenExpression, statusExpression, formExpression);
assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(aktenzeichenExpression, statusExpression,
formEngineNameExpression);
}
private GrpcQuery.Builder callMapPropertiesToQuery() {
......@@ -389,17 +426,38 @@ class OzgCloudVorgangQueryMapperTest {
@Nested
class TestToFormExpression {
private final GrpcVorgangQueryExpression formExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
private final GrpcVorgangQueryExpression formEngineNameExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
.setPath(OzgCloudVorgangQueryMapper.FORM_ENGINE_NAME_PATH)
.setOperator(GrpcQueryOperator.EQUAL)
.setOperandStringValue(FormIdentificationTestFactory.FORM_ENGINE_NAME)
.build();
private final GrpcVorgangQueryExpression formIdExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder()
.setPath(OzgCloudVorgangQueryMapper.FORM_ID_PATH)
.setOperator(GrpcQueryOperator.EQUAL)
.setOperandStringValue(FormIdentificationTestFactory.FORM_ID)
.build();
@Test
void shouldReturnFormEngineNameExpression() {
var expressions = mapper.toFormExpressions(new FormIdentification(null, FormIdentificationTestFactory.FORM_ENGINE_NAME));
assertThat(expressions).usingRecursiveFieldByFieldElementComparator().containsExactly(formEngineNameExpression);
}
@Test
void shouldReturnFormIdExpression() {
var expressions = mapper.toFormExpressions(new FormIdentification(FormIdentificationTestFactory.FORM_ID, null));
assertThat(expressions).usingRecursiveFieldByFieldElementComparator().containsExactly(formIdExpression);
}
@Test
void shouldReturnFormExpression() {
var expression = mapper.toFormExpression(OzgCloudVorgangQueryTestFactory.FORM);
void shouldReturnBothExpressions() {
var expressions = mapper.toFormExpressions(FormIdentificationTestFactory.create());
assertThat(expression).usingRecursiveComparison().isEqualTo(formExpression);
assertThat(expressions).usingRecursiveFieldByFieldElementComparator().containsExactlyInAnyOrder(formEngineNameExpression,
formIdExpression);
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment