diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangHeader.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangHeader.java index 7737b3d628f52d05c1d72714e184389e6b79410b..703f8724a55131091869f580179f94d427bca500 100644 --- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangHeader.java +++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangHeader.java @@ -32,6 +32,7 @@ import lombok.ToString; @Builder @Getter +@ToString public class OzgCloudVorgangHeader { private OzgCloudVorgangStatus status; diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangService.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangService.java index 15fee3d854648fe9be203e95739242fc9c35a70e..99632a61f6593a8cb4079064f18aa82e5e9308ad 100644 --- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangService.java +++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangService.java @@ -24,14 +24,17 @@ package de.ozgcloud.apilib.vorgang; import java.util.List; +import java.util.stream.Stream; public interface OzgCloudVorgangService { - public OzgCloudVorgang getById(OzgCloudVorgangId vorgangId); + OzgCloudVorgang getById(OzgCloudVorgangId vorgangId); - public List<OzgCloudVorgangStub> find(OzgCloudVorgangQuery query, Page page); + List<OzgCloudVorgangStub> find(OzgCloudVorgangQuery query, Page page); - public List<OzgCloudVorgangStub> search(String searchString); + List<OzgCloudVorgangStub> search(String searchString); - public List<OzgCloudVorgangStub> search(String searchString, Page page); + List<OzgCloudVorgangStub> search(String searchString, Page page); + + Stream<OzgCloudVorgangStub> findDeleted(); } diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/dummy/DummyVorgangService.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/dummy/DummyVorgangService.java index 041b0d987c5a138c0c962db1b7a816a290bbe8e2..a06ea57eb3cd98ef6dd2603b4a7eee94c283603c 100644 --- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/dummy/DummyVorgangService.java +++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/dummy/DummyVorgangService.java @@ -28,6 +28,7 @@ import java.time.temporal.ChronoUnit; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.stream.Stream; import de.ozgcloud.apilib.common.errorhandling.NotFoundException; import de.ozgcloud.apilib.file.dummy.DummyOzgCloudFileService; @@ -130,4 +131,9 @@ public class DummyVorgangService implements OzgCloudVorgangService { public List<OzgCloudVorgangStub> find(OzgCloudVorgangQuery query, Page page) { return vorgangs; } + + @Override + public Stream<OzgCloudVorgangStub> findDeleted() { + return vorgangs.stream(); + } } diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangService.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangService.java index 07d27991d9756e2a6f18669d7e5d03dc55c32f61..e6282b07b174c14f317bfde89460369eee3e4c07 100644 --- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangService.java +++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangService.java @@ -23,7 +23,10 @@ */ package de.ozgcloud.apilib.vorgang.grpc; +import static de.ozgcloud.apilib.vorgang.grpc.StreamingUtils.*; + import java.util.List; +import java.util.stream.Stream; import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextAttachingInterceptor; import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextProvider; @@ -34,6 +37,8 @@ import de.ozgcloud.apilib.vorgang.OzgCloudVorgangService; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStub; import de.ozgcloud.apilib.vorgang.Page; import de.ozgcloud.vorgang.vorgang.GrpcFilterBy; +import de.ozgcloud.vorgang.vorgang.GrpcFindDeletedVorgangRequest; +import de.ozgcloud.vorgang.vorgang.GrpcFindDeletedVorgangResponse; import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangRequest; import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangRequest.GrpcOrderBy; import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangWithEingangRequest; @@ -105,6 +110,17 @@ public class GrpcOzgCloudVorgangService implements OzgCloudVorgangService { .build(); } + @Override + public Stream<OzgCloudVorgangStub> findDeleted() { + return getFindDeletedVorgangResponses() + .flatMap(response -> response.getVorgangList().stream()) + .map(stubMapper::fromGrpc); + } + + private Stream<GrpcFindDeletedVorgangResponse> getFindDeletedVorgangResponses() { + return asStream(getVorgangServiceStub().findDeletedVorgang(GrpcFindDeletedVorgangRequest.newBuilder().build())); + } + VorgangServiceBlockingStub getVorgangServiceStub() { return vorgangServiceStub.withInterceptors(new OzgCloudCallContextAttachingInterceptor(contextProvider)); } diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangHeaderMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangHeaderMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..2e8fbfd6b0b5e0f2f838a3a407f6b562e58728f3 --- /dev/null +++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangHeaderMapper.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.apilib.vorgang.grpc; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +import de.ozgcloud.apilib.vorgang.OzgCloudUserIdMapper; +import de.ozgcloud.apilib.vorgang.OzgCloudVorgangHeader; +import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStatusMapper; +import de.ozgcloud.vorgang.vorgang.GrpcVorgangHeader; + +@Mapper(uses = { OzgCloudVorgangStatusMapper.class, OzgCloudUserIdMapper.class }) +public interface OzgCloudVorgangHeaderMapper { + + @Mapping(target = "serviceKonto", ignore = true) + OzgCloudVorgangHeader fromGrpc(GrpcVorgangHeader vorgang); +} diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapper.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapper.java index 505ed0096fbcc7cd347731824ec7b5a80a4f6c87..dd3d7a1d9413297f8c89812d219ad3c0acce49b6 100644 --- a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapper.java +++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapper.java @@ -30,12 +30,11 @@ import de.ozgcloud.apilib.vorgang.OzgCloudVorgangIdMapper; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStub; import de.ozgcloud.vorgang.vorgang.GrpcVorgangHeader; -@Mapper(uses = OzgCloudVorgangIdMapper.class) +@Mapper(uses = { OzgCloudVorgangIdMapper.class, OzgCloudVorgangHeaderMapper.class }) public interface OzgCloudVorgangStubMapper { - @Mapping(target = "header", ignore = true) - @Mapping(target = "vorgangName", ignore = true) - @Mapping(target = "vorgangNummer", ignore = true) + @Mapping(target = "vorgangNummer", source = "nummer") + @Mapping(target = "vorgangName", source = "name") + @Mapping(target = "header", source = ".") OzgCloudVorgangStub fromGrpc(GrpcVorgangHeader vorgang); - } diff --git a/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/StreamingUtils.java b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/StreamingUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..b87fd479401ef7ed882e12b0f1f056c2467122ac --- /dev/null +++ b/api-lib-core/src/main/java/de/ozgcloud/apilib/vorgang/grpc/StreamingUtils.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.apilib.vorgang.grpc; + +import java.util.Iterator; +import java.util.Spliterators; +import java.util.stream.Stream; +import java.util.stream.StreamSupport; + +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + +@NoArgsConstructor(access = AccessLevel.PRIVATE) +class StreamingUtils { + + static <T> Stream<T> asStream(Iterator<T> iterator) { + var spliterator = Spliterators.spliteratorUnknownSize(iterator, 0); + return StreamSupport.stream(spliterator, false); + } +} diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangStubTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangStubTestFactory.java index 36bc81efbfeb450c6f2b07aa4d08d559519f9adf..3790b25c8fc1cdfb0c129d22e360a8760132d219 100644 --- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangStubTestFactory.java +++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/OzgCloudVorgangStubTestFactory.java @@ -30,6 +30,11 @@ public class OzgCloudVorgangStubTestFactory { } public static OzgCloudVorgangStub.OzgCloudVorgangStubBuilder createBuilder() { - return OzgCloudVorgangStub.builder(); + return OzgCloudVorgangStub.builder() + .id(OzgCloudVorgangTestFactory.ID) + .version(OzgCloudVorgangTestFactory.VERSION) + .vorgangName(OzgCloudVorgangTestFactory.VORGANG_NAME) + .vorgangNummer(OzgCloudVorgangTestFactory.VORGANG_NUMMER) + .header(OzgCloudVorgangHeaderTestFactory.create()); } } diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcFindDeletedVorgangRequestTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcFindDeletedVorgangRequestTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..a32ce76d6ed0070f6501dde5f520a41db094403a --- /dev/null +++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcFindDeletedVorgangRequestTestFactory.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.apilib.vorgang.grpc; + +import de.ozgcloud.vorgang.vorgang.GrpcFindDeletedVorgangRequest; + +class GrpcFindDeletedVorgangRequestTestFactory { + + public static GrpcFindDeletedVorgangRequest create() { + return createBuilder().build(); + } + + public static GrpcFindDeletedVorgangRequest.Builder createBuilder() { + return GrpcFindDeletedVorgangRequest.newBuilder(); + } +} diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcFindDeletedVorgangResponseTestFactory.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcFindDeletedVorgangResponseTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..ce958c289c3a8cbca483c864dcd071d1dccba482 --- /dev/null +++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcFindDeletedVorgangResponseTestFactory.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.apilib.vorgang.grpc; + +import de.ozgcloud.vorgang.vorgang.GrpcFindDeletedVorgangResponse; + +class GrpcFindDeletedVorgangResponseTestFactory { + + public static GrpcFindDeletedVorgangResponse create() { + return createBuilder().build(); + } + + public static GrpcFindDeletedVorgangResponse.Builder createBuilder() { + return GrpcFindDeletedVorgangResponse.newBuilder().addVorgang(GrpcVorgangHeaderTestFactory.create()); + } +} diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangServiceTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangServiceTest.java index ce736cafcb7f29a200f5c9a72d85a35b2a89b21d..bc682c35cc7f1a283a32521ea37c180dd5f3efb6 100644 --- a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangServiceTest.java +++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/GrpcOzgCloudVorgangServiceTest.java @@ -44,6 +44,8 @@ import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStub; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStubTestFactory; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangTestFactory; import de.ozgcloud.apilib.vorgang.Page; +import de.ozgcloud.vorgang.vorgang.GrpcFindDeletedVorgangRequest; +import de.ozgcloud.vorgang.vorgang.GrpcFindDeletedVorgangResponse; import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangRequest; import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangResponse; import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangWithEingangRequest; @@ -277,4 +279,40 @@ class GrpcOzgCloudVorgangServiceTest { return service.buildFindRequest(ozgCloudVorgangQuery, page); } } + + @Nested + class TestFindDeleted { + + private final GrpcFindDeletedVorgangRequest request = GrpcFindDeletedVorgangRequestTestFactory.create(); + private final GrpcFindDeletedVorgangResponse response = GrpcFindDeletedVorgangResponseTestFactory.create(); + private final OzgCloudVorgangStub vorgangStub = OzgCloudVorgangStubTestFactory.create(); + + @BeforeEach + void mock() { + doReturn(stub).when(service).getVorgangServiceStub(); + when(stub.findDeletedVorgang(any())).thenReturn(List.of(response).iterator()); + when(stubMapper.fromGrpc(any())).thenReturn(vorgangStub); + } + + @Test + void shouldCallVorgangServiceStub() { + service.findDeleted().toList(); + + verify(stub).findDeletedVorgang(request); + } + + @Test + void shouldMapResponse() { + service.findDeleted().toList(); + + verify(stubMapper).fromGrpc(response.getVorgangList().getFirst()); + } + + @Test + void shouldReturnVorgangStubs() { + var deleted = service.findDeleted().toList(); + + assertThat(deleted).containsExactly(vorgangStub); + } + } } diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangHeaderMapperTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangHeaderMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..a22d8a6b1c567e67e83cffffb44886e527aa5b1e --- /dev/null +++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangHeaderMapperTest.java @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.apilib.vorgang.grpc; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; + +import de.ozgcloud.apilib.vorgang.OzgCloudVorgangHeader; +import de.ozgcloud.apilib.vorgang.OzgCloudVorgangHeaderTestFactory; + +class OzgCloudVorgangHeaderMapperTest { + + private final OzgCloudVorgangHeaderMapper mapper = Mappers.getMapper(OzgCloudVorgangHeaderMapper.class); + + @Nested + class TestFromGrpc { + + @Test + void shouldMap() { + var mapped = mapper.fromGrpc(GrpcVorgangHeaderTestFactory.create()); + + assertThat(mapped).usingRecursiveComparison().isEqualTo(vorgangHeaderWithoutServiceKonto()); + } + + private static OzgCloudVorgangHeader vorgangHeaderWithoutServiceKonto() { + return OzgCloudVorgangHeaderTestFactory.createBuilder() + .serviceKonto(null) + .build(); + } + } +} diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapperTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..59fee9ba77e61e8ad6882263f1b0529de32ca811 --- /dev/null +++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/OzgCloudVorgangStubMapperTest.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.apilib.vorgang.grpc; + +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; + +import de.ozgcloud.apilib.vorgang.OzgCloudVorgangHeaderTestFactory; +import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStub; +import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStubTestFactory; + +class OzgCloudVorgangStubMapperTest { + + private final OzgCloudVorgangStubMapper mapper = Mappers.getMapper(OzgCloudVorgangStubMapper.class); + + @Nested + class TestFromGrpc { + + @Test + void shouldMap() { + var mapped = mapper.fromGrpc(GrpcVorgangHeaderTestFactory.create()); + + assertThat(mapped).usingRecursiveComparison().isEqualTo(vorgangStubWithoutServiceKonto()); + } + + private static OzgCloudVorgangStub vorgangStubWithoutServiceKonto() { + return OzgCloudVorgangStubTestFactory.createBuilder() + .header(OzgCloudVorgangHeaderTestFactory.createBuilder() + .serviceKonto(null) + .build()) + .build(); + } + } +} diff --git a/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/StreamingUtilsTest.java b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/StreamingUtilsTest.java new file mode 100644 index 0000000000000000000000000000000000000000..878b842148f5d1cf1861279cb1d80b227129b4d6 --- /dev/null +++ b/api-lib-core/src/test/java/de/ozgcloud/apilib/vorgang/grpc/StreamingUtilsTest.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +package de.ozgcloud.apilib.vorgang.grpc; + +import static org.assertj.core.api.Assertions.*; + +import java.util.List; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +class StreamingUtilsTest { + + @Nested + class TestAsStream { + + @Test + void shouldReturnStream() { + var elements = List.of("a", "b", "c"); + + var stream = StreamingUtils.asStream(elements.iterator()); + + assertThat(stream.toList()).containsExactlyElementsOf(elements); + } + } +} diff --git a/pom.xml b/pom.xml index 4b93c8fa61e8b2818adf20c5389001184caf502f..6c9a671b79b19cb0c88a901f401f62f8b0ac4f38 100644 --- a/pom.xml +++ b/pom.xml @@ -54,7 +54,7 @@ <failsafe-plugin.version>3.2.5</failsafe-plugin.version> <maven-jar-plugin.version>3.3.0</maven-jar-plugin.version> - <vorgang-manager.version>2.17.0</vorgang-manager.version> + <vorgang-manager.version>2.23.0-SNAPSHOT</vorgang-manager.version> <user-manager.version>2.1.0</user-manager.version> </properties>