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

OZG-5812 OZG-5909 Do not create export link if export is disabled

parent 3b1cbb4a
No related branches found
No related tags found
No related merge requests found
......@@ -10,6 +10,7 @@ import org.springframework.hateoas.LinkRelation;
import org.springframework.hateoas.server.RepresentationModelProcessor;
import org.springframework.stereotype.Component;
import de.ozgcloud.alfa.common.FeatureToggleProperties;
import de.ozgcloud.alfa.common.ModelBuilder;
import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
......@@ -19,9 +20,13 @@ import lombok.RequiredArgsConstructor;
@Component
class ExportVorgangProcessor implements RepresentationModelProcessor<EntityModel<VorgangWithEingang>> {
static final Predicate<VorgangWithEingang> IS_VORGANG_ABGESCHLOSSEN = vorgang -> vorgang.getStatus() == VorgangStatus.ABGESCHLOSSEN;
private final Predicate<VorgangWithEingang> isExportEnabled = vorgang -> isExportEnabled();
private static final Predicate<VorgangWithEingang> IS_VORGANG_ABGESCHLOSSEN = vorgang -> vorgang.getStatus() == VorgangStatus.ABGESCHLOSSEN;
static final LinkRelation REL_EXPORT = LinkRelation.of("export");
private final FeatureToggleProperties featureToggleProperties;
@Override
public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) {
var vorgang = model.getContent();
......@@ -31,9 +36,12 @@ class ExportVorgangProcessor implements RepresentationModelProcessor<EntityModel
}
return ModelBuilder.fromModel(model)
.ifMatch(IS_VORGANG_ABGESCHLOSSEN)
.ifMatch(isExportEnabled.and(IS_VORGANG_ABGESCHLOSSEN))
.addLink(linkTo(methodOn(ExportVorgangController.class).exportToXdomea(vorgang.getId())).withRel(REL_EXPORT))
.buildModel();
}
private boolean isExportEnabled() {
return featureToggleProperties.isVorgangExport();
}
}
......@@ -2,6 +2,7 @@ package de.ozgcloud.alfa.export;
import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
......@@ -10,9 +11,11 @@ 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.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link;
import de.ozgcloud.alfa.common.FeatureToggleProperties;
import de.ozgcloud.alfa.common.UserProfileUrlProvider;
import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
......@@ -24,6 +27,9 @@ class ExportVorgangProcessorTest {
@InjectMocks
private ExportVorgangProcessor processor;
@Mock
private FeatureToggleProperties featureToggleProperties;
private final UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
@Nested
......@@ -39,7 +45,8 @@ class ExportVorgangProcessorTest {
}
@Test
void shouldAddLink() {
void shouldAddLinkWhenExportIsEnabledAndVorgangIsAbgeschlossen() {
when(featureToggleProperties.isVorgangExport()).thenReturn(true);
var vorgang = vorgangInStatus(VorgangStatus.ABGESCHLOSSEN);
var model = processor.process(EntityModel.of(vorgang));
......@@ -50,7 +57,8 @@ class ExportVorgangProcessorTest {
@ParameterizedTest
@EnumSource(mode = EnumSource.Mode.EXCLUDE, names = "ABGESCHLOSSEN")
void shouldNotAddLink(VorgangStatus status) {
void shouldNotAddLinkWhenVorgangIsNotAbgeschlossen(VorgangStatus status) {
when(featureToggleProperties.isVorgangExport()).thenReturn(true);
var vorgang = vorgangInStatus(status);
var model = processor.process(EntityModel.of(vorgang));
......@@ -58,6 +66,16 @@ class ExportVorgangProcessorTest {
assertThat(model.getLink(ExportVorgangProcessor.REL_EXPORT)).isEmpty();
}
@Test
void shouldNotAddLinkWhenExportIsDisabled() {
when(featureToggleProperties.isVorgangExport()).thenReturn(false);
var vorgang = vorgangInStatus(VorgangStatus.ABGESCHLOSSEN);
var model = processor.process(EntityModel.of(vorgang));
assertThat(model.getLink(ExportVorgangProcessor.REL_EXPORT)).isEmpty();
}
private VorgangWithEingang vorgangInStatus(VorgangStatus status) {
return VorgangWithEingangTestFactory.createBuilder().status(status).build();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment