Skip to content
Snippets Groups Projects
Commit 2aa46508 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-5132 rename method; add tests

parent 075ee80f
Branches
Tags
No related merge requests found
......@@ -51,7 +51,7 @@ class AttachedItemRemoteService {
@Autowired
private PostfachNachrichtMapper postfachNachrichtMapper;
public Stream<PostfachNachricht> findPostfachNachrichts(String vorgangId) {
public Stream<PostfachNachricht> findReplyAllowedPostfachNachrichts(String vorgangId) {
return getVorgangAttachedItemServiceStub().find(buildFindRequest(vorgangId)).getVorgangAttachedItemsList().stream()
.filter(this::replyAllowed).map(postfachNachrichtMapper::fromAttachedItem);
}
......
......@@ -103,7 +103,7 @@ public class PersistPostfachNachrichtServiceImpl implements PersistPostfachNachr
@Override
public Stream<PostfachNachricht> findRueckfragen(String servicekontoType, String postfachId) {
return vorgangRemoteService.findVorgangIds(servicekontoType, postfachId).flatMap(attachedItemRemoteService::findPostfachNachrichts);
return vorgangRemoteService.findVorgangIds(servicekontoType, postfachId).flatMap(attachedItemRemoteService::findReplyAllowedPostfachNachrichts);
}
@Override
......
/*
* 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.nachrichten.postfach;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import java.util.Collections;
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.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import de.ozgcloud.nachrichten.common.grpc.NachrichtenCallContextAttachingInterceptor;
import de.ozgcloud.nachrichten.postfach.osi.MessageTestFactory;
import de.ozgcloud.vorgang.common.GrpcObject;
import de.ozgcloud.vorgang.common.GrpcProperty;
import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemRequest;
import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcFindVorgangAttachedItemResponse;
import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItem;
import de.ozgcloud.vorgang.vorgangAttachedItem.VorgangAttachedItemServiceGrpc.VorgangAttachedItemServiceBlockingStub;
class AttachedItemRemoteServiceTest {
@Spy
@InjectMocks
private AttachedItemRemoteService attachedItemRemoteService;
@Mock
private VorgangAttachedItemServiceBlockingStub vorgangAttachedItemServiceBlockingStub;
@Mock
private PostfachNachrichtMapper postfachNachrichtMapper;
@Nested
class TestFindReplyAllowedPostfachNachrichts {
private static final GrpcVorgangAttachedItem GRPC_VORGANG_ATTACHED_ITEM = GrpcVorgangAttachedItemTestFactory.create();
@Mock
private GrpcFindVorgangAttachedItemRequest grpcFindVorgangAttachedItemRequest;
@Mock
private GrpcFindVorgangAttachedItemResponse grpcFindVorgangAttachedItemResponse;
@Mock
private PostfachNachricht postfachNachricht;
@BeforeEach
void init() {
when(grpcFindVorgangAttachedItemResponse.getVorgangAttachedItemsList()).thenReturn(Collections.singletonList(GRPC_VORGANG_ATTACHED_ITEM));
when(vorgangAttachedItemServiceBlockingStub.find(any())).thenReturn(grpcFindVorgangAttachedItemResponse);
doReturn(vorgangAttachedItemServiceBlockingStub).when(attachedItemRemoteService).getVorgangAttachedItemServiceStub();
}
@Test
void testCallGetVorgangAttachedItemServiceStub() {
attachedItemRemoteService.findReplyAllowedPostfachNachrichts(MessageTestFactory.VORGANG_ID);
verify(attachedItemRemoteService).getVorgangAttachedItemServiceStub();
}
@Test
void shouldCallBuildFindRequest() {
attachedItemRemoteService.findReplyAllowedPostfachNachrichts(MessageTestFactory.VORGANG_ID);
verify(attachedItemRemoteService).buildFindRequest(MessageTestFactory.VORGANG_ID);
}
@Test
void shouldCallFind() {
doReturn(grpcFindVorgangAttachedItemRequest).when(attachedItemRemoteService).buildFindRequest(anyString());
attachedItemRemoteService.findReplyAllowedPostfachNachrichts(MessageTestFactory.VORGANG_ID);
verify(vorgangAttachedItemServiceBlockingStub).find(grpcFindVorgangAttachedItemRequest);
}
@Test
void shouldCallReplyAllowed() {
attachedItemRemoteService.findReplyAllowedPostfachNachrichts(MessageTestFactory.VORGANG_ID).toList();
verify(attachedItemRemoteService).replyAllowed(GRPC_VORGANG_ATTACHED_ITEM);
}
@Test
void shouldCallPostfachNachrichtMapper() {
doReturn(true).when(attachedItemRemoteService).replyAllowed(any());
attachedItemRemoteService.findReplyAllowedPostfachNachrichts(MessageTestFactory.VORGANG_ID).toList();
verify(postfachNachrichtMapper).fromAttachedItem(GRPC_VORGANG_ATTACHED_ITEM);
}
@Test
void shouldNotCallPostfachNachrichtMapper() {
doReturn(false).when(attachedItemRemoteService).replyAllowed(any());
attachedItemRemoteService.findReplyAllowedPostfachNachrichts(MessageTestFactory.VORGANG_ID).toList();
verify(postfachNachrichtMapper, never()).fromAttachedItem(GRPC_VORGANG_ATTACHED_ITEM);
}
@Test
void shouldReturnResult() {
doReturn(true).when(attachedItemRemoteService).replyAllowed(any());
doReturn(postfachNachricht).when(postfachNachrichtMapper).fromAttachedItem(any());
var result = attachedItemRemoteService.findReplyAllowedPostfachNachrichts(MessageTestFactory.VORGANG_ID);
assertThat(result).containsExactly(postfachNachricht);
}
}
@Nested
class TestReplyAllowed {
@DisplayName("should return true")
@ParameterizedTest(name = "when replyOption is {0}")
@EnumSource(value = PostfachNachricht.ReplyOption.class, names = { "FORBIDDEN" }, mode = EnumSource.Mode.EXCLUDE)
void shouldReturnTrue(PostfachNachricht.ReplyOption replyOption) {
var grpcVorgangAttachedItem = GrpcVorgangAttachedItemTestFactory.createBuilder().setItem(GrpcObject.newBuilder()
.addProperty(GrpcProperty.newBuilder().setName("replyOption").addValue(replyOption.name()))).build();
var result = attachedItemRemoteService.replyAllowed(grpcVorgangAttachedItem);
assertThat(result).isTrue();
}
@Test
void shouldReturnFalse() {
var grpcVorgangAttachedItem = GrpcVorgangAttachedItemTestFactory.createBuilder().setItem(GrpcObject.newBuilder()
.addProperty(GrpcProperty.newBuilder().setName("replyOption").addValue("FORBIDDEN"))).build();
var result = attachedItemRemoteService.replyAllowed(grpcVorgangAttachedItem);
assertThat(result).isFalse();
}
}
@Nested
class TestBuildFindRequest {
@Test
void shouldSetVorgangId() {
var result = attachedItemRemoteService.buildFindRequest(MessageTestFactory.VORGANG_ID);
assertThat(result.getVorgangId()).isEqualTo(MessageTestFactory.VORGANG_ID);
}
@Test
void shouldSetClient() {
var result = attachedItemRemoteService.buildFindRequest(MessageTestFactory.VORGANG_ID);
assertThat(result.getClient()).isEqualTo(AttachedItemRemoteService.CLIENT);
}
@Test
void shouldSetItemName() {
var result = attachedItemRemoteService.buildFindRequest(MessageTestFactory.VORGANG_ID);
assertThat(result.getItemName()).isEqualTo(AttachedItemRemoteService.ITEM_NAME);
}
}
@Nested
class TestGetVorgangAttachedItemServiceStub {
@Mock
private VorgangAttachedItemServiceBlockingStub stubWithInterceptor;
@Test
void shouldAddInterceptor() {
attachedItemRemoteService.getVorgangAttachedItemServiceStub();
verify(vorgangAttachedItemServiceBlockingStub).withInterceptors(any(NachrichtenCallContextAttachingInterceptor.class));
}
@Test
void shouldReturnStub() {
when(vorgangAttachedItemServiceBlockingStub.withInterceptors(any())).thenReturn(stubWithInterceptor);
var result = attachedItemRemoteService.getVorgangAttachedItemServiceStub();
assertThat(result).isSameAs(stubWithInterceptor);
}
}
}
\ No newline at end of file
/*
* Copyright (C) 2022 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.nachrichten.postfach;
import de.ozgcloud.vorgang.common.GrpcObject;
import de.ozgcloud.vorgang.common.GrpcProperty;
import de.ozgcloud.vorgang.vorgangAttachedItem.GrpcVorgangAttachedItem;
public class GrpcVorgangAttachedItemTestFactory {
public static final String ID = "id";
public static final String CLIENT = "client";
public static final String ITEM_NAME = "itemName";
public static final String PROPERTY_NAME = "propertyName";
public static final String PROPERTY_NAME_VALUE = "propertyNameValue";
public static final GrpcObject OBJECT = GrpcObject.newBuilder()
.addProperty(GrpcProperty.newBuilder().setName(PROPERTY_NAME).addValue(PROPERTY_NAME_VALUE).build()).build();
static GrpcVorgangAttachedItem create() {
return createBuilder().build();
}
static GrpcVorgangAttachedItem.Builder createBuilder() {
return GrpcVorgangAttachedItem.newBuilder()
.setId(ID)
.setClient(CLIENT)
.setItemName(ITEM_NAME)
.setItem(OBJECT);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment