Skip to content
Snippets Groups Projects
Commit 06975d90 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-2566 OZG-2684 kommentar: map version from vorgangAttachedItem instead of...

OZG-2566 OZG-2684 kommentar: map version from vorgangAttachedItem instead of vorgangAttachedItem#item; improve wiedervorlageMapperTest condition
parent 58285cc7
No related branches found
No related tags found
No related merge requests found
......@@ -9,27 +9,36 @@ import org.mapstruct.MappingConstants;
import org.mapstruct.NullValueCheckStrategy;
import org.mapstruct.ReportingPolicy;
import org.mapstruct.ValueMapping;
import org.springframework.beans.factory.annotation.Autowired;
import de.itvsh.kop.pluto.common.grpc.GrpcObjectMapper;
import de.itvsh.ozg.pluto.grpc.command.GrpcCommand;
import de.itvsh.ozg.pluto.vorgangAttachedItem.GrpcVorgangAttachedItem;
@Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface KommentarMapper {
abstract class KommentarMapper {
static final String ID = "id";
static final String VERSION = "version";
static final String TEXT = "text";
static final String CREATED_BY = "createdBy";
static final String CREATED_AT = "createdAt";
@Autowired
private GrpcObjectMapper grpcObjectMapper;
@Mapping(target = "kommentar", ignore = true)
@ValueMapping(source = "UNRECOGNIZED", target = MappingConstants.NULL)
@ValueMapping(source = "UNDEFINED", target = MappingConstants.NULL)
KommentarCommand toKommentarCommand(GrpcCommand command);
abstract KommentarCommand toKommentarCommand(GrpcCommand command);
public Kommentar fromItem(GrpcVorgangAttachedItem vorgangAttachedItem) {
return fromItemMap(grpcObjectMapper.mapFromGrpc(vorgangAttachedItem.getItem()), vorgangAttachedItem.getVersion());
}
default Kommentar fromItemMap(Map<String, Object> map) {
Kommentar fromItemMap(Map<String, Object> map, long version) {
return Kommentar.builder()
.id((String) map.get(ID))
.version((long) map.get(VERSION))
.version(version)
.createdAt(ZonedDateTime.parse((String) map.get(CREATED_AT)))
.createdBy((String) map.get(CREATED_BY))
.text((String) map.get(TEXT))
......
......@@ -6,31 +6,25 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import de.itvsh.goofy.GoofyServerApplication;
import de.itvsh.kop.pluto.common.grpc.GrpcObjectMapper;
import de.itvsh.ozg.pluto.vorgangAttachedItem.GrpcFindVorgangAttachedItemRequest;
import de.itvsh.ozg.pluto.vorgangAttachedItem.GrpcFindVorgangAttachedItemResponse;
import de.itvsh.ozg.pluto.vorgangAttachedItem.GrpcVorgangAttachedItemRequest;
import de.itvsh.ozg.pluto.vorgangAttachedItem.VorgangAttachedItemServiceGrpc.VorgangAttachedItemServiceBlockingStub;
import net.devh.boot.grpc.client.inject.GrpcClient;
@Service
class KommentarRemoteService {
static final String ITEM_NAME = "Kommentar";
@GrpcClient(GoofyServerApplication.GRPC_CLIENT)
private VorgangAttachedItemServiceBlockingStub vorgangAttachedItemServiceStub;
@Autowired
private KommentarMapper mapper;
@Autowired
private GrpcObjectMapper grpcObjectMapper;
public Stream<Kommentar> findByVorgangId(String vorgangId) {
GrpcFindVorgangAttachedItemResponse response = vorgangAttachedItemServiceStub
.find(buildFindRequest(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) {
......@@ -42,8 +36,8 @@ class KommentarRemoteService {
public Kommentar getById(String kommentarId) {
var response = vorgangAttachedItemServiceStub.getById(buildRequest(kommentarId));
var kommentar = mapper.fromItemMap(grpcObjectMapper.mapFromGrpc(response.getVorgangAttachedItem().getItem()));
return kommentar.toBuilder().vorgangId(response.getVorgangAttachedItem().getVorgangId()).build();
return mapper.fromItem(response.getVorgangAttachedItem()).toBuilder().vorgangId(response.getVorgangAttachedItem().getVorgangId()).build();
}
private GrpcVorgangAttachedItemRequest buildRequest(String kommentarId) {
......
package de.itvsh.goofy.kommentar;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
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.vorgang.GrpcVorgangAttachedItemTestFactory;
import de.itvsh.kop.pluto.common.grpc.GrpcObjectMapper;
class KommentarMapperTest {
@Spy
@InjectMocks
private KommentarMapper mapper = Mappers.getMapper(KommentarMapper.class);
@Mock
private GrpcObjectMapper grpcObjectMapper;
@DisplayName("Map from item")
@Nested
class TestFromItem {
@BeforeEach
void mockMapper() {
when(grpcObjectMapper.mapFromGrpc(any())).thenReturn(KommentarTestFactory.createAsMap());
}
@Test
void shouldCallGrpcObjectMapper() {
mapper.fromItem(GrpcVorgangAttachedItemTestFactory.create());
verify(grpcObjectMapper).mapFromGrpc(GrpcVorgangAttachedItemTestFactory.ITEM);
}
@Test
void shouldCallMapperFromItemMap() {
mapper.fromItem(GrpcVorgangAttachedItemTestFactory.create());
verify(mapper).fromItemMap(KommentarTestFactory.createAsMap(), KommentarTestFactory.VERSION);
}
}
@DisplayName("Map from item map")
@Nested
class TestFromItemMap {
......@@ -50,6 +90,6 @@ class KommentarMapperTest {
}
private Kommentar map() {
return mapper.fromItemMap(KommentarTestFactory.createAsMap());
return mapper.fromItemMap(KommentarTestFactory.createAsMap(), KommentarTestFactory.VERSION);
}
}
......@@ -6,6 +6,7 @@ import static org.mockito.Mockito.*;
import java.util.stream.Stream;
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.mockito.InjectMocks;
......@@ -14,7 +15,6 @@ import org.mockito.Spy;
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.vorgangAttachedItem.GrpcFindVorgangAttachedItemRequest;
import de.itvsh.ozg.pluto.vorgangAttachedItem.GrpcFindVorgangAttachedItemResponse;
import de.itvsh.ozg.pluto.vorgangAttachedItem.GrpcVorgangAttachedItem;
......@@ -27,24 +27,23 @@ class KommentarRemoteServiceTest {
@Spy
@InjectMocks
private KommentarRemoteService service;
@Mock
private VorgangAttachedItemServiceBlockingStub vorgangAttachedItemServiceStub;
@Mock
private KommentarMapper mapper;
@Mock
private GrpcObjectMapper grpcObjectMapper;
private GrpcVorgangAttachedItem kommentar = GrpcVorgangAttachedItemTestFactory.create();
@DisplayName("Find by vorgangId")
@Nested
class TestFindByVorgangId {
private GrpcFindVorgangAttachedItemRequest request = GrpcFindVorgangAttachedItemRequest.newBuilder()
.setVorgangId(VorgangHeaderTestFactory.ID).setItemName(KommentarRemoteService.ITEM_NAME).build();
.setVorgangId(VorgangHeaderTestFactory.ID)
.setItemName(KommentarRemoteService.ITEM_NAME)
.build();
private GrpcFindVorgangAttachedItemResponse response = GrpcFindVorgangAttachedItemResponse.newBuilder()
.clearVorgangAttachedItems()
.addVorgangAttachedItems(kommentar)
.addVorgangAttachedItems(kommentar).build();
@BeforeEach
......@@ -61,10 +60,10 @@ class KommentarRemoteServiceTest {
@Test
void shouldCallMapper() {
Stream<Kommentar> result = service.findByVorgangId(VorgangHeaderTestFactory.ID);
var result = service.findByVorgangId(VorgangHeaderTestFactory.ID);
collectStreamElementsToTriggerLazyStream(result);
verify(mapper, times(2)).fromItemMap(any());
verify(mapper).fromItem(any());
}
private void collectStreamElementsToTriggerLazyStream(Stream<Kommentar> stream) {
......@@ -72,17 +71,20 @@ class KommentarRemoteServiceTest {
}
}
@DisplayName("Find by id")
@Nested
class TestGetById {
GrpcVorgangAttachedItemResponse response = GrpcVorgangAttachedItemResponse.newBuilder()
.setVorgangAttachedItem(GrpcVorgangAttachedItemTestFactory.create()).build();
GrpcVorgangAttachedItemRequest request = GrpcVorgangAttachedItemRequest.newBuilder().setId(KommentarTestFactory.ID).build();
private GrpcVorgangAttachedItemResponse response = GrpcVorgangAttachedItemResponse.newBuilder()
.setVorgangAttachedItem(GrpcVorgangAttachedItemTestFactory.create())
.build();
private GrpcVorgangAttachedItemRequest request = GrpcVorgangAttachedItemRequest.newBuilder()
.setId(KommentarTestFactory.ID)
.build();
@BeforeEach
void mockStub() {
when(vorgangAttachedItemServiceStub.getById(any())).thenReturn(response);
when(grpcObjectMapper.mapFromGrpc(any())).thenReturn(KommentarTestFactory.createAsMap());
when(mapper.fromItemMap(any())).thenReturn(KommentarTestFactory.create());
when(mapper.fromItem(any())).thenReturn(KommentarTestFactory.create());
}
@Test
......@@ -96,7 +98,7 @@ class KommentarRemoteServiceTest {
void shouldCallMapper() {
service.getById(KommentarTestFactory.ID);
verify(mapper).fromItemMap(any());
verify(mapper).fromItem(any());
}
}
}
......@@ -38,7 +38,6 @@ public class KommentarTestFactory {
public static Map<String, Object> createAsMap() {
return Map.of(
KommentarMapper.ID, ID,
KommentarMapper.VERSION, VERSION,
KommentarMapper.TEXT, TEXT,
KommentarMapper.CREATED_BY, CREATED_BY,
KommentarMapper.CREATED_AT, CREATED_AT_STR);
......
......@@ -21,7 +21,6 @@ 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 {
......@@ -46,7 +45,7 @@ class WiedervorlageMapperTest {
void shouldCallGrpcObjectMapper() {
mapper.fromItem(GrpcVorgangAttachedItemTestFactory.create());
verify(grpcObjectMapper).mapFromGrpc(any(GrpcObject.class));
verify(grpcObjectMapper).mapFromGrpc(GrpcVorgangAttachedItemTestFactory.ITEM);
}
@Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment