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; ...@@ -10,6 +10,7 @@ import org.springframework.hateoas.LinkRelation;
import org.springframework.hateoas.server.RepresentationModelProcessor; import org.springframework.hateoas.server.RepresentationModelProcessor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import de.ozgcloud.alfa.common.FeatureToggleProperties;
import de.ozgcloud.alfa.common.ModelBuilder; import de.ozgcloud.alfa.common.ModelBuilder;
import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus; import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
import de.ozgcloud.alfa.vorgang.VorgangWithEingang; import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
...@@ -19,9 +20,13 @@ import lombok.RequiredArgsConstructor; ...@@ -19,9 +20,13 @@ import lombok.RequiredArgsConstructor;
@Component @Component
class ExportVorgangProcessor implements RepresentationModelProcessor<EntityModel<VorgangWithEingang>> { 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"); static final LinkRelation REL_EXPORT = LinkRelation.of("export");
private final FeatureToggleProperties featureToggleProperties;
@Override @Override
public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) { public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) {
var vorgang = model.getContent(); var vorgang = model.getContent();
...@@ -31,9 +36,12 @@ class ExportVorgangProcessor implements RepresentationModelProcessor<EntityModel ...@@ -31,9 +36,12 @@ class ExportVorgangProcessor implements RepresentationModelProcessor<EntityModel
} }
return ModelBuilder.fromModel(model) 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)) .addLink(linkTo(methodOn(ExportVorgangController.class).exportToXdomea(vorgang.getId())).withRel(REL_EXPORT))
.buildModel(); .buildModel();
}
private boolean isExportEnabled() {
return featureToggleProperties.isVorgangExport();
} }
} }
...@@ -2,6 +2,7 @@ package de.ozgcloud.alfa.export; ...@@ -2,6 +2,7 @@ package de.ozgcloud.alfa.export;
import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*; import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*;
import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
...@@ -10,9 +11,11 @@ import org.junit.jupiter.api.Test; ...@@ -10,9 +11,11 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.EnumSource;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.springframework.hateoas.EntityModel; import org.springframework.hateoas.EntityModel;
import org.springframework.hateoas.Link; import org.springframework.hateoas.Link;
import de.ozgcloud.alfa.common.FeatureToggleProperties;
import de.ozgcloud.alfa.common.UserProfileUrlProvider; import de.ozgcloud.alfa.common.UserProfileUrlProvider;
import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus; import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus;
import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory; import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
...@@ -24,6 +27,9 @@ class ExportVorgangProcessorTest { ...@@ -24,6 +27,9 @@ class ExportVorgangProcessorTest {
@InjectMocks @InjectMocks
private ExportVorgangProcessor processor; private ExportVorgangProcessor processor;
@Mock
private FeatureToggleProperties featureToggleProperties;
private final UserProfileUrlProvider urlProvider = new UserProfileUrlProvider(); private final UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
@Nested @Nested
...@@ -39,7 +45,8 @@ class ExportVorgangProcessorTest { ...@@ -39,7 +45,8 @@ class ExportVorgangProcessorTest {
} }
@Test @Test
void shouldAddLink() { void shouldAddLinkWhenExportIsEnabledAndVorgangIsAbgeschlossen() {
when(featureToggleProperties.isVorgangExport()).thenReturn(true);
var vorgang = vorgangInStatus(VorgangStatus.ABGESCHLOSSEN); var vorgang = vorgangInStatus(VorgangStatus.ABGESCHLOSSEN);
var model = processor.process(EntityModel.of(vorgang)); var model = processor.process(EntityModel.of(vorgang));
...@@ -50,7 +57,8 @@ class ExportVorgangProcessorTest { ...@@ -50,7 +57,8 @@ class ExportVorgangProcessorTest {
@ParameterizedTest @ParameterizedTest
@EnumSource(mode = EnumSource.Mode.EXCLUDE, names = "ABGESCHLOSSEN") @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 vorgang = vorgangInStatus(status);
var model = processor.process(EntityModel.of(vorgang)); var model = processor.process(EntityModel.of(vorgang));
...@@ -58,6 +66,16 @@ class ExportVorgangProcessorTest { ...@@ -58,6 +66,16 @@ class ExportVorgangProcessorTest {
assertThat(model.getLink(ExportVorgangProcessor.REL_EXPORT)).isEmpty(); 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) { private VorgangWithEingang vorgangInStatus(VorgangStatus status) {
return VorgangWithEingangTestFactory.createBuilder().status(status).build(); 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