From e442573311105511571b3212029042bbb93dca23 Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Wed, 12 Jun 2024 17:39:53 +0200 Subject: [PATCH] OZG-5812 OZG-5909 Do not create export link if export is disabled --- .../alfa/export/ExportVorgangProcessor.java | 12 ++++++++-- .../export/ExportVorgangProcessorTest.java | 22 +++++++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/ExportVorgangProcessor.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/ExportVorgangProcessor.java index c270239be1..cd93a4d4c1 100644 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/ExportVorgangProcessor.java +++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/export/ExportVorgangProcessor.java @@ -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(); } } diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportVorgangProcessorTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportVorgangProcessorTest.java index 324ff42637..27ed62377f 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportVorgangProcessorTest.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/export/ExportVorgangProcessorTest.java @@ -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(); } -- GitLab