diff --git a/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageMapper.java b/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageMapper.java index b6a215406aabdb447543a2077acb39616b59f0cf..3dd222c011ec78ab460a2911d869fc364cc09ca6 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageMapper.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageMapper.java @@ -11,18 +11,23 @@ import org.mapstruct.CollectionMappingStrategy; import org.mapstruct.Mapper; import org.mapstruct.NullValueCheckStrategy; import org.mapstruct.ReportingPolicy; +import org.springframework.beans.factory.annotation.Autowired; import de.itvsh.goofy.common.binaryfile.FileId; import de.itvsh.goofy.common.binaryfile.FileIdMapper; +import de.itvsh.kop.pluto.common.grpc.GrpcObjectMapper; +import de.itvsh.ozg.pluto.vorgangAttachedItem.GrpcVorgangAttachedItem; @Mapper(uses = { FileIdMapper.class }, unmappedTargetPolicy = ReportingPolicy.WARN, // unmappedSourcePolicy = ReportingPolicy.WARN, // nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, // collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED) -public interface WiedervorlageMapper { +abstract class WiedervorlageMapper { + + @Autowired + private GrpcObjectMapper grpcObjectMapper; static final String ID = "id"; - static final String VERSION = "version"; static final String DONE = "done"; static final String CREATED_BY = "createdBy"; static final String CREATED_BY_NAME = "createdByName"; @@ -32,10 +37,14 @@ public interface WiedervorlageMapper { static final String FRIST = "frist"; static final String ATTACHMENTS = "attachments"; - default Wiedervorlage fromItemMap(Map<String, Object> itemMap) { + public Wiedervorlage fromItem(GrpcVorgangAttachedItem item) { + return fromItemMap(grpcObjectMapper.mapFromGrpc(item.getItem()), item.getVersion()); + } + + Wiedervorlage fromItemMap(Map<String, Object> itemMap, long version) { return Wiedervorlage.builder() .id((String) itemMap.get(ID)) - .version((long) itemMap.get(VERSION)) + .version(version) .done(Boolean.valueOf((String) itemMap.get(DONE))) .createdBy((String) itemMap.get(CREATED_BY)) .createdAt(ZonedDateTime.parse((String) itemMap.get(CREATED_AT))) diff --git a/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageRemoteService.java b/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageRemoteService.java index b39b3f0d9ef9efe82cb1f3a43d0fa15d84ab2a4c..73bc379fdacc8d16bd19750017c5ed90c35abae8 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageRemoteService.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/wiedervorlage/WiedervorlageRemoteService.java @@ -10,7 +10,6 @@ import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; import de.itvsh.goofy.GoofyServerApplication; -import de.itvsh.kop.pluto.common.grpc.GrpcObjectMapper; import de.itvsh.ozg.pluto.grpc.clientAttribute.ClientAttributeServiceGrpc.ClientAttributeServiceBlockingStub; import de.itvsh.ozg.pluto.grpc.clientAttribute.GrpcAccessPermission; import de.itvsh.ozg.pluto.grpc.clientAttribute.GrpcClientAttribute; @@ -37,16 +36,12 @@ public class WiedervorlageRemoteService { @Autowired private WiedervorlageMapper mapper; @Autowired - private GrpcObjectMapper grpcObjectMapper; - @Autowired private ApplicationContext context; public Stream<Wiedervorlage> findByVorgangId(String vorgangId) { var response = vorgangAttachedItemServiceStub.find(buildFindRequest(vorgangId)); - return response.getVorgangAttachedItemsList().stream() - .map(item -> grpcObjectMapper.mapFromGrpc(item.getItem())) - .map(mapper::fromItemMap); + return response.getVorgangAttachedItemsList().stream().map(mapper::fromItem); } GrpcFindVorgangAttachedItemRequest buildFindRequest(String vorgangId) { @@ -58,8 +53,8 @@ public class WiedervorlageRemoteService { public Wiedervorlage getById(String wiedervorlageId) { var response = vorgangAttachedItemServiceStub.getById(GrpcVorgangAttachedItemRequest.newBuilder().setId(wiedervorlageId).build()); - var wiedervorlage = mapper.fromItemMap(grpcObjectMapper.mapFromGrpc(response.getVorgangAttachedItem().getItem())); - return wiedervorlage.toBuilder().vorgangId(response.getVorgangAttachedItem().getVorgangId()).build(); + + return mapper.fromItem(response.getVorgangAttachedItem()).toBuilder().vorgangId(response.getVorgangAttachedItem().getVorgangId()).build(); } public void updateNextFrist(String vorgangId, Optional<LocalDate> nextFrist) { diff --git a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcVorgangAttachedItemTestFactory.java b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcVorgangAttachedItemTestFactory.java index 78b56c924b1bd1f4991f47d5bfc40cb3c5b0704a..216ba59a1db199deb47cbdf31d9f6b8189c50ce7 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcVorgangAttachedItemTestFactory.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/vorgang/GrpcVorgangAttachedItemTestFactory.java @@ -15,6 +15,7 @@ public class GrpcVorgangAttachedItemTestFactory { public final static String ITEM_NAME = LoremIpsum.getInstance().getWords(1); public final static String ITEM_KEY = LoremIpsum.getInstance().getWords(1); public final static String ITEM_VALUE = LoremIpsum.getInstance().getWords(1); + public final static long VERSION = 73; public static final GrpcObject ITEM = GrpcObject.newBuilder() .addProperty(GrpcProperty.newBuilder() @@ -33,6 +34,7 @@ public class GrpcVorgangAttachedItemTestFactory { .setClient(CLIENT) .setVorgangId(VorgangHeaderTestFactory.ID) .setItemName(ITEM_NAME) - .setItem(ITEM); + .setItem(ITEM) + .setVersion(VERSION); } } \ No newline at end of file diff --git a/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageMapperTest.java b/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageMapperTest.java index acf6c3b94b3a6c9920f657617792411c7ddf2db6..78ffae49fa4b0e2a3fd37cd2932c69cf16dde805 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageMapperTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageMapperTest.java @@ -1,26 +1,63 @@ package de.itvsh.goofy.wiedervorlage; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + import java.util.HashMap; import java.util.List; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mapstruct.factory.Mappers; import org.mockito.InjectMocks; +import org.mockito.Mock; import org.mockito.Spy; import static org.assertj.core.api.Assertions.*; import de.itvsh.goofy.common.binaryfile.BinaryFileTestFactory; import de.itvsh.goofy.common.binaryfile.FileIdMapper; +import de.itvsh.goofy.vorgang.GrpcVorgangAttachedItemTestFactory; +import de.itvsh.kop.pluto.common.grpc.GrpcObjectMapper; +import de.itvsh.ozg.pluto.common.GrpcObject; class WiedervorlageMapperTest { + @Spy @InjectMocks private WiedervorlageMapper mapper = Mappers.getMapper(WiedervorlageMapper.class); @Spy private FileIdMapper fileIdMapper = Mappers.getMapper(FileIdMapper.class); + @Mock + private GrpcObjectMapper grpcObjectMapper; + + @DisplayName("Map from item") + @Nested + class TestFromItem { + + @BeforeEach + void mockMapper() { + when(grpcObjectMapper.mapFromGrpc(any())).thenReturn(WiedervorlageTestFactory.createAsMap()); + } + + @Test + void shouldCallGrpcObjectMapper() { + mapper.fromItem(GrpcVorgangAttachedItemTestFactory.create()); + + verify(grpcObjectMapper).mapFromGrpc(any(GrpcObject.class)); + } + + @Test + void shouldCallMapperFromItemMap() { + mapper.fromItem(GrpcVorgangAttachedItemTestFactory.create()); + + verify(mapper).fromItemMap(WiedervorlageTestFactory.createAsMap(), GrpcVorgangAttachedItemTestFactory.VERSION); + } + } + @DisplayName("Map from item map") @Nested class TestFromItemMap { @@ -89,7 +126,7 @@ class WiedervorlageMapperTest { wiedervorlageWithoutAttachments.putAll(WiedervorlageTestFactory.createAsMap()); wiedervorlageWithoutAttachments.remove(WiedervorlageMapper.ATTACHMENTS); - var wiedervorlage = mapper.fromItemMap(wiedervorlageWithoutAttachments); + var wiedervorlage = mapper.fromItemMap(wiedervorlageWithoutAttachments, WiedervorlageTestFactory.VERSION); assertThat(wiedervorlage.getAttachments()).isEmpty(); } @@ -103,7 +140,7 @@ class WiedervorlageMapperTest { @Test void shouldMapAttachmentList() { - var wiedervorlage = mapper.fromItemMap(createWiedervorlageAsMapWithMultipleAttachments()); + var wiedervorlage = mapper.fromItemMap(createWiedervorlageAsMapWithMultipleAttachments(), WiedervorlageTestFactory.VERSION); assertThat(wiedervorlage.getAttachments()).hasSize(2); assertThat(wiedervorlage.getAttachments().get(0)).isEqualTo(BinaryFileTestFactory.FILE_ID); @@ -119,7 +156,7 @@ class WiedervorlageMapperTest { } private Wiedervorlage map() { - return mapper.fromItemMap(WiedervorlageTestFactory.createAsMap()); + return mapper.fromItemMap(WiedervorlageTestFactory.createAsMap(), WiedervorlageTestFactory.VERSION); } } } \ No newline at end of file diff --git a/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageRemoteServiceTest.java b/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageRemoteServiceTest.java index ab6761aaee84a45d2ca86ffdf0051715abb25ea4..307fa72a02e549754a8dac1940e5bb4f38c5bd45 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageRemoteServiceTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageRemoteServiceTest.java @@ -1,6 +1,5 @@ package de.itvsh.goofy.wiedervorlage; -import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; @@ -20,10 +19,11 @@ import org.mockito.Mock; import org.mockito.Spy; import org.springframework.context.ApplicationContext; +import static org.assertj.core.api.Assertions.*; + import de.itvsh.goofy.ApplicationTestFactory; import de.itvsh.goofy.vorgang.GrpcVorgangAttachedItemTestFactory; import de.itvsh.goofy.vorgang.VorgangHeaderTestFactory; -import de.itvsh.kop.pluto.common.grpc.GrpcObjectMapper; import de.itvsh.ozg.pluto.grpc.clientAttribute.ClientAttributeServiceGrpc.ClientAttributeServiceBlockingStub; import de.itvsh.ozg.pluto.grpc.clientAttribute.GrpcAccessPermission; import de.itvsh.ozg.pluto.grpc.clientAttribute.GrpcDeleteClientAttributeRequest; @@ -47,8 +47,6 @@ class WiedervorlageRemoteServiceTest { @Mock private WiedervorlageMapper mapper; @Mock - private GrpcObjectMapper grpcObjectMapper; - @Mock private ApplicationContext applicationContext; @Nested @@ -78,21 +76,14 @@ class WiedervorlageRemoteServiceTest { @BeforeEach void mockGrpcMapper() { - when(grpcObjectMapper.mapFromGrpc(any())).thenReturn(WiedervorlageTestFactory.createAsMap()); - } - - @Test - void shouldCallForGrpcObject() { - callFindById(); - - verify(grpcObjectMapper).mapFromGrpc(GrpcVorgangAttachedItemTestFactory.ITEM); + when(mapper.fromItem(any())).thenReturn(WiedervorlageTestFactory.create()); } @Test void shouldCallForWiedervorlage() { callFindById(); - verify(mapper).fromItemMap(WiedervorlageTestFactory.createAsMap()); + verify(mapper).fromItem(GrpcVorgangAttachedItemTestFactory.create()); } private void callFindById() { @@ -141,8 +132,7 @@ class WiedervorlageRemoteServiceTest { @BeforeEach void initMocks() { when(vorgangAttachedItemServiceStub.getById(any())).thenReturn(response); - when(grpcObjectMapper.mapFromGrpc(any())).thenReturn(WiedervorlageTestFactory.createAsMap()); - when(mapper.fromItemMap(any())).thenReturn(WiedervorlageTestFactory.create()); + when(mapper.fromItem(any())).thenReturn(WiedervorlageTestFactory.create()); } @Test @@ -152,18 +142,11 @@ class WiedervorlageRemoteServiceTest { verify(vorgangAttachedItemServiceStub).getById(request); } - @Test - void shouldCallGrpcObjectMapper() { - service.getById(WiedervorlageTestFactory.ID); - - verify(grpcObjectMapper).mapFromGrpc(GrpcVorgangAttachedItemTestFactory.ITEM); - } - @Test void shouldCallWiedervorlageMapper() { service.getById(WiedervorlageTestFactory.ID); - verify(mapper).fromItemMap(WiedervorlageTestFactory.createAsMap()); + verify(mapper).fromItem(GrpcVorgangAttachedItemTestFactory.create()); } @Test diff --git a/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageTestFactory.java b/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageTestFactory.java index 4c67667e57232b33b1ea612bcc1b7efec21125fe..60a2d19554191e09fbab178d699cec4e078a2cfd 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageTestFactory.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/wiedervorlage/WiedervorlageTestFactory.java @@ -46,7 +46,6 @@ public class WiedervorlageTestFactory { public static Map<String, Object> createAsMap() { return Map.of( WiedervorlageMapper.ID, ID, - WiedervorlageMapper.VERSION, VERSION, WiedervorlageMapper.DONE, String.valueOf(DONE), WiedervorlageMapper.CREATED_BY, CREATED_BY, WiedervorlageMapper.CREATED_BY_NAME, CREATED_BY_NAME,