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

OZG-6842 implement GrpcOzgCloudVorgangService#find

parent 04f964d4
No related branches found
No related tags found
No related merge requests found
package de.ozgcloud.apilib.vorgang.grpc; package de.ozgcloud.apilib.vorgang.grpc;
import java.util.Collections;
import java.util.List; import java.util.List;
import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextAttachingInterceptor; import de.ozgcloud.apilib.common.callcontext.OzgCloudCallContextAttachingInterceptor;
...@@ -28,6 +27,7 @@ public class GrpcOzgCloudVorgangService implements OzgCloudVorgangService { ...@@ -28,6 +27,7 @@ public class GrpcOzgCloudVorgangService implements OzgCloudVorgangService {
private final OzgCloudVorgangMapper mapper; private final OzgCloudVorgangMapper mapper;
private final OzgCloudVorgangStubMapper stubMapper; private final OzgCloudVorgangStubMapper stubMapper;
private final OzgCloudVorgangQueryMapper queryMapper;
private final OzgCloudCallContextProvider contextProvider; private final OzgCloudCallContextProvider contextProvider;
...@@ -66,13 +66,23 @@ public class GrpcOzgCloudVorgangService implements OzgCloudVorgangService { ...@@ -66,13 +66,23 @@ public class GrpcOzgCloudVorgangService implements OzgCloudVorgangService {
.build(); .build();
} }
VorgangServiceBlockingStub getVorgangServiceStub() {
return vorgangServiceStub.withInterceptors(new OzgCloudCallContextAttachingInterceptor(contextProvider));
}
@Override @Override
public List<OzgCloudVorgangStub> find(OzgCloudVorgangQuery query, Page page) { public List<OzgCloudVorgangStub> find(OzgCloudVorgangQuery query, Page page) {
// TODO Auto-generated method stub var response = getVorgangServiceStub().findVorgang(buildFindRequest(query, page));
return Collections.emptyList();
return response.getVorgangList().stream().map(stubMapper::fromGrpc).toList();
}
GrpcFindVorgangRequest buildFindRequest(OzgCloudVorgangQuery query, Page page) {
return GrpcFindVorgangRequest.newBuilder()
.setLimit(page.getLimit())
.setOffset(page.getOffset())
.setQuery(queryMapper.toGrpc(query))
.setOrderBy(GrpcOrderBy.CREATED_AT_DESC)
.build();
}
VorgangServiceBlockingStub getVorgangServiceStub() {
return vorgangServiceStub.withInterceptors(new OzgCloudCallContextAttachingInterceptor(contextProvider));
} }
} }
package de.ozgcloud.apilib.vorgang.grpc;
import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangRequest;
import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangRequest.Builder;
import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangRequest.GrpcOrderBy;
import de.ozgcloud.vorgang.vorgang.GrpcQuery;
public class GrpcFindVorgangRequestTestFactory {
public static final GrpcQuery QUERY = GrpcQueryTestFactory.create();
public static final int LIMIT = (int) (Math.random() * 100);
public static final int OFFSET = (int) (Math.random() * LIMIT);
public static GrpcFindVorgangRequest create() {
return createBuilder()
.build();
}
public static Builder createBuilder() {
return GrpcFindVorgangRequest.newBuilder()
.setLimit(LIMIT)
.setOffset(OFFSET)
.setQuery(QUERY)
.setOrderBy(GrpcOrderBy.CREATED_AT_DESC);
}
}
package de.ozgcloud.apilib.vorgang.grpc;
import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangResponse;
import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangResponse.Builder;
import de.ozgcloud.vorgang.vorgang.GrpcVorgangHeader;
public class GrpcFindVorgangResponseTestFactory {
public static final GrpcVorgangHeader VORGANG_HEADER = GrpcVorgangHeaderTestFactory.create();
public static final long TOTAL = (long) (Math.random() * 100);
public static GrpcFindVorgangResponse create() {
return createBuilder().build();
}
public static Builder createBuilder() {
return GrpcFindVorgangResponse.newBuilder()
.setTotal(TOTAL)
.addVorgang(VORGANG_HEADER);
}
}
...@@ -4,6 +4,8 @@ import static org.assertj.core.api.Assertions.*; ...@@ -4,6 +4,8 @@ import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*; import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import java.util.List;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
...@@ -11,7 +13,11 @@ import org.mockito.ArgumentCaptor; ...@@ -11,7 +13,11 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Captor; import org.mockito.Captor;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Spy;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangQuery;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangQueryTestFactory;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStub;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStubTestFactory; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangStubTestFactory;
import de.ozgcloud.apilib.vorgang.OzgCloudVorgangTestFactory; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangTestFactory;
import de.ozgcloud.apilib.vorgang.Page; import de.ozgcloud.apilib.vorgang.Page;
...@@ -24,6 +30,7 @@ import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub ...@@ -24,6 +30,7 @@ import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub
class GrpcOzgCloudVorgangServiceTest { class GrpcOzgCloudVorgangServiceTest {
@InjectMocks @InjectMocks
@Spy
private GrpcOzgCloudVorgangService service; private GrpcOzgCloudVorgangService service;
@Mock @Mock
...@@ -32,6 +39,8 @@ class GrpcOzgCloudVorgangServiceTest { ...@@ -32,6 +39,8 @@ class GrpcOzgCloudVorgangServiceTest {
private OzgCloudVorgangMapper mapper; private OzgCloudVorgangMapper mapper;
@Mock @Mock
private OzgCloudVorgangStubMapper stubMapper; private OzgCloudVorgangStubMapper stubMapper;
@Mock
private OzgCloudVorgangQueryMapper queryMapper;
@Nested @Nested
class TestGetById { class TestGetById {
...@@ -150,4 +159,99 @@ class GrpcOzgCloudVorgangServiceTest { ...@@ -150,4 +159,99 @@ class GrpcOzgCloudVorgangServiceTest {
} }
} }
@Nested
class TestFind {
private static final Page PAGE = Page.startPage();
private final OzgCloudVorgangQuery query = OzgCloudVorgangQueryTestFactory.create();
private final GrpcFindVorgangRequest request = GrpcFindVorgangRequestTestFactory.create();
private final GrpcFindVorgangResponse response = GrpcFindVorgangResponseTestFactory.create();
@Mock
private VorgangServiceBlockingStub stubWithInterceptor;
@BeforeEach
void mock() {
doReturn(stubWithInterceptor).when(service).getVorgangServiceStub();
doReturn(request).when(service).buildFindRequest(query, PAGE);
when(stubWithInterceptor.findVorgang(request)).thenReturn(response);
}
@Test
void shouldGetVorgangServiceStub() {
callService();
verify(service).getVorgangServiceStub();
}
@Test
void shouldBuildFindRequest() {
callService();
verify(service).buildFindRequest(query, PAGE);
}
@Test
void shouldFindVorgang() {
callService();
verify(stubWithInterceptor).findVorgang(request);
}
@Test
void shouldMapResponse() {
callService();
verify(stubMapper).fromGrpc(GrpcFindVorgangResponseTestFactory.VORGANG_HEADER);
}
@Test
void shouldReturnMappedVorgangStubs() {
var mappedVorgangStub = OzgCloudVorgangStubTestFactory.create();
when(stubMapper.fromGrpc(GrpcFindVorgangResponseTestFactory.VORGANG_HEADER)).thenReturn(mappedVorgangStub);
var vorgangStubs = callService();
assertThat(vorgangStubs).containsExactly(mappedVorgangStub);
}
private List<OzgCloudVorgangStub> callService() {
return service.find(query, PAGE);
}
}
@Nested
class TestBuildFindRequest {
private final Page page = Page.builder()
.limit(GrpcFindVorgangRequestTestFactory.LIMIT)
.offset(GrpcFindVorgangRequestTestFactory.OFFSET)
.build();
private final OzgCloudVorgangQuery ozgCloudVorgangQuery = OzgCloudVorgangQueryTestFactory.create();
@BeforeEach
void mockMapper() {
when(queryMapper.toGrpc(ozgCloudVorgangQuery)).thenReturn(GrpcFindVorgangRequestTestFactory.QUERY);
}
@Test
void shouldMapToGrpcQuery() {
callService();
verify(queryMapper).toGrpc(ozgCloudVorgangQuery);
}
@Test
void shouldReturnRequest() {
var request = callService();
assertThat(request).usingRecursiveComparison().isEqualTo(GrpcFindVorgangRequestTestFactory.create());
}
private GrpcFindVorgangRequest callService() {
return service.buildFindRequest(ozgCloudVorgangQuery, page);
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment