diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationRepository.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..a4dcbf254763851b9dc6980bc0102d0600827840 --- /dev/null +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationRepository.java @@ -0,0 +1,42 @@ +/* + * 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 org.springframework.data.mongodb.core.MongoOperations; +import org.springframework.stereotype.Repository; + +import de.ozgcloud.vorgang.vorgang.Vorgang; +import lombok.RequiredArgsConstructor; + +@Repository +@RequiredArgsConstructor +class CollaborationRepository { + + private final MongoOperations mongoOperations; + + public Vorgang save(Vorgang vorgang) { + return mongoOperations.save(vorgang); + } + +} diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationService.java index 7afd28a3be542ed4c8a5bfb8651dfabc59f969c4..31e2b701e0ff70522ae029d7e065df708e5879fe 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationService.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/collaboration/CollaborationService.java @@ -23,32 +23,41 @@ */ package de.ozgcloud.vorgang.collaboration; +import org.springframework.context.ApplicationEventPublisher; 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; + private final CollaborationRepository collaborationRepository; + private final ApplicationEventPublisher publisher; - public String createCollaborationVorgang(CollaborationRequest request) { - var vorgang = updateVorgang(vorgangService.getById(request.getVorgangId()), request); - return vorgangService.createVorgangSilent(vorgang); + public Vorgang createCollaborationVorgang(CreateCollaborationVorgangRequest request) { + var vorgang = collaborationRepository.save(buildCollaborationVorgang(request)); + // TODO: wieder aktivieren wenn OZG-???? implementiert ist + // publisher.publishEvent(new VorgangCreatedEvent(vorgang.getId())); + return vorgang; } - Vorgang updateVorgang(Vorgang vorgang, CollaborationRequest request) { - return vorgang.toBuilder() - .header(updateHeader(vorgang.getHeader(), request)) + Vorgang buildCollaborationVorgang(CreateCollaborationVorgangRequest request) { + var srcVorgang = request.getVorgang(); + return Vorgang.builder() + .name(srcVorgang.getName()) + .nummer(srcVorgang.getNummer()) + .formEngineName(srcVorgang.getFormEngineName()) + .aktenzeichen(srcVorgang.getAktenzeichen()) + .header(getHeader(request)) + .eingangs(srcVorgang.getEingangs()) .build(); } - VorgangHead updateHeader(VorgangHead header, CollaborationRequest request) { - return header.toBuilder() + VorgangHead getHeader(CreateCollaborationVorgangRequest request) { + return request.getVorgang().getHeader().toBuilder() .collaborationLevel(request.getCollaborationLevel()) .organisationsEinheitId(request.getZustaendigeStelle()) .build(); diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangService.java index 2702fcfdd2926473b9f938d80eae8f33fee49156..647303f1968fcf6ae80edad3dbe42e87497e6579 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangService.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangService.java @@ -126,12 +126,16 @@ class GrpcVorgangService extends VorgangServiceGrpc.VorgangServiceImplBase { } GrpcCreateCollaborationVorgangResponse createCollaborationVorgang(GrpcCollaborationRequest request) { - var collaborationVorgangId = collaborationService.createCollaborationVorgang(buildCreateCollaborationVorgangRequest(request)); - return GrpcCreateCollaborationVorgangResponse.newBuilder().setVorgangId(collaborationVorgangId).build(); + var collaborationVorgang = collaborationService.createCollaborationVorgang(buildCreateCollaborationVorgangRequest(request)); + return buildCreateCollaborationVorgangResponse(collaborationVorgang); } CreateCollaborationVorgangRequest buildCreateCollaborationVorgangRequest(GrpcCollaborationRequest request) { var vorgang = vorgangService.getById(request.getVorgangId()); return createCollaborationVorgangRequestMapper.mapFrom(request).toBuilder().vorgang(vorgang).build(); } + + GrpcCreateCollaborationVorgangResponse buildCreateCollaborationVorgangResponse(Vorgang vorgang) { + return GrpcCreateCollaborationVorgangResponse.newBuilder().setVorgangId(vorgang.getId()).build(); + } } \ No newline at end of file diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java index 47477d08add15ba5910eaa83d0821c3866152caf..3b69aa9e535b41598d1f2d76f9645436e3c8e75c 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/VorgangService.java @@ -129,23 +129,6 @@ public class VorgangService { return vorgang.toBuilder().clearEingangs().eingang(eingang); } - public String createVorgangSilent(Vorgang vorgang) { - var mappedEingang = kopControlDataMapper.moveLabelsToControlData(vorgang.getEingangs().getFirst()); - var result = repository.save(createVorgangCopy(vorgang, mappedEingang)); - return result.getId(); - } - - Vorgang createVorgangCopy(Vorgang vorgang, Eingang eingang) { - return Vorgang.builder() - .name(vorgang.getName()) - .nummer(vorgang.getNummer()) - .formEngineName(vorgang.getFormEngineName()) - .aktenzeichen(vorgang.getAktenzeichen()) - .header(vorgang.getHeader()) - .eingang(eingang) - .forwardings(vorgang.getForwardings()) - .build(); - } private void publishVorgangeCreatedEvent(Vorgang vorgang) { publisher.publishEvent(new VorgangCreatedEvent(vorgang.getId())); } diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationRepositoryITCase.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationRepositoryITCase.java new file mode 100644 index 0000000000000000000000000000000000000000..b44c3d827a851c7e9b30c28919fb112647914d81 --- /dev/null +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationRepositoryITCase.java @@ -0,0 +1,49 @@ +/* + * 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 org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import de.ozgcloud.common.test.DataITCase; +import de.ozgcloud.vorgang.vorgang.VorgangTestFactory; + +@DataITCase +class CollaborationRepositoryITCase { + + @Autowired + private CollaborationRepository repository; + + @Test + void shouldSaveVorgang() { + var vorgang = VorgangTestFactory.createBuilder().id(null).build(); + + var savedVorgang = repository.save(vorgang); + + assertThat(savedVorgang.getId()).isNotNull(); + assertThat(savedVorgang).usingRecursiveComparison().ignoringFields("id").isEqualTo(vorgang); + } +} \ No newline at end of file diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationServiceTest.java index 469ef800742ad7b26d74b2c4ae94cde53fff0a67..ce325baa4524adbaf3a7216fe81b83a0953036ff 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationServiceTest.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/collaboration/CollaborationServiceTest.java @@ -26,17 +26,25 @@ package de.ozgcloud.vorgang.collaboration; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import java.time.ZonedDateTime; +import java.time.temporal.ChronoUnit; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; +import org.springframework.context.ApplicationEventPublisher; +import de.ozgcloud.command.VorgangCreatedEvent; +import de.ozgcloud.vorgang.servicekonto.ServiceKonto; +import de.ozgcloud.vorgang.servicekonto.ServiceKontoTestFactory; 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 { @@ -46,108 +54,202 @@ class CollaborationServiceTest { private CollaborationService service; @Mock - private VorgangService vorgangService; + private CollaborationRepository collaborationRepository; + @Mock + private ApplicationEventPublisher publisher; @Nested class TestCreateCollaborationVorgang { - private static final CreateCollaborationVorgangRequest COLLABORATION_REQUEST = CreateCollaborationVorgangRequestTestFactory.create(); - private static final String COLLABORATION_VORGANG_ID = "collaboratino-vorgang-id"; + private static final CreateCollaborationVorgangRequest CREATE_COLLABORATION_VORGANG_REQUEST = CreateCollaborationVorgangRequestTestFactory.create(); + private static final String COLLABORATION_VORGANG_ID = "collaboration-vorgang-id"; + private static final Vorgang SAVED_VORGANG = VorgangTestFactory.createBuilder().id(COLLABORATION_VORGANG_ID).build(); @Mock - private Vorgang loadedVorgang; - @Mock - private Vorgang modifiedVorgang; + private Vorgang collaborationVorgang; + @Captor + private ArgumentCaptor<VorgangCreatedEvent> eventCaptor; @BeforeEach void init() { - when(vorgangService.getById(any())).thenReturn(loadedVorgang); - when(vorgangService.createVorgangSilent(any())).thenReturn(COLLABORATION_VORGANG_ID); - doReturn(modifiedVorgang).when(service).updateVorgang(any(), any()); + doReturn(collaborationVorgang).when(service).buildCollaborationVorgang(any()); + when(collaborationRepository.save(any())).thenReturn(SAVED_VORGANG); } @Test - void shouldCallGetVorgang() { + void shouldCallBuildCollaborationVorgang() { createCollaborationVorgang(); - verify(vorgangService).getById(VorgangTestFactory.ID); + verify(service).buildCollaborationVorgang(CREATE_COLLABORATION_VORGANG_REQUEST); } @Test - void shouldCallModifyVorgang() { + void shouldCallSaveVorgang() { createCollaborationVorgang(); - verify(service).updateVorgang(loadedVorgang, COLLABORATION_REQUEST); + verify(collaborationRepository).save(collaborationVorgang); } @Test - void shouldCallCreateVorgang() { + void shouldPublishEvent() { createCollaborationVorgang(); - verify(vorgangService).createVorgangSilent(modifiedVorgang); + verifyNoInteractions(publisher); + // TODO: aktiviere, wenn VorgangCreatedEvent veröffentlicht wird + // verify(publisher).publishEvent(eventCaptor.capture()); + // assertThat(eventCaptor.getValue().getSource()).isEqualTo(COLLABORATION_VORGANG_ID); } @Test - void shouldReturnVorgangId() { + void shouldReturnVorgang() { var result = createCollaborationVorgang(); - assertThat(result).isEqualTo(COLLABORATION_VORGANG_ID); + assertThat(result).isSameAs(SAVED_VORGANG); } - private String createCollaborationVorgang() { - return service.createCollaborationVorgang(COLLABORATION_REQUEST); + private Vorgang createCollaborationVorgang() { + return service.createCollaborationVorgang(CREATE_COLLABORATION_VORGANG_REQUEST); } } @Nested - class TestUpdateVorgang { + class TestBuildCollaborationVorgang { - private static final VorgangHead HEAD = VorgangHeadTestFactory.create(); - private static final CreateCollaborationVorgangRequest COLLABORATION_REQUEST = CreateCollaborationVorgangRequestTestFactory.create(); + private static final CreateCollaborationVorgangRequest COLLABORATION_REQUEST = CreateCollaborationVorgangRequestTestFactory.createBuilder() + .vorgang(VorgangTestFactory.createBuilder().formEngineName(VorgangTestFactory.FORM_ENGINE_NAME).build()).build(); - @Mock - private VorgangHead updatedHead; + private static final VorgangHead UPDATED_HEAD = VorgangHeadTestFactory.create(); + + @BeforeEach + void init() { + doReturn(UPDATED_HEAD).when(service).getHeader(any()); + } + + @Test + void shouldSetVorgangName() { + var result = buildCollaborationVorgang(); + + assertThat(result.getName()).isEqualTo(VorgangTestFactory.NAME); + } + + @Test + void shouldSetVorgangNummer() { + var result = buildCollaborationVorgang(); + + assertThat(result.getNummer()).isEqualTo(VorgangTestFactory.VORGANG_NUMMER); + } + + @Test + void shouldSetFormEngineName() { + var result = buildCollaborationVorgang(); + + assertThat(result.getFormEngineName()).isEqualTo(VorgangTestFactory.FORM_ENGINE_NAME); + } + + @Test + void shouldSetAktenzeichen() { + var result = buildCollaborationVorgang(); + + assertThat(result.getAktenzeichen()).isEqualTo(VorgangTestFactory.AKTENZEICHEN); + } + + @Test + void shouldCallGetHeader() { + buildCollaborationVorgang(); + + verify(service).getHeader(COLLABORATION_REQUEST); + } @Test - void shouldCallUpdateHeader() { - modifyVorgang(); + void shouldSetHeader() { + var result = buildCollaborationVorgang(); - verify(service).updateHeader(HEAD, COLLABORATION_REQUEST); + assertThat(result.getHeader()).isEqualTo(UPDATED_HEAD); } @Test - void shouldSetUpdatedHeader() { - doReturn(updatedHead).when(service).updateHeader(any(), any()); + void shouldSetEingangs() { + var result = buildCollaborationVorgang(); - var result = modifyVorgang(); + assertThat(result.getEingangs()).containsExactly(VorgangTestFactory.EINGANG); + } + + @Test + void shouldSetCreatedAt() { + var result = buildCollaborationVorgang(); + + assertThat(result.getCreatedAt()).isCloseTo(ZonedDateTime.now(), within(1, ChronoUnit.SECONDS)); + } + + @Test + void shouldSetInCreationFalse() { + var result = buildCollaborationVorgang(); + + assertThat(result.isInCreation()).isFalse(); + } + + @Test + void shouldSetStatusNeu() { + var result = buildCollaborationVorgang(); + + assertThat(result.getStatus()).isEqualTo(Vorgang.Status.NEU); + } + + @Test + void shouldNotSetAssignedTo() { + var result = buildCollaborationVorgang(); + + assertThat(result.getAssignedTo()).isNull(); + } + + @Test + void shouldNotSetClientAttributes() { + var result = buildCollaborationVorgang(); + + assertThat(result.getClientAttributes()).isEmpty(); + } - assertThat(result.getHeader()).isSameAs(updatedHead); + @Test + void shouldNotSetForwardings() { + var result = buildCollaborationVorgang(); + + assertThat(result.getForwardings()).isEmpty(); } - private Vorgang modifyVorgang() { - return service.updateVorgang(VorgangTestFactory.createBuilder().header(HEAD).build(), COLLABORATION_REQUEST); + private Vorgang buildCollaborationVorgang() { + return service.buildCollaborationVorgang(COLLABORATION_REQUEST); } } @Nested - class TestUpdateHeader { + class TestGetHeader { + + private static final ServiceKonto SERVICE_KONTO = ServiceKontoTestFactory.create(); @Test void shouldSetZustaendigeStelle() { - var result = updateHeader(); + var result = getHeader(); assertThat(result.getOrganisationsEinheitId()).isEqualTo(CreateCollaborationVorgangRequestTestFactory.ZUSTAENDIGE_STELLE); } @Test void shouldSetCollaborationLevel() { - var result = updateHeader(); + var result = getHeader(); assertThat(result.getCollaborationLevel()).isEqualTo(CreateCollaborationVorgangRequestTestFactory.COLLABORATION_LEVEL); } - private VorgangHead updateHeader() { - return service.updateHeader(VorgangHeadTestFactory.create(), CreateCollaborationVorgangRequestTestFactory.create()); + @Test + void shouldKeepServiceKonto() { + var result = getHeader(); + + assertThat(result.getServiceKonto()).isSameAs(SERVICE_KONTO); + } + + private VorgangHead getHeader() { + return service.getHeader(CreateCollaborationVorgangRequestTestFactory.createBuilder().vorgang(VorgangTestFactory.createBuilder().header( + VorgangHeadTestFactory.createBuilder().serviceKonto(SERVICE_KONTO).build()).build()).build()); } } diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangServiceTest.java index 7e7b7d99af9f9ce95935eed46f38262f21cd35b8..3b78df2424dfa62ae1048907e663065de5110e27 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangServiceTest.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/GrpcVorgangServiceTest.java @@ -414,13 +414,13 @@ class GrpcVorgangServiceTest { class TestCreateCollaborationVorgang { private static final GrpcCollaborationRequest GRPC_COLLABORATION_REQUEST = GrpcCollaborationRequestTestFactory.create(); - private static final String COLLABORATION_VORGANG_ID = "collaboration-vorgang-id"; private static final CreateCollaborationVorgangRequest CREATE_COLLABORATION_VORGANG_REQUEST = CreateCollaborationVorgangRequestTestFactory.create(); + private static final Vorgang COLLABORATION_VORGANG = VorgangTestFactory.create(); @BeforeEach void init() { doReturn(CREATE_COLLABORATION_VORGANG_REQUEST).when(service).buildCreateCollaborationVorgangRequest(any()); - when(collaborationService.createCollaborationVorgang(any())).thenReturn(COLLABORATION_VORGANG_ID); + when(collaborationService.createCollaborationVorgang(any())).thenReturn(COLLABORATION_VORGANG); } @Test @@ -438,10 +438,20 @@ class GrpcVorgangServiceTest { } @Test - void should() { + void shouldCallBuildResponse() { + createCollaborationVorgang(); + + verify(service).buildCreateCollaborationVorgangResponse(COLLABORATION_VORGANG); + } + + @Test + void shouldReturnResponse() { + var response = GrpcCreateCollaborationVorgangResponseTestFactory.create(); + doReturn(response).when(service).buildCreateCollaborationVorgangResponse(any()); + var result = createCollaborationVorgang(); - assertThat(result.getVorgangId()).isEqualTo(COLLABORATION_VORGANG_ID); + assertThat(result).isSameAs(response); } private GrpcCreateCollaborationVorgangResponse createCollaborationVorgang() { @@ -487,4 +497,15 @@ class GrpcVorgangServiceTest { return service.buildCreateCollaborationVorgangRequest(GRPC_COLLABORATION_REQUEST); } } + + @Nested + class TestBuildCreateCollaborationVorgangResponse { + + @Test + void shouldSetVorgangId() { + var result = service.buildCreateCollaborationVorgangResponse(VorgangTestFactory.create()); + + assertThat(result.getVorgangId()).isEqualTo(VorgangTestFactory.ID); + } + } } \ No newline at end of file diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java index 2a25451185752ed845a10235e4bca87d758a239d..e01955296c8139c8ee3c0b5563a6c519465b66d1 100644 --- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/VorgangServiceTest.java @@ -53,7 +53,6 @@ import de.ozgcloud.vorgang.command.CommandTestFactory; import de.ozgcloud.vorgang.common.errorhandling.NotFoundException; import de.ozgcloud.vorgang.servicekonto.ServiceKontoTestFactory; import de.ozgcloud.vorgang.vorgang.redirect.ForwardingService; -import de.ozgcloud.vorgang.vorgang.redirect.ForwardingTestFactory; class VorgangServiceTest { @@ -291,175 +290,6 @@ class VorgangServiceTest { } } - @Nested - class TestCreateVorgangSilent { - - private static final Eingang EINGANG = EingangTestFactory.create(); - private static final Vorgang SRC_VORGANG = VorgangTestFactory.createBuilder().clientAttributes(null).clearEingangs().eingang(EINGANG).build(); - private static final String CREATED_VORGANG_ID = "created-vorgang-id"; - - @Mock - private Eingang mappedEingang; - @Mock - private Vorgang createdVorgang; - @Mock - private Vorgang vorgangCopy; - - @BeforeEach - void init() { - when(kopControlDataMapper.moveLabelsToControlData(any(Eingang.class))).thenReturn(mappedEingang); - when(createdVorgang.getId()).thenReturn(CREATED_VORGANG_ID); - when(repository.save(any())).thenReturn(createdVorgang); - doReturn(vorgangCopy).when(service).createVorgangCopy(any(), any()); - } - - @Test - void shouldCallMoveLabels() { - createVorgang(); - - verify(kopControlDataMapper).moveLabelsToControlData(EINGANG); - } - - @Test - void shouldCallCreateVorgangCopy() { - createVorgang(); - - verify(service).createVorgangCopy(SRC_VORGANG, mappedEingang); - } - - @Test - void shouldNotPublishVorgangCreatedEvent() { - createVorgang(); - - verify(publisher, never()).publishEvent(any(VorgangCreatedEvent.class)); - } - - @Test - void shouldCallSaveVorgang() { - createVorgang(); - - verify(repository).save(vorgangCopy); - } - - @Test - void shouldReturnCreatedVorgangId() { - var result = createVorgang(); - - assertThat(result).isEqualTo(CREATED_VORGANG_ID); - } - - private String createVorgang() { - return service.createVorgangSilent(SRC_VORGANG); - } - } - - @Nested - class TestCreateVorgangCopy { - - @Mock - private Eingang eingang; - - @Test - void shouldNotCopyId() { - var result = createVorgangCopy(); - - assertThat(result.getId()).isNull(); - } - - @Test - void shouldNotCopyVersion() { - var result = createVorgangCopy(); - - assertThat(result.getVersion()).isZero(); - } - - @Test - void shouldSetInCreationFalse() { - var result = createVorgangCopy(); - - assertThat(result.isInCreation()).isFalse(); - } - - @Test - void shouldNotCopyStatus() { - var result = createVorgangCopy(); - - assertThat(result.getStatus()).isEqualTo(Vorgang.Status.NEU); - } - - @Test - void shouldNotCopyAssignedTo() { - var result = createVorgangCopy(); - - assertThat(result.getAssignedTo()).isNull(); - } - - @Test - void shouldNotCopyClientAttributes() { - var result = createVorgangCopy(); - - assertThat(result.getClientAttributes()).isEmpty(); - } - - @Test - void shouldCopyName() { - var result = createVorgangCopy(); - - assertThat(result.getName()).isEqualTo(VorgangTestFactory.NAME); - } - - @Test - void shouldCopyNummer() { - var result = createVorgangCopy(); - - assertThat(result.getNummer()).isEqualTo(VorgangTestFactory.VORGANG_NUMMER); - } - - @Test - void shouldSetFormEngineName() { - var result = service.createVorgangCopy(VorgangTestFactory.createBuilder().formEngineName(VorgangTestFactory.FORM_ENGINE_NAME).build(), - eingang); - - assertThat(result.getFormEngineName()).isEqualTo(VorgangTestFactory.FORM_ENGINE_NAME); - } - - @Test - void shouldCopyAktenzeichen() { - var result = createVorgangCopy(); - - assertThat(result.getAktenzeichen()).isEqualTo(VorgangTestFactory.AKTENZEICHEN); - } - - @Test - void shouldCopyHeader() { - var header = VorgangHeadTestFactory.create(); - - var result = service.createVorgangCopy(VorgangTestFactory.createBuilder().header(header).build(), eingang); - - assertThat(result.getHeader()).isEqualTo(header); - } - - @Test - void shouldSetEingang() { - var result = createVorgangCopy(); - - assertThat(result.getEingangs()).hasSize(1).first().isSameAs(eingang); - } - - @Test - void shouldSetForwardings() { - var forwarding = ForwardingTestFactory.create(); - - var result = service.createVorgangCopy(VorgangTestFactory.createBuilder().forwarding(forwarding).build(), eingang); - - assertThat(result.getForwardings()).containsExactly(forwarding); - } - - private Vorgang createVorgangCopy() { - return service.createVorgangCopy(VorgangTestFactory.create(), eingang); - } - } - @Nested class TestVorgangNotFound { @BeforeEach