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

OZG-5759 add test for FindVorgangIterator

parent 8685926a
No related branches found
No related tags found
No related merge requests found
/*
* 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 java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.springframework.test.util.ReflectionTestUtils;
import de.ozgcloud.vorgang.common.GrpcQueryOperator;
import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangRequest;
import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangResponse;
import de.ozgcloud.vorgang.vorgang.GrpcQuery;
import de.ozgcloud.vorgang.vorgang.GrpcVorgangHeader;
import de.ozgcloud.vorgang.vorgang.GrpcVorgangQueryExpression;
import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
class FindVorgangIteratorTest {
private static final String SERVICEKONTO_TYPE = "servicekontoType";
private static final String POSTFACH_ID = "postfachId";
private FindVorgangIterator findVorgangIterator;
@Mock
private VorgangServiceBlockingStub vorgangServiceStub;
@BeforeEach
void init() {
findVorgangIterator = spy(new FindVorgangIterator(vorgangServiceStub, SERVICEKONTO_TYPE, POSTFACH_ID));
}
@Nested
class TestHasNext {
@Mock
private GrpcFindVorgangResponse findVorgangResponse;
@Mock
private GrpcFindVorgangRequest findVorgangRequest;
@Mock
private GrpcVorgangHeader vorgangHeader;
@BeforeEach
void inti() {
when(vorgangServiceStub.findVorgang(any())).thenReturn(findVorgangResponse);
when(findVorgangResponse.getVorgangList()).thenReturn(List.of(vorgangHeader));
}
@Test
void shouldCallShouldRequestNext() {
findVorgangIterator.hasNext();
verify(findVorgangIterator).shouldRequestNext();
}
@Test
void shouldCallBuildFindRequest() {
findVorgangIterator.hasNext();
verify(findVorgangIterator).buildFindRequest(0);
}
@Test
void shouldCallVorgangServiceStub() {
doReturn(findVorgangRequest).when(findVorgangIterator).buildFindRequest(anyInt());
findVorgangIterator.hasNext();
verify(vorgangServiceStub).findVorgang(findVorgangRequest);
}
@Test
void shouldSetVorgangHeaderIterator() {
findVorgangIterator.hasNext();
assertThat(ReflectionTestUtils.getField(findVorgangIterator, "vorgangHeaderIterator")).isNotNull();
}
@Test
void shouldSetLastVorgangListSize() {
findVorgangIterator.hasNext();
assertThat(ReflectionTestUtils.getField(findVorgangIterator, "lastVorgangListSize")).isEqualTo(1);
}
@Test
void shouldIncreaseOffset() {
doReturn(true).when(findVorgangIterator).shouldRequestNext();
findVorgangIterator.hasNext();
findVorgangIterator.hasNext();
assertThat(ReflectionTestUtils.getField(findVorgangIterator, "offset")).isEqualTo(1);
}
}
@Nested
class TestShouldRequestNext {
@Test
void shouldReturnTrueIfNoFindVorgangRequest() {
var result = findVorgangIterator.shouldRequestNext();
assertThat(result).isTrue();
}
@Test
void shouldReturnTrueIfNoNextElementLastVorgangListSizeIsLimit() {
ReflectionTestUtils.setField(findVorgangIterator, "vorgangHeaderIterator", Collections.emptyIterator());
ReflectionTestUtils.setField(findVorgangIterator, "lastVorgangListSize", FindVorgangIterator.LIMIT);
var result = findVorgangIterator.shouldRequestNext();
assertThat(result).isTrue();
}
}
@Nested
class TestNext {
@Mock
private GrpcVorgangHeader nextVorgangHeader;
@Test
void shouldReturnNextElement() {
ReflectionTestUtils.setField(findVorgangIterator, "vorgangHeaderIterator", List.of(nextVorgangHeader).iterator());
var result = findVorgangIterator.next();
assertThat(result).isSameAs(nextVorgangHeader);
}
}
@Nested
class TestBuildFindRequest {
private static final int OFFSET = 100;
@Test
void shouldSetOffset() {
var result = buildFindRequest();
assertThat(result.getOffset()).isEqualTo(OFFSET);
}
@Test
void shouldSetLimit() {
var result = buildFindRequest();
assertThat(result.getLimit()).isEqualTo(FindVorgangIterator.LIMIT);
}
@Test
void shouldCallBuildQuery() {
buildFindRequest();
verify(findVorgangIterator).buildQuery();
}
@Test
void shouldSetQuery() {
var query = GrpcQuery.newBuilder().build();
doReturn(query).when(findVorgangIterator).buildQuery();
var result = buildFindRequest();
assertThat(result.getQuery()).isSameAs(query);
}
private GrpcFindVorgangRequest buildFindRequest() {
return findVorgangIterator.buildFindRequest(OFFSET);
}
}
@Nested
class TestBuildQuery {
@Mock
private GrpcVorgangQueryExpression servicekontoExpression;
@Mock
private GrpcVorgangQueryExpression postfachIdExpression;
@Test
void shouldCallBuildServicekontoExpression() {
findVorgangIterator.buildQuery();
verify(findVorgangIterator).buildServicekontoExpression();
}
@Test
void shouldSetServicekontoExpression() {
doReturn(servicekontoExpression).when(findVorgangIterator).buildServicekontoExpression();
var result = findVorgangIterator.buildQuery();
assertThat(result.getExpressionsList()).contains(servicekontoExpression);
}
@Test
void shouldCallBuildPostfachIdExpression() {
findVorgangIterator.buildQuery();
verify(findVorgangIterator).buildPostfachIdExpression();
}
@Test
void shouldSetPostfachIdExpression() {
doReturn(postfachIdExpression).when(findVorgangIterator).buildPostfachIdExpression();
var result = findVorgangIterator.buildQuery();
assertThat(result.getExpressionsList()).contains(postfachIdExpression);
}
}
@Nested
class TestBuildServicekontoExpression {
@Test
void shouldSetPath() {
var result = findVorgangIterator.buildServicekontoExpression();
assertThat(result.getPath()).isEqualTo(FindVorgangIterator.PATH_SERVICEKONTO_TYPE);
}
@Test
void shouldSetOperator() {
var result = findVorgangIterator.buildServicekontoExpression();
assertThat(result.getOperator()).isEqualTo(GrpcQueryOperator.EQUAL);
}
@Test
void shouldSetOperandStringValue() {
var result = findVorgangIterator.buildServicekontoExpression();
assertThat(result.getOperandStringValue()).isEqualTo(SERVICEKONTO_TYPE);
}
}
@Nested
class TestBuildPostfachIdExpression {
@Test
void shouldSetPath() {
var result = findVorgangIterator.buildPostfachIdExpression();
assertThat(result.getPath()).isEqualTo(FindVorgangIterator.PATH_POSTFACH_ID);
}
@Test
void shouldSetOperator() {
var result = findVorgangIterator.buildPostfachIdExpression();
assertThat(result.getOperator()).isEqualTo(GrpcQueryOperator.EQUAL);
}
@Test
void shouldSetOperandStringValue() {
var result = findVorgangIterator.buildPostfachIdExpression();
assertThat(result.getOperandStringValue()).isEqualTo(POSTFACH_ID);
}
}
}
\ 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