Skip to content
Snippets Groups Projects
Commit 234df39e authored by OZGCloud's avatar OZGCloud
Browse files

OZG-6259 create collaboration vorgang

parent 25d551cb
No related branches found
No related tags found
No related merge requests found
......@@ -24,8 +24,10 @@
package de.ozgcloud.vorgang.collaboration;
import lombok.Builder;
import lombok.Getter;
@Builder
@Getter
public class CollaborationRequest {
private String vorgangId;
......
......@@ -25,10 +25,33 @@ package de.ozgcloud.vorgang.collaboration;
import org.springframework.stereotype.Service;
import de.ozgcloud.vorgang.vorgang.Vorgang;
import de.ozgcloud.vorgang.vorgang.VorgangHead;
import de.ozgcloud.vorgang.vorgang.VorgangService;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class CollaborationService {
private final VorgangService vorgangService;
public String createCollaborationVorgang(CollaborationRequest request) {
return "collaboration-vorgang-id";
var vorgang = updateVorgang(vorgangService.getById(request.getVorgangId()), request);
return vorgangService.createVorgang(vorgang);
}
Vorgang updateVorgang(Vorgang vorgang, CollaborationRequest request) {
vorgang.getClientAttributes().clear();
return vorgang.toBuilder()
.header(updateHeader(vorgang.getHeader(), request))
.build();
}
VorgangHead updateHeader(VorgangHead header, CollaborationRequest request) {
return header.toBuilder()
.collaborationLevel(request.getCollaborationLevel())
.organisationsEinheitId(request.getZustaendigeStelle())
.build();
}
}
......@@ -6,7 +6,7 @@ import de.ozgcloud.vorgang.servicekonto.ServiceKonto;
import lombok.Builder;
import lombok.Getter;
@Builder
@Builder(toBuilder = true)
@Getter
@TypeAlias("VorgangHeader")
public class VorgangHead {
......@@ -14,4 +14,6 @@ public class VorgangHead {
private ServiceKonto serviceKonto;
private String organisationsEinheitId;
@Builder.Default
private int collaborationLevel = 0;
}
......@@ -28,7 +28,7 @@ import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
public class CollaborationRequestTestFactory {
public static final int COLLABORATION_lEVEL = 1;
public static final int COLLABORATION_LEVEL = 1;
public static final String ZUSTAENDIGE_STELLE = "zustaendige-stelle";
public static CollaborationRequest create() {
......@@ -39,7 +39,7 @@ public class CollaborationRequestTestFactory {
return CollaborationRequest.builder()
.vorgangId(VorgangTestFactory.ID)
.zustaendigeStelle(ZUSTAENDIGE_STELLE)
.collaborationLevel(COLLABORATION_lEVEL);
.collaborationLevel(COLLABORATION_LEVEL);
}
}
/*
* 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.collaboration;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import de.ozgcloud.vorgang.vorgang.Vorgang;
import de.ozgcloud.vorgang.vorgang.VorgangHead;
import de.ozgcloud.vorgang.vorgang.VorgangHeadTestFactory;
import de.ozgcloud.vorgang.vorgang.VorgangService;
import de.ozgcloud.vorgang.vorgang.VorgangTestFactory;
class CollaborationServiceTest {
@Spy
@InjectMocks
private CollaborationService service;
@Mock
private VorgangService vorgangService;
@Nested
class TestCreateCollaborationVorgang {
private static final CollaborationRequest COLLABORATION_REQUEST = CollaborationRequestTestFactory.create();
private static final String COLLABORATION_VORGANG_ID = "collaboratino-vorgang-id";
@Mock
private Vorgang loadedVorgang;
@Mock
private Vorgang modifiedVorgang;
@BeforeEach
void init() {
when(vorgangService.getById(any())).thenReturn(loadedVorgang);
when(vorgangService.createVorgang(any())).thenReturn(COLLABORATION_VORGANG_ID);
doReturn(modifiedVorgang).when(service).updateVorgang(any(), any());
}
@Test
void shouldCallGetVorgang() {
createCollaborationVorgang();
verify(vorgangService).getById(VorgangTestFactory.ID);
}
@Test
void shouldCallModifyVorgang() {
createCollaborationVorgang();
verify(service).updateVorgang(loadedVorgang, COLLABORATION_REQUEST);
}
@Test
void shouldCallCreateVorgang() {
createCollaborationVorgang();
verify(vorgangService).createVorgang(modifiedVorgang);
}
@Test
void shouldReturnVorgangId() {
var result = createCollaborationVorgang();
assertThat(result).isEqualTo(COLLABORATION_VORGANG_ID);
}
private String createCollaborationVorgang() {
return service.createCollaborationVorgang(COLLABORATION_REQUEST);
}
}
@Nested
class TestUpdateVorgang {
private static final VorgangHead HEAD = VorgangHeadTestFactory.create();
private static final CollaborationRequest COLLABORATION_REQUEST = CollaborationRequestTestFactory.create();
@Mock
private VorgangHead updatedHead;
@Test
void shouldRemoveClientAttributes() {
var result = modifyVorgang();
assertThat(result.getClientAttributes()).isEmpty();
}
@Test
void shouldCallUpdateHeader() {
modifyVorgang();
verify(service).updateHeader(HEAD, COLLABORATION_REQUEST);
}
@Test
void shouldSetUpdatedHeader() {
doReturn(updatedHead).when(service).updateHeader(any(), any());
var result = modifyVorgang();
assertThat(result.getHeader()).isSameAs(updatedHead);
}
private Vorgang modifyVorgang() {
return service.updateVorgang(VorgangTestFactory.createBuilder().header(HEAD).build(), COLLABORATION_REQUEST);
}
}
@Nested
class TestUpdateHeader {
@Test
void shouldSetZustaendigeStelle() {
var result = updateHeader();
assertThat(result.getOrganisationsEinheitId()).isEqualTo(CollaborationRequestTestFactory.ZUSTAENDIGE_STELLE);
}
@Test
void shouldSetCollaborationLevel() {
var result = updateHeader();
assertThat(result.getCollaborationLevel()).isEqualTo(CollaborationRequestTestFactory.COLLABORATION_LEVEL);
}
private VorgangHead updateHeader() {
return service.updateHeader(VorgangHeadTestFactory.create(), CollaborationRequestTestFactory.create());
}
}
}
\ No newline at end of file
......@@ -36,6 +36,6 @@ public class GrpcCollaborationRequestTestFactory {
return GrpcCollaborationRequest.newBuilder()
.setVorgangId(VorgangTestFactory.ID)
.setZustaendigeStelle(CollaborationRequestTestFactory.ZUSTAENDIGE_STELLE)
.setCollaborationLevel(CollaborationRequestTestFactory.COLLABORATION_lEVEL);
.setCollaborationLevel(CollaborationRequestTestFactory.COLLABORATION_LEVEL);
}
}
......@@ -81,4 +81,10 @@ class VorgangServiceITCase {
verify(userNotificationEventListener, timeout(60000)).onVorgangCreated(any());
}
}
@Nested
class TestCreateVorgang {
// TODO impleent tests
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment