Skip to content
Snippets Groups Projects
Commit 3e3f4de4 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-6991 add lock object to grpc response

parent c4f24ab4
No related branches found
No related tags found
No related merge requests found
Showing
with 168 additions and 18 deletions
......@@ -63,6 +63,13 @@ message GrpcVorgangWithEingang {
message GrpcVorgangHead {
GrpcServiceKonto serviceKonto = 1;
GrpcLock lock = 2;
}
message GrpcLock {
string clientName = 1;
string lockedSince = 2;
string reason = 3;
}
message GrpcEingang {
......
/*
* Copyright (C) 2024 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.vorgang.vorgang;
import org.mapstruct.Mapper;
import org.mapstruct.NullValueCheckStrategy;
import org.mapstruct.NullValuePropertyMappingStrategy;
import de.ozgcloud.vorgang.servicekonto.ServiceKontoMapper;
@Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, //
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, //
uses = { ServiceKontoMapper.class })
public interface VorgangHeadMapper {
GrpcVorgangHead toGrpc(VorgangHead vorgangHead);
}
......@@ -33,11 +33,10 @@ import org.mapstruct.NullValuePropertyMappingStrategy;
import org.springframework.beans.factory.annotation.Autowired;
import de.ozgcloud.vorgang.clientattribute.ClientAttributeMapper;
import de.ozgcloud.vorgang.servicekonto.ServiceKontoMapper;
@Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, //
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, //
uses = { EingangMapper.class, ClientAttributeMapper.class, ServiceKontoMapper.class })
uses = { EingangMapper.class, ClientAttributeMapper.class, VorgangHeadMapper.class })
public abstract class VorgangWithEingangMapper {
@Autowired
......
......@@ -39,7 +39,6 @@ import de.ozgcloud.vorgang.grpc.command.GrpcCreateCommand;
import de.ozgcloud.vorgang.grpc.command.GrpcCreateCommandRequest;
import de.ozgcloud.vorgang.grpc.command.GrpcFindCommandsRequest;
import de.ozgcloud.vorgang.grpc.command.GrpcRevokeCommandRequest;
import de.ozgcloud.vorgang.vorgang.LockTestFactory;
import de.ozgcloud.vorgang.vorgang.Vorgang;
import de.ozgcloud.vorgang.vorgang.VorgangHeadTestFactory;
import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
......@@ -125,9 +124,7 @@ class GrpcCommandServiceITCase {
}
Vorgang buildLockedVorgang() {
return VorgangTestFactory.createBuilder().id(null).version(0)
.header(VorgangHeadTestFactory.createBuilder().lock(LockTestFactory.create()).build())
.build();
return VorgangTestFactory.createBuilder().id(null).version(0).header(VorgangHeadTestFactory.create()).build();
}
}
......@@ -236,7 +233,7 @@ class GrpcCommandServiceITCase {
@Test
void shouldFailOnLockedVorgang() {
mongoOperations.save(vorgang.toBuilder().header(VorgangHeadTestFactory.createBuilder().lock(LockTestFactory.create()).build()).build());
mongoOperations.save(vorgang.toBuilder().header(VorgangHeadTestFactory.create()).build());
var request = buildAddSubCommandsRequest(parentCommand.getId(), buildCreateCommand());
Assertions.assertThrows(StatusRuntimeException.class, () -> serviceBlockingStub.addSubCommands(request));
......
/*
* Copyright (C) 2024 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.vorgang.vorgang;
public class GrpcLockTestFactory {
public static GrpcLock create() {
return createBuilder().build();
}
public static GrpcLock.Builder createBuilder() {
return GrpcLock.newBuilder()
.setClientName(LockTestFactory.CLIENT_NAME)
.setLockedSince(LockTestFactory.LOCKED_SINCE_STR)
.setReason(LockTestFactory.REASON);
}
}
......@@ -4,12 +4,15 @@ import de.ozgcloud.vorgang.servicekonto.GrpcServiceKontoTestFactory;
public class GrpcVorgangHeadTestFactory {
public static final GrpcLock LOCK = GrpcLockTestFactory.create();
public static GrpcVorgangHead create() {
return createBuilder().build();
}
public static GrpcVorgangHead.Builder createBuilder() {
return GrpcVorgangHead.newBuilder()
.setServiceKonto(GrpcServiceKontoTestFactory.create());
.setServiceKonto(GrpcServiceKontoTestFactory.create())
.setLock(LOCK);
}
}
/*
* Copyright (C) 2024 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.vorgang.vorgang;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mapstruct.factory.Mappers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import de.ozgcloud.vorgang.servicekonto.GrpcServiceKontoTestFactory;
import de.ozgcloud.vorgang.servicekonto.ServiceKontoMapper;
class VorgangHeadMapperTest {
@InjectMocks
private VorgangHeadMapper mapper = Mappers.getMapper(VorgangHeadMapper.class);
@Mock
private ServiceKontoMapper serviceKontoMapper;
@BeforeEach
void init() {
when(serviceKontoMapper.toServiceKonto(any())).thenReturn(GrpcServiceKontoTestFactory.create());
}
@Test
void shouldCallToServiceKonto() {
mapper.toGrpc(VorgangHeadTestFactory.create());
verify(serviceKontoMapper).toServiceKonto(VorgangHeadTestFactory.SERVICE_KONTO);
}
@Test
void shouldMap() {
var result = mapper.toGrpc(VorgangHeadTestFactory.create());
assertThat(result).usingRecursiveComparison().isEqualTo(GrpcVorgangHeadTestFactory.create());
}
}
\ No newline at end of file
package de.ozgcloud.vorgang.vorgang;
import de.ozgcloud.vorgang.servicekonto.ServiceKonto;
import de.ozgcloud.vorgang.servicekonto.ServiceKontoTestFactory;
public class VorgangHeadTestFactory {
public static final Lock LOCK = LockTestFactory.create();
public static final ServiceKonto SERVICE_KONTO = ServiceKontoTestFactory.create();
public static VorgangHead create() {
return createBuilder().build();
}
public static VorgangHead.VorgangHeadBuilder createBuilder() {
return VorgangHead.builder()
.serviceKonto(ServiceKontoTestFactory.create());
.serviceKonto(SERVICE_KONTO)
.lock(LOCK);
}
}
......@@ -366,9 +366,8 @@ class VorgangRepositoryITCase {
@Test
void shouldReturnTrue() {
var vorgang = mongoOperations.save(VorgangTestFactory.createBuilder().id(null).version(0)
.header(VorgangHeadTestFactory.createBuilder().lock(LockTestFactory.create()).build())
.build());
var vorgang = mongoOperations.save(
VorgangTestFactory.createBuilder().id(null).version(0).header(VorgangHeadTestFactory.create()).build());
var isLocked = repository.isVorgangLocked(vorgang.getId());
......
......@@ -75,7 +75,7 @@ public class VorgangTestFactory {
.nummer(VORGANG_NUMMER)
.status(STATUS)
.createdAt(CREATED_AT)
.header(VorgangHeadTestFactory.create())
.header(VorgangHeadTestFactory.createBuilder().lock(null).build())
.eingang(EINGANG)
.version(VERSION)
.assignedTo(UserTestFactory.ID)
......
......@@ -35,8 +35,6 @@ import org.mockito.InjectMocks;
import org.mockito.Mock;
import de.ozgcloud.vorgang.clientattribute.ClientAttributeMapper;
import de.ozgcloud.vorgang.servicekonto.GrpcServiceKontoTestFactory;
import de.ozgcloud.vorgang.servicekonto.ServiceKontoMapper;
class VorgangWithEingangMapperTest {
......@@ -47,7 +45,7 @@ class VorgangWithEingangMapperTest {
@Mock
private ClientAttributeMapper clientAttributeMapper;
@Mock
private ServiceKontoMapper serviceKontoMapper;
private VorgangHeadMapper vorgangHeadMapper;
@Nested
class TestToVorgangWithEingang {
......@@ -55,7 +53,7 @@ class VorgangWithEingangMapperTest {
@BeforeEach
void mockEingangMapper() {
when(eingangMapper.toGrpc(any(Eingang.class))).thenReturn(GrpcEingangTestFactory.create());
when(serviceKontoMapper.toServiceKonto(any())).thenReturn(GrpcServiceKontoTestFactory.create());
when(vorgangHeadMapper.toGrpc(any())).thenReturn(GrpcVorgangHeadTestFactory.createBuilder().setLock(GrpcLockTestFactory.create()).build());
}
@Test
......@@ -70,7 +68,7 @@ class VorgangWithEingangMapperTest {
var vorgangWithEingang = callMapper();
assertThat(vorgangWithEingang).usingRecursiveComparison()
.ignoringFields("eingang_", "clientAttributes_", "memoizedHashCode", "header_")
.ignoringFields("eingang_", "clientAttributes_", "memoizedHashCode")
.isEqualTo(GrpcVorgangWithEingangTestFactory.create());
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment