diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapper.java index 578097370e5d12950085a7a3aeb0b45f57154a56..5210fc4085042c585bc0fd3e8db871443d794c1d 100644 --- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapper.java +++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapper.java @@ -4,6 +4,7 @@ import org.mapstruct.CollectionMappingStrategy; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.NullValueCheckStrategy; +import org.mapstruct.ReportingPolicy; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangQuery; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangQuery.FormIdentification; @@ -14,52 +15,59 @@ import de.ozgcloud.vorgang.vorgang.GrpcQuery; import de.ozgcloud.vorgang.vorgang.GrpcVorgangQueryExpression; import de.ozgcloud.vorgang.vorgang.GrpcVorgangQueryExpression.Builder; -@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) +@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, unmappedTargetPolicy = ReportingPolicy.WARN) public interface OzgCloudVorgangQueryMapper { - default GrpcQuery toGrpc(OzgCloudVorgangQuery query) { - var queryBuilder = GrpcQuery.newBuilder(); - addPropertiesToExpressions(query, queryBuilder); + static final String FORM_ENGINE_NAME_PATH = "formEngineName"; + static final String STATUS_PATH = "status"; + static final String ORGANISATIONS_EINHEIT_ID_PATH = "eingangs.zustaendigeStelle.organisationseinheitenId"; + static final String AKTENZEICHEN_PATH = "aktenzeichen"; + + default GrpcQuery toGrpc(OzgCloudVorgangQuery ozgCloudVorgangQuery) { + var queryBuilder = mapPropertiesToQuery(ozgCloudVorgangQuery); if (queryBuilder.getExpressionsList().isEmpty()) { - return query.getQuery().map(this::nestedQueryToGrpc).orElseGet(queryBuilder::build); + return ozgCloudVorgangQuery.getQuery().map(this::mapQuery) + .orElseGet(GrpcQuery::getDefaultInstance); } - query.getQuery().map(this::nestedQueryToGrpc).ifPresent(queryBuilder::setNestedQuery); - return queryBuilder.setLogicalOperator(GrpcLogicalOperator.AND).build(); + ozgCloudVorgangQuery.getQuery().map(this::mapQuery).ifPresent(queryBuilder::setNestedQuery); + return queryBuilder.build(); } - private void addPropertiesToExpressions(OzgCloudVorgangQuery query, GrpcQuery.Builder queryBuilder) { + 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.getStatus().map(this::toStatusExpression).ifPresent(queryBuilder::addExpressions); query.getOrganisationsEinheitId().map(this::toOrganisationsEinheitIdExpression).ifPresent(queryBuilder::addExpressions); + return queryBuilder; } - private GrpcVorgangQueryExpression toAktenzeichenExpression(String aktenzeichen) { + default GrpcVorgangQueryExpression toAktenzeichenExpression(String aktenzeichen) { return getEqualExpressionBuilder() - .setPath("aktenzeichen") + .setPath(AKTENZEICHEN_PATH) .setOperandStringValue(aktenzeichen) .build(); } - private GrpcVorgangQueryExpression toOrganisationsEinheitIdExpression(String organisationsEinheitId) { + default GrpcVorgangQueryExpression toOrganisationsEinheitIdExpression(String organisationsEinheitId) { return getEqualExpressionBuilder() - .setPath("eingangs.zustaendigeStelle.organisationseinheitenId") + .setPath(ORGANISATIONS_EINHEIT_ID_PATH) .setOperandStringValue(organisationsEinheitId) .build(); } - private GrpcVorgangQueryExpression toStatusExpression(String status) { + default GrpcVorgangQueryExpression toStatusExpression(String status) { return getEqualExpressionBuilder() - .setPath("status") + .setPath(STATUS_PATH) .setOperandStringValue(status) .build(); } - private GrpcVorgangQueryExpression toFormExpression(FormIdentification formIdentification) { + default GrpcVorgangQueryExpression toFormExpression(FormIdentification formIdentification) { return getEqualExpressionBuilder() - .setPath("formEngineName") + .setPath(FORM_ENGINE_NAME_PATH) .setOperandStringValue(formIdentification.formEngineName()) .build(); } @@ -69,15 +77,6 @@ public interface OzgCloudVorgangQueryMapper { .setOperator(GrpcQueryOperator.EQUAL); } - @Mapping(target = "expressionsList.mergeFrom", ignore = true) - @Mapping(target = "expressionsList.clearField", ignore = true) - @Mapping(target = "expressionsList.clearOneof", ignore = true) - @Mapping(target = "expressionsList.mergeUnknownFields", ignore = true) - @Mapping(target = "expressionsList.unknownFields", ignore = true) - @Mapping(target = "expressionsList.allFields", ignore = true) - @Mapping(target = "expressionsList.operandStringValueBytes", ignore = true) - @Mapping(target = "expressionsList.operatorValue", ignore = true) - @Mapping(target = "expressionsList.pathBytes", ignore = true) @Mapping(target = "mergeFrom", ignore = true) @Mapping(target = "clearField", ignore = true) @Mapping(target = "clearOneof", ignore = true) @@ -91,5 +90,5 @@ public interface OzgCloudVorgangQueryMapper { @Mapping(target = "expressionsOrBuilderList", ignore = true) @Mapping(target = "expressionsList", source = "expressions") - GrpcQuery nestedQueryToGrpc(Query query); + GrpcQuery mapQuery(Query query); } diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapperTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapperTest.java index 3678a34105cc1a4f02b7c323ad5e2a723c7429ec..32e3f49a2dcf18f7076f82247c08a6ba223c9efa 100644 --- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapperTest.java +++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangQueryMapperTest.java @@ -1,13 +1,16 @@ package de.ozgcloud.apilib.vorgang.grpc; 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; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mapstruct.factory.Mappers; +import org.mockito.Spy; import de.ozgcloud.apilib.vorgang.FormIdentificationTestFactory; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangQuery; @@ -21,134 +24,399 @@ import de.ozgcloud.vorgang.vorgang.GrpcVorgangQueryExpression; class OzgCloudVorgangQueryMapperTest { + @Spy private final OzgCloudVorgangQueryMapper mapper = Mappers.getMapper(OzgCloudVorgangQueryMapper.class); @Nested class ToGrpc { + @Test + void shouldCallMapProperetiesToQuery() { + var query = OzgCloudVorgangQueryTestFactory.create(); + + mapper.toGrpc(query); + + verify(mapper).mapPropertiesToQuery(query); + } + + @Nested + class OnNoNestedQuery { + + private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.createBuilder() + .query(Optional.empty()) + .build(); + + private final GrpcQuery.Builder queryBuilder = GrpcQueryTestFactory.createBuilder(); + + @BeforeEach + void mock() { + doReturn(queryBuilder).when(mapper).mapPropertiesToQuery(query); + } + + @Test + void shouldReturnBuiltQuery() { + var grpcQuery = mapper.toGrpc(query); + + assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQueryTestFactory.create()); + } + } + + @Nested + class OnNoProperties { + private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.create(); + + @BeforeEach + void mock() { + doReturn(queryBuilder).when(mapper).mapPropertiesToQuery(query); + } + + private final GrpcQuery.Builder queryBuilder = GrpcQueryTestFactory.createBuilder() + .clearExpressions(); + + @Test + void shouldMapQueryToGrpcQuery() { + mapper.toGrpc(query); + + verify(mapper).mapQuery(OzgCloudVorgangQueryTestFactory.QUERY); + } + + @Test + void shouldReturnMappedQuery() { + var mappedQuery = GrpcQueryTestFactory.create(); + doReturn(mappedQuery).when(mapper).mapQuery(OzgCloudVorgangQueryTestFactory.QUERY); + + var grpcQuery = mapper.toGrpc(query); + + assertThat(grpcQuery).isEqualTo(mappedQuery); + } + } + + @Nested + class OnNestedQueryAndProperties { + + private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.create(); + + private final GrpcQuery.Builder queryBuilder = GrpcQueryTestFactory.createBuilder(); + + @BeforeEach + void mock() { + doReturn(queryBuilder).when(mapper).mapPropertiesToQuery(query); + } + + @Test + void shouldCallMapQuery() { + mapper.toGrpc(query); + + verify(mapper).mapQuery(OzgCloudVorgangQueryTestFactory.QUERY); + } + + @Test + void shouldReturnGrpcQuery() { + var nestedQuery = GrpcQueryTestFactory.create(); + var expectedQuery = GrpcQueryTestFactory.createBuilder() + .setNestedQuery(nestedQuery) + .build(); + doReturn(nestedQuery).when(mapper).mapQuery(OzgCloudVorgangQueryTestFactory.QUERY); + + var grpcQuery = mapper.toGrpc(query); + + assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(expectedQuery); + } + + } + + @Nested + class OnEmptyQuery { + + private final OzgCloudVorgangQuery query = OzgCloudVorgangQuery.builder().build(); + + @Test + void shouldMapToDefaultGrpcQuery() { + var grpcQuery = mapper.toGrpc(query); + + assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQuery.getDefaultInstance()); + } + } + } + + @Nested + class TestMapPropertiesToQuery { + private final GrpcVorgangQueryExpression aktenzeichenExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder() - .setPath("aktenzeichen") + .setPath(OzgCloudVorgangQueryMapper.AKTENZEICHEN_PATH) .setOperator(GrpcQueryOperator.EQUAL) .setOperandStringValue(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN) .build(); private final GrpcVorgangQueryExpression formExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder() - .setPath("formEngineName") + .setPath(OzgCloudVorgangQueryMapper.FORM_ENGINE_NAME_PATH) .setOperator(GrpcQueryOperator.EQUAL) .setOperandStringValue(FormIdentificationTestFactory.FORM_ENGINE_NAME) .build(); private final GrpcVorgangQueryExpression statusExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder() - .setPath("status") + .setPath(OzgCloudVorgangQueryMapper.STATUS_PATH) .setOperator(GrpcQueryOperator.EQUAL) .setOperandStringValue(OzgCloudVorgangQueryTestFactory.STATUS) .build(); private final GrpcVorgangQueryExpression organisationsEinheitIdExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder() - .setPath("eingangs.zustaendigeStelle.organisationseinheitenId") + .setPath(OzgCloudVorgangQueryMapper.ORGANISATIONS_EINHEIT_ID_PATH) .setOperator(GrpcQueryOperator.EQUAL) .setOperandStringValue(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID) .build(); @Nested - class OnNoNestedQuery { + class OnAllPropertiesPresent { + + private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.create(); + + @BeforeEach + void mock() { + doReturn(aktenzeichenExpression).when(mapper).toAktenzeichenExpression(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN); + doReturn(formExpression).when(mapper).toOrganisationsEinheitIdExpression(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID); + doReturn(statusExpression).when(mapper).toStatusExpression(OzgCloudVorgangQueryTestFactory.STATUS); + doReturn(organisationsEinheitIdExpression).when(mapper).toFormExpression(OzgCloudVorgangQueryTestFactory.FORM); + } + + @Test + void shouldCallToAktenzeichenExpression() { + callMapPropertiesToQuery(); + + verify(mapper).toAktenzeichenExpression(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN); + } + + @Test + void shouldCallToOrganisationsEinheitIdExpression() { + callMapPropertiesToQuery(); + + verify(mapper).toOrganisationsEinheitIdExpression(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID); + } + + @Test + void shouldCallToStatusExpression() { + callMapPropertiesToQuery(); + + verify(mapper).toStatusExpression(OzgCloudVorgangQueryTestFactory.STATUS); + } + + @Test + void shouldCallToFormExpression() { + callMapPropertiesToQuery(); + + verify(mapper).toFormExpression(OzgCloudVorgangQueryTestFactory.FORM); + } + + @Test + void shouldReturnQueryBuilderContainingAllExpressions() { + var queryBuilder = callMapPropertiesToQuery(); + + assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(aktenzeichenExpression, statusExpression, formExpression, + organisationsEinheitIdExpression); + } + + @Test + void shouldReturnQueryBuilderWIthAndOperator() { + var queryBuilder = callMapPropertiesToQuery(); + + assertThat(queryBuilder.getLogicalOperator()).isEqualTo(GrpcLogicalOperator.AND); + } + + private GrpcQuery.Builder callMapPropertiesToQuery() { + return mapper.mapPropertiesToQuery(query); + } + } + + @Nested + class OnEmptyAktenzeichen { private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.createBuilder() - .query(Optional.empty()) + .aktenzeichen(Optional.empty()) .build(); @Test - void shouldMapToGrpcQuery() { - var grpcQuery = mapper.toGrpc(query); + void shouldNotCallToAktenzeichenExpression() { + callMapPropertiesToQuery(); + + verify(mapper, never()).toAktenzeichenExpression(any()); + } + + @Test + void shouldReturnQueryBuilderContainingAllOtherExpressions() { + var queryBuilder = callMapPropertiesToQuery(); + + assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(statusExpression, formExpression, + organisationsEinheitIdExpression); + } - assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQueryTestFactory.createBuilder().clearExpressions() - .addAllExpressions(List.of(aktenzeichenExpression, formExpression, statusExpression, organisationsEinheitIdExpression)) - .setLogicalOperator(GrpcLogicalOperator.AND) - .build()); + private GrpcQuery.Builder callMapPropertiesToQuery() { + return mapper.mapPropertiesToQuery(query); } } @Nested - class OnNestedQueryAndOptionals { + class OnEmptyForm { - private final OzgCloudVorgangQuery.OzgCloudVorgangQueryBuilder queryBuilder = OzgCloudVorgangQueryTestFactory.createBuilder(); + private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.createBuilder() + .form(Optional.empty()) + .build(); @Test - void shouldMapToGrpcQuery() { - var grpcQuery = mapper.toGrpc(queryBuilder.build()); + void shouldNotCallToFormExpression() { + callMapPropertiesToQuery(); - assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQueryTestFactory.createBuilder().clearExpressions() - .addAllExpressions(List.of(aktenzeichenExpression, formExpression, statusExpression, organisationsEinheitIdExpression)) - .setLogicalOperator(GrpcLogicalOperator.AND) - .setNestedQuery(GrpcQueryTestFactory.create()) - .build()); + verify(mapper, never()).toFormExpression(any()); } @Test - void shouldMapToDoubleNestedGrpcQuery() { - var nestedQuery = QueryTestFactory.createBuilder() - .nestedQuery(QueryTestFactory.create()) - .build(); - - var grpcQuery = mapper.toGrpc(queryBuilder.query(Optional.of(nestedQuery)).build()); + void shouldReturnQueryBuilderContainingAllOtherExpressions() { + var queryBuilder = callMapPropertiesToQuery(); - assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQueryTestFactory.createBuilder().clearExpressions() - .addAllExpressions(List.of(aktenzeichenExpression, formExpression, statusExpression, organisationsEinheitIdExpression)) - .setLogicalOperator(GrpcLogicalOperator.AND) - .setNestedQuery(GrpcQueryTestFactory.createBuilder() - .setNestedQuery(GrpcQueryTestFactory.create()) - .build()) - .build()); + assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(aktenzeichenExpression, statusExpression, + organisationsEinheitIdExpression); } + private GrpcQuery.Builder callMapPropertiesToQuery() { + return mapper.mapPropertiesToQuery(query); + } } @Nested - class OnNoExplicitProperties { - private final OzgCloudVorgangQuery.OzgCloudVorgangQueryBuilder queryBuilder = OzgCloudVorgangQueryTestFactory.createBuilder() - .aktenzeichen(Optional.empty()) - .form(Optional.empty()) - .organisationsEinheitId(Optional.empty()) - .status(Optional.empty()); + class OnEmptyStatus { + + private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.createBuilder() + .status(Optional.empty()) + .build(); @Test - void shouldMapToGrpcQuery() { - var grpcQuery = mapper.toGrpc(queryBuilder.build()); + void shouldNotCallToStatusExpression() { + callMapPropertiesToQuery(); - assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQueryTestFactory.create()); + verify(mapper, never()).toStatusExpression(any()); } @Test - void shouldMapToNestedGrpcQuery() { - Query nestedQuery = QueryTestFactory.createBuilder() - .nestedQuery(QueryTestFactory.create()) - .build(); + void shouldReturnQueryBuilderContainingAllOtherExpressions() { + var queryBuilder = callMapPropertiesToQuery(); - var grpcQuery = mapper.toGrpc(queryBuilder.query(Optional.of(nestedQuery)).build()); + assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(aktenzeichenExpression, formExpression, + organisationsEinheitIdExpression); + } - assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQueryTestFactory.createBuilder() - .setNestedQuery(GrpcQueryTestFactory.create()) - .build()); + private GrpcQuery.Builder callMapPropertiesToQuery() { + return mapper.mapPropertiesToQuery(query); } } @Nested - class OnEmptyQuery { + class OnEmptyOrganisationsEinheitId { private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.createBuilder() - .aktenzeichen(Optional.empty()) - .form(Optional.empty()) .organisationsEinheitId(Optional.empty()) - .status(Optional.empty()) - .query(Optional.empty()) .build(); @Test - void shouldMapToEmptyGrpcQuery() { - var grpcQuery = mapper.toGrpc(query); + void shouldNotCallToOrganisationsEinheitIdExpression() { + callMapPropertiesToQuery(); + + verify(mapper, never()).toOrganisationsEinheitIdExpression(any()); + } + + @Test + void shouldReturnQueryBuilderContainingAllOtherExpressions() { + var queryBuilder = callMapPropertiesToQuery(); + + assertThat(queryBuilder.getExpressionsList()).containsExactlyInAnyOrder(aktenzeichenExpression, statusExpression, formExpression); + } - assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(GrpcQuery.newBuilder().build()); + private GrpcQuery.Builder callMapPropertiesToQuery() { + return mapper.mapPropertiesToQuery(query); } } } + + @Nested + class TestToAktenzeichenExpression { + + private final GrpcVorgangQueryExpression aktenzeichenExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder() + .setPath(OzgCloudVorgangQueryMapper.AKTENZEICHEN_PATH) + .setOperator(GrpcQueryOperator.EQUAL) + .setOperandStringValue(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN) + .build(); + + @Test + void shouldReturnAktenzeichenExpression() { + var expression = mapper.toAktenzeichenExpression(OzgCloudVorgangQueryTestFactory.AKTENZEICHEN); + + assertThat(expression).usingRecursiveComparison().isEqualTo(aktenzeichenExpression); + } + } + + @Nested + class TestToOrganisationsEinheitIdExpression { + + private final GrpcVorgangQueryExpression organisationsEinheitIdExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder() + .setPath(OzgCloudVorgangQueryMapper.ORGANISATIONS_EINHEIT_ID_PATH) + .setOperator(GrpcQueryOperator.EQUAL) + .setOperandStringValue(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID) + .build(); + + @Test + void shouldReturnOrganisationsEinheitIdExpression() { + var expression = mapper.toOrganisationsEinheitIdExpression(OzgCloudVorgangQueryTestFactory.ORGANISATIONS_EINHEIT_ID); + + assertThat(expression).usingRecursiveComparison().isEqualTo(organisationsEinheitIdExpression); + } + } + + @Nested + class TestToStatusExpression { + + private final GrpcVorgangQueryExpression statusExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder() + .setPath(OzgCloudVorgangQueryMapper.STATUS_PATH) + .setOperator(GrpcQueryOperator.EQUAL) + .setOperandStringValue(OzgCloudVorgangQueryTestFactory.STATUS) + .build(); + + @Test + void shouldReturnStatusExpression() { + var expression = mapper.toStatusExpression(OzgCloudVorgangQueryTestFactory.STATUS); + + assertThat(expression).usingRecursiveComparison().isEqualTo(statusExpression); + } + } + + @Nested + class TestToFormExpression { + + private final GrpcVorgangQueryExpression formExpression = GrpcVorgangQueryExpressionTestFactory.createBuilder() + .setPath(OzgCloudVorgangQueryMapper.FORM_ENGINE_NAME_PATH) + .setOperator(GrpcQueryOperator.EQUAL) + .setOperandStringValue(FormIdentificationTestFactory.FORM_ENGINE_NAME) + .build(); + + @Test + void shouldReturnFormExpression() { + var expression = mapper.toFormExpression(OzgCloudVorgangQueryTestFactory.FORM); + + assertThat(expression).usingRecursiveComparison().isEqualTo(formExpression); + } + } + + @Nested + class TestMapQuery { + + private final Query nestedQuery = QueryTestFactory.create(); + private final Query query = QueryTestFactory.createBuilder().nestedQuery(nestedQuery).build(); + + private final GrpcQuery nestedGrpcQuery = GrpcQueryTestFactory.create(); + private final GrpcQuery expectedGrpcQuery = GrpcQueryTestFactory.createBuilder().setNestedQuery(nestedGrpcQuery).build(); + + @Test + void shouldMapQuery() { + var grpcQuery = mapper.mapQuery(query); + + assertThat(grpcQuery).usingRecursiveComparison().isEqualTo(expectedGrpcQuery); + } + } }