Skip to content
Snippets Groups Projects
Commit ef5924ac authored by Krzysztof Witukiewicz's avatar Krzysztof Witukiewicz
Browse files

OZG-6706 OZG-7497 Remove logic from BescheidRemoteService

parent 8800cfe3
No related branches found
No related tags found
1 merge request!7Ozg 6706 anbindung bescheid schnittstelle
/*
* 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.alfa.bescheid;
import lombok.Builder;
import lombok.Getter;
@Builder
@Getter
class BescheidManagerFeatures {
private boolean canCreateBescheidDocument;
}
/*
* 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.alfa.bescheid;
import org.mapstruct.Mapper;
import org.mapstruct.NullValueCheckStrategy;
import org.mapstruct.ReportingPolicy;
import de.ozgcloud.document.bescheid.GrpcBescheidManagerFeatures;
@Mapper(unmappedTargetPolicy = ReportingPolicy.ERROR, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
interface BescheidManagerFeaturesMapper {
BescheidManagerFeatures fromGrpc(GrpcBescheidManagerFeatures grpcBescheidManagerFeatures);
}
...@@ -46,6 +46,8 @@ class BescheidRemoteService { ...@@ -46,6 +46,8 @@ class BescheidRemoteService {
private BescheidServiceBlockingStub bescheidServiceStub; private BescheidServiceBlockingStub bescheidServiceStub;
@Autowired @Autowired
private BescheidMapper bescheidMapper; private BescheidMapper bescheidMapper;
@Autowired
private BescheidManagerFeaturesMapper bescheidManagerFeaturesMapper;
public Optional<Bescheid> getBescheidDraft(String vorgangId) { public Optional<Bescheid> getBescheidDraft(String vorgangId) {
var request = buildGetBescheidDraftRequest(vorgangId); var request = buildGetBescheidDraftRequest(vorgangId);
...@@ -83,9 +85,8 @@ class BescheidRemoteService { ...@@ -83,9 +85,8 @@ class BescheidRemoteService {
return GrpcGetAllBescheidRequest.newBuilder().setVorgangId(vorgangId).build(); return GrpcGetAllBescheidRequest.newBuilder().setVorgangId(vorgangId).build();
} }
// TODO Logik in den Service verschieben public Optional<BescheidManagerFeatures> getBescheidManagerFeatures() {
public boolean canCreateBescheidDocument() {
var response = bescheidServiceStub.getConfig(GrpcBescheidManagerConfigRequest.newBuilder().build()); var response = bescheidServiceStub.getConfig(GrpcBescheidManagerConfigRequest.newBuilder().build());
return response.hasFeatures() && response.getFeatures().getCanCreateBescheidDocument(); return response.hasFeatures() ? Optional.of(bescheidManagerFeaturesMapper.fromGrpc(response.getFeatures())) : Optional.empty();
} }
} }
\ No newline at end of file
...@@ -59,7 +59,7 @@ public class BescheidService { ...@@ -59,7 +59,7 @@ public class BescheidService {
} }
public boolean canCreateBescheidDocumentAutomatically() { public boolean canCreateBescheidDocumentAutomatically() {
return remoteService.canCreateBescheidDocument(); return remoteService.getBescheidManagerFeatures().map(BescheidManagerFeatures::isCanCreateBescheidDocument).orElse(false);
} }
public boolean existsBescheid(String vorgangId) { public boolean existsBescheid(String vorgangId) {
......
/*
* 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.alfa.bescheid;
import static org.assertj.core.api.Assertions.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.mapstruct.factory.Mappers;
import de.ozgcloud.document.bescheid.GrpcBescheidManagerFeatures;
class BescheidManagerFeaturesMapperTest {
private final BescheidManagerFeaturesMapper mapper = Mappers.getMapper(BescheidManagerFeaturesMapper.class);
@ParameterizedTest
@ValueSource(booleans = {true, false})
void shouldMapCanCreateBescheidDocument(boolean canCreate) {
var grpcFeatures = GrpcBescheidManagerFeatures.newBuilder().setCanCreateBescheidDocument(canCreate).build();
var features = mapper.fromGrpc(grpcFeatures);
assertThat(features.isCanCreateBescheidDocument()).isEqualTo(canCreate);
}
}
...@@ -57,6 +57,8 @@ class BescheidRemoteServiceTest { ...@@ -57,6 +57,8 @@ class BescheidRemoteServiceTest {
private BescheidServiceBlockingStub bescheidServiceStub; private BescheidServiceBlockingStub bescheidServiceStub;
@Mock @Mock
private BescheidMapper bescheidMapper; private BescheidMapper bescheidMapper;
@Mock
private BescheidManagerFeaturesMapper featuresMapper;
@Nested @Nested
class TestGetBescheidDraft { class TestGetBescheidDraft {
...@@ -206,51 +208,68 @@ class BescheidRemoteServiceTest { ...@@ -206,51 +208,68 @@ class BescheidRemoteServiceTest {
} }
@Nested @Nested
class TestCanCreateBescheidDocument { class TestGetBescheidManagerFeatures {
private final GrpcBescheidManagerConfigRequest request = GrpcBescheidManagerConfigRequestTestFactory.create(); private final GrpcBescheidManagerConfigRequest request = GrpcBescheidManagerConfigRequestTestFactory.create();
private final GrpcBescheidManagerConfigResponse respone = GrpcBescheidManagerConfigResponseTestFactory.create(); private final GrpcBescheidManagerConfigResponse respone = GrpcBescheidManagerConfigResponseTestFactory.create();
@Test
void shouldCallGrpcService() {
when(bescheidServiceStub.getConfig(request)).thenReturn(respone);
when(featuresMapper.fromGrpc(any())).thenReturn(BescheidManagerFeatures.builder().build());
service.getBescheidManagerFeatures();
verify(bescheidServiceStub).getConfig(request);
}
@Nested
class OnFeaturesArePresent {
private final BescheidManagerFeatures mappedFeatures = BescheidManagerFeatures.builder().build();
@BeforeEach @BeforeEach
void setUp() { void setUp() {
when(bescheidServiceStub.getConfig(request)).thenReturn(respone); when(bescheidServiceStub.getConfig(request)).thenReturn(respone);
when(featuresMapper.fromGrpc(any())).thenReturn(mappedFeatures);
} }
@Test @Test
void shouldCallRemoteService() { void shouldCallMapper() {
service.canCreateBescheidDocument(); service.getBescheidManagerFeatures();
verify(bescheidServiceStub).getConfig(request); verify(featuresMapper).fromGrpc(GrpcBescheidManagerFeaturesTestFactory.create());
} }
@Test @Test
void shouldReturnTrue() { void shouldReturnMappedFeatures() {
var canCreate = service.canCreateBescheidDocument(); var features = service.getBescheidManagerFeatures();
assertThat(canCreate).isTrue(); assertThat(features).isNotEmpty().get().isSameAs(mappedFeatures);
}
} }
@Test @Nested
void shouldReturnFalseIfNoFeaturesAvailable() { class OnFeaturesAreAbsent {
@BeforeEach
void init() {
when(bescheidServiceStub.getConfig(request)).thenReturn(GrpcBescheidManagerConfigResponse.newBuilder().build()); when(bescheidServiceStub.getConfig(request)).thenReturn(GrpcBescheidManagerConfigResponse.newBuilder().build());
}
var canCreate = service.canCreateBescheidDocument(); @Test
void shouldNotCallMapper() {
service.getBescheidManagerFeatures();
assertThat(canCreate).isFalse(); verify(featuresMapper, never()).fromGrpc(any());
} }
@Test @Test
void shouldReturnFalseIfFeatureDisabled() { void shouldReturnEmpty() {
var respones = GrpcBescheidManagerConfigResponseTestFactory.createBuilder() var features = service.getBescheidManagerFeatures();
.setFeatures(GrpcBescheidManagerFeaturesTestFactory.createBuilder()
.setCanCreateBescheidDocument(false)
.build())
.build();
when(bescheidServiceStub.getConfig(request)).thenReturn(respones);
var canCreate = service.canCreateBescheidDocument();
assertThat(canCreate).isFalse(); assertThat(features).isEmpty();
}
} }
} }
......
...@@ -168,19 +168,31 @@ class BescheidServiceTest { ...@@ -168,19 +168,31 @@ class BescheidServiceTest {
@Test @Test
void shouldCallRemoteService() { void shouldCallRemoteService() {
when(remoteService.getBescheidManagerFeatures()).thenReturn(Optional.of(BescheidManagerFeatures.builder().build()));
service.canCreateBescheidDocumentAutomatically(); service.canCreateBescheidDocumentAutomatically();
verify(remoteService).canCreateBescheidDocument(); verify(remoteService).getBescheidManagerFeatures();
}
@Test
void shouldReturnFalseIfFeaturesAreEmpty() {
when(remoteService.getBescheidManagerFeatures()).thenReturn(Optional.empty());
var canCreate = service.canCreateBescheidDocumentAutomatically();
assertThat(canCreate).isFalse();
} }
@ParameterizedTest @ParameterizedTest
@ValueSource(booleans = { true, false }) @ValueSource(booleans = { true, false })
void shouldRetrun(boolean canCreateBescheidDocument) { void shouldReturnFeatureValue(boolean featureValue) {
when(remoteService.canCreateBescheidDocument()).thenReturn(canCreateBescheidDocument); when(remoteService.getBescheidManagerFeatures()).thenReturn(
Optional.of(BescheidManagerFeatures.builder().canCreateBescheidDocument(featureValue).build()));
var canCreateAutomatically = service.canCreateBescheidDocumentAutomatically(); var canCreate = service.canCreateBescheidDocumentAutomatically();
assertThat(canCreateAutomatically).isEqualTo(canCreateBescheidDocument); assertThat(canCreate).isEqualTo(featureValue);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment