diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java index 3929621ed11cf9bc2b3f032a45a69c63c8cdcbec..6ee1595052705316453e930e69c4fed0c907d2ed 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperties.java @@ -1,7 +1,6 @@ package de.ozgcloud.alfa.vorgang; -import java.util.HashMap; -import java.util.Map; +import java.util.List; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; @@ -17,6 +16,5 @@ public class VorgangProperties { public static final String PREFIX = "ozgcloud.vorgang"; - private Map<String, String> bescheid = new HashMap<>(); - -} + private List<VorgangProperty> bescheid = List.of(); +} \ No newline at end of file diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperty.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperty.java new file mode 100644 index 0000000000000000000000000000000000000000..0aa3ae9f264bc4d0d10eaa04b2d03c9da047b7c5 --- /dev/null +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangProperty.java @@ -0,0 +1,15 @@ +package de.ozgcloud.alfa.vorgang; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +@Builder +@Setter +@Getter +public class VorgangProperty { + + private String formEngineName; + private String formId; + +} diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java index 4db632f692b5f54ac348753a93d1e85ba2e8ce30..05e894b6f9c1e928a40623caa60801e34093cd1a 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessor.java @@ -23,6 +23,7 @@ */ package de.ozgcloud.alfa.vorgang; +import static java.util.Optional.*; import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*; import java.util.Objects; @@ -37,7 +38,9 @@ import org.springframework.hateoas.server.RepresentationModelProcessor; import org.springframework.stereotype.Component; import de.ozgcloud.alfa.attachment.AttachmentController; +import de.ozgcloud.alfa.common.FeatureToggleProperties; import de.ozgcloud.alfa.common.ModelBuilder; +import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController; import de.ozgcloud.alfa.common.user.CurrentUserService; import de.ozgcloud.alfa.common.user.UserManagerUrlProvider; import de.ozgcloud.alfa.common.user.UserRole; @@ -56,6 +59,7 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity static final LinkRelation REL_POSTFACH_MAILS = LinkRelation.of("postfachMails"); static final LinkRelation REL_VORGANG_FORWARDING = LinkRelation.of("forwarding"); static final LinkRelation REL_HISTORIE = LinkRelation.of("historie"); + static final LinkRelation REL_BESCHEID = LinkRelation.of("createBescheid"); static final String REL_SEARCH_USER = "search-user-profiles"; static final String USER_PROFILE_SEARCH_DELETED_PARAM = "deleted"; @@ -68,6 +72,12 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity @Autowired private UserManagerUrlProvider userManagerUrlProvider; + @Autowired + private FeatureToggleProperties featureToggle; + + @Autowired + private VorgangProperties vorgangProperties; + private static final Predicate<VorgangWithEingang> HAS_ATTACHMENTS = vorgangWithEingang -> vorgangWithEingang.getEingang() .getNumberOfAttachments() > 0; @@ -98,6 +108,9 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity .addLink(linkTo(methodOn(HistorieController.class).getAll(vorgang.getId())).withRel(REL_HISTORIE)) .ifMatch(() -> userManagerUrlProvider.isConfiguredForSearchUserProfile() && hasOrganisationsEinheitId(vorgang)) .addLink(() -> buildSearchUserProfilesLink(vorgang)) + .ifMatch(() -> isCreateBescheidEnabled(vorgang)) + .addLink(linkTo(methodOn(CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(), + null)).withRel(REL_BESCHEID)) .buildModel(); } @@ -123,4 +136,22 @@ class VorgangWithEingangProzessor implements RepresentationModelProcessor<Entity private String getOrganisationsEinheitId(VorgangWithEingang vorgang) { return vorgang.getEingang().getZustaendigeStelle().getOrganisationseinheitenId(); } + + boolean isCreateBescheidEnabled(VorgangWithEingang vorgang) { + return featureToggle.isCreateBescheid() && hasVorgangCreateBescheidEnabled(vorgang); + } + + boolean hasVorgangCreateBescheidEnabled(VorgangWithEingang vorgang) { + return ofNullable(vorgang.getEingang()) + .flatMap(eingang -> ofNullable(eingang.getHeader()) + .flatMap(eingangHeader -> ofNullable(eingangHeader.getFormId()) + .flatMap(formId -> ofNullable(eingangHeader.getFormEngineName()) + .map(formEngineName -> isCreateBescheidEnabled(formId, formEngineName))))) + .orElse(false); + } + + private boolean isCreateBescheidEnabled(String formId, String formEngineName) { + return vorgangProperties.getBescheid().stream().filter(prop -> prop.getFormId().equals(formId) && prop.getFormEngineName() + .equals(formEngineName)).count() > 0; + } } \ No newline at end of file diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProzessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProzessor.java index 17bcb073e94d2a2f816b120ce26d626ec2bbf09f..8e12c1ba7725f548a7bce67b1347786e7a7b0795 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProzessor.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProzessor.java @@ -23,7 +23,6 @@ */ package de.ozgcloud.alfa.vorgang.command; -import static java.util.Optional.*; import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.*; import java.util.Objects; @@ -34,14 +33,12 @@ 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.common.command.CommandController; import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController; import de.ozgcloud.alfa.common.user.CurrentUserService; import de.ozgcloud.alfa.common.user.UserRole; import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus; -import de.ozgcloud.alfa.vorgang.VorgangProperties; import de.ozgcloud.alfa.vorgang.VorgangWithEingang; import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController; @@ -50,7 +47,6 @@ public class VorgangWithEingangCommandProzessor implements RepresentationModelPr static final LinkRelation REL_VORGANG_FORWARD = LinkRelation.of("forward"); static final LinkRelation REL_PENDING_COMMANDS = LinkRelation.of("pending-commands"); - static final LinkRelation REL_BESCHEID = LinkRelation.of("createBescheid"); @Autowired private CurrentUserService userService; @@ -59,11 +55,6 @@ public class VorgangWithEingangCommandProzessor implements RepresentationModelPr @Autowired private CommandController commandController; - @Autowired - private FeatureToggleProperties featureToggle; - @Autowired - private VorgangProperties vorgangProperties; - @Override public EntityModel<VorgangWithEingang> process(EntityModel<VorgangWithEingang> model) { var vorgang = model.getContent(); @@ -77,9 +68,6 @@ public class VorgangWithEingangCommandProzessor implements RepresentationModelPr null)).withRel(REL_VORGANG_FORWARD)) .ifMatch(this::existsPendingCommands) .addLink(linkTo(methodOn(CommandController.class).getPendingCommands(true, vorgang.getId())).withRel(REL_PENDING_COMMANDS)) - .ifMatch(() -> isCreateBescheidEnabled(vorgang)) - .addLink(linkTo(methodOn(CommandByRelationController.class).createCommand(vorgang.getId(), vorgang.getId(), vorgang.getVersion(), - null)).withRel(REL_BESCHEID)) .buildModel(); } @@ -97,17 +85,4 @@ public class VorgangWithEingangCommandProzessor implements RepresentationModelPr private boolean existsPendingCommands(VorgangWithEingang vorgang) { return commandController.existsPendingCommands(vorgang.getId()); } - - boolean isCreateBescheidEnabled(VorgangWithEingang vorgang) { - return featureToggle.isCreateBescheid() && hasVorgangCreateBescheidEnabled(vorgang); - } - - boolean hasVorgangCreateBescheidEnabled(VorgangWithEingang vorgang) { - return ofNullable(vorgang.getEingang()) - .flatMap(eingang -> ofNullable(eingang.getHeader()) - .flatMap(eingangHeader -> ofNullable(eingangHeader.getFormId()) - .flatMap(formId -> ofNullable(vorgangProperties.getBescheid().get(eingangHeader.getFormId()))) - .map(formEngineName -> formEngineName.equals(eingangHeader.getFormEngineName())))) - .orElse(false); - } } \ No newline at end of file diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java index 3e4f937b21114b15174a0b3381910d680279a84e..c593cc29afd9965bb4bc28e3073d6e710beb5732 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/VorgangWithEingangProzessorTest.java @@ -27,6 +27,8 @@ import static de.ozgcloud.alfa.common.UserProfileUrlProviderTestFactory.*; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import java.util.List; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -35,20 +37,24 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; import org.mockito.InjectMocks; import org.mockito.Mock; +import org.mockito.Spy; import org.springframework.hateoas.EntityModel; import org.springframework.hateoas.Link; import org.springframework.hateoas.LinkRelation; import org.springframework.web.util.UriComponentsBuilder; +import de.ozgcloud.alfa.common.FeatureToggleProperties; import de.ozgcloud.alfa.common.UserProfileUrlProvider; import de.ozgcloud.alfa.common.user.CurrentUserService; import de.ozgcloud.alfa.common.user.UserManagerUrlProvider; import de.ozgcloud.alfa.common.user.UserRole; import de.ozgcloud.alfa.postfach.PostfachMailController; import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus; +import de.ozgcloud.alfa.vorgang.command.VorgangPropertyTestFactory; class VorgangWithEingangProzessorTest { + @Spy @InjectMocks private VorgangWithEingangProzessor processor; @Mock @@ -58,12 +64,13 @@ class VorgangWithEingangProzessorTest { @Mock private UserManagerUrlProvider userManagerUrlProvider; - private UserProfileUrlProvider urlProvider = new UserProfileUrlProvider(); + @Mock + private FeatureToggleProperties featureToggle; - @BeforeEach - void init() { - initUserProfileUrlProvider(urlProvider); - } + @Mock + private VorgangProperties vorgangProperties; + + private UserProfileUrlProvider urlProvider = new UserProfileUrlProvider(); @Nested class TestAttachmentsLink { @@ -213,6 +220,11 @@ class VorgangWithEingangProzessorTest { @Nested class TestSearchUserProfileLink { + @BeforeEach + void init() { + initUserProfileUrlProvider(urlProvider); + } + @DisplayName("on configured for search user profile") @Nested class TestIsConfigured { @@ -273,4 +285,206 @@ class VorgangWithEingangProzessorTest { return VorgangWithEingangTestFactory.createBuilder().eingang(eingang).build(); } } + + @Nested + class TestHasVorgangCreateBescheidEnabled { + + @Nested + class TestWhenBescheidPropertiesEmpty { + + @BeforeEach + void setUp() { + when(vorgangProperties.getBescheid()).thenReturn(List.of()); + } + + @Test + void shouldReturnFalse() { + var hasEnabled = callProcessor(VorgangWithEingangTestFactory.create()); + + assertThat(hasEnabled).isFalse(); + } + + } + + @Nested + class TestWhenVorgangDataNotComplete { + + @Test + void shouldReturnFalseIfEingangNull() { + var hasEnabled = callProcessor(VorgangWithEingangTestFactory.createBuilder().eingang(null).build()); + + assertThat(hasEnabled).isFalse(); + } + + @Test + void shouldReturnFalseIfEingangHeaderNull() { + var hasEnabled = callProcessor( + VorgangWithEingangTestFactory.createBuilder().eingang(EingangTestFactory.createBuilder().header(null).build()).build()); + + assertThat(hasEnabled).isFalse(); + } + + @Test + void shouldReturnFalseIfFormEngineNameNull() { + var hasEnabled = callProcessor( + VorgangWithEingangTestFactory.createBuilder().eingang( + EingangTestFactory.createBuilder().header(EingangHeaderTestFactory.createBuilder().formEngineName(null).build()) + .build()).build()); + + assertThat(hasEnabled).isFalse(); + } + + @Test + void shouldReturnFalseIfFormIdNull() { + var hasEnabled = callProcessor( + VorgangWithEingangTestFactory.createBuilder().eingang( + EingangTestFactory.createBuilder().header(EingangHeaderTestFactory.createBuilder().formId(null).build()) + .build()).build()); + + assertThat(hasEnabled).isFalse(); + } + + } + + @Nested + class TestWhenBescheidPropertiesSet { + + @BeforeEach + void setUp() { + when(vorgangProperties.getBescheid()).thenReturn(List.of(VorgangPropertyTestFactory.create())); + } + + @Test + void shouldReturnFalseIfFormEngineNameNotEquals() { + var hasEnabled = callProcessor( + VorgangWithEingangTestFactory.createBuilder().eingang( + EingangTestFactory.createBuilder() + .header(EingangHeaderTestFactory.createBuilder().formEngineName("different").build()) + .build()).build()); + + assertThat(hasEnabled).isFalse(); + } + + @Test + void shouldReturnTrue() { + var hasEnabled = callProcessor(VorgangWithEingangTestFactory.create()); + + assertThat(hasEnabled).isTrue(); + } + } + + boolean callProcessor(VorgangWithEingang vorgang) { + return processor.hasVorgangCreateBescheidEnabled(vorgang); + } + + } + + @Nested + class TestIsCreateBescheidEnabled { + + @BeforeEach + void setUp() { + when(featureToggle.isCreateBescheid()).thenReturn(true); + } + + @Test + void shouldCallFeatureToggleProperties() { + callProcessor(VorgangWithEingangTestFactory.create()); + + verify(featureToggle).isCreateBescheid(); + } + + @Test + void shouldCallHasVorgangCreateBescheidEnabled() { + var vorgang = VorgangWithEingangTestFactory.create(); + + callProcessor(vorgang); + + verify(processor).hasVorgangCreateBescheidEnabled(vorgang); + } + + @Nested + class TestFeatureToggleDisabled { + + @BeforeEach + void setUp() { + when(featureToggle.isCreateBescheid()).thenReturn(false); + } + + @Test + void shouldReturnFalse() { + var isEnabled = callProcessor(VorgangWithEingangTestFactory.create()); + + assertThat(isEnabled).isFalse(); + } + } + + @Nested + class TestFeatureToggleEnabled { + + private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create(); + + @BeforeEach + void setUp() { + when(featureToggle.isCreateBescheid()).thenReturn(true); + } + + @Test + void shouldReturnTrue() { + doReturn(true).when(processor).hasVorgangCreateBescheidEnabled(vorgang); + + var isEnabled = callProcessor(vorgang); + + assertThat(isEnabled).isTrue(); + } + + @Test + void shouldReturnFalse() { + doReturn(false).when(processor).hasVorgangCreateBescheidEnabled(vorgang); + + var isEnabled = callProcessor(vorgang); + + assertThat(isEnabled).isFalse(); + } + } + + private boolean callProcessor(VorgangWithEingang vorgang) { + return processor.isCreateBescheidEnabled(vorgang); + } + + } + + @Nested + class TestCreateBescheidLink { + + private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create(); + private final EntityModel<VorgangWithEingang> vorgangEntityModel = EntityModel.of(vorgang); + + @BeforeEach + void activateFeature() { + initUserProfileUrlProvider(urlProvider); + } + + @Test + void shouldHaveCreateBescheidLink() { + doReturn(true).when(processor).isCreateBescheidEnabled(vorgang); + + var processed = processor.process(vorgangEntityModel); + + assertThat(processed.getLink(VorgangWithEingangProzessor.REL_BESCHEID)).isPresent().get() + .extracting(Link::getHref) + .isEqualTo("/api/vorgangs/" + VorgangHeaderTestFactory.ID + "/relations/" + VorgangHeaderTestFactory.ID + "/" + + VorgangHeaderTestFactory.VERSION + "/commands"); + } + + @Test + void shouldHaveNoLinkIfDisabled() { + doReturn(false).when(processor).isCreateBescheidEnabled(vorgang); + + var processed = processor.process(vorgangEntityModel); + + assertThat(processed.getLink(VorgangWithEingangProzessor.REL_BESCHEID)).isEmpty(); + } + } + } \ No newline at end of file diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangPropertyTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangPropertyTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..f914280ec5181147d2f67274aad3ae95cb448dc6 --- /dev/null +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangPropertyTestFactory.java @@ -0,0 +1,16 @@ +package de.ozgcloud.alfa.vorgang.command; + +import de.ozgcloud.alfa.vorgang.EingangHeaderTestFactory; +import de.ozgcloud.alfa.vorgang.VorgangProperty; + +public class VorgangPropertyTestFactory { + + public static VorgangProperty create() { + return createBuilder().build(); + } + + public static VorgangProperty.VorgangPropertyBuilder createBuilder() { + return VorgangProperty.builder().formEngineName(EingangHeaderTestFactory.FORM_ENGINE_NAME).formId(EingangHeaderTestFactory.FORM_ID); + } + +} diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProzessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProzessorTest.java index 89abf5d8c4cf37f48ed6538b87fbc7f4ee2373d6..a7eefd62cb52822bb2b3ce89906cbe4a059922f1 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProzessorTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/command/VorgangWithEingangCommandProzessorTest.java @@ -29,7 +29,6 @@ import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import java.util.Collections; -import java.util.Map; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -45,16 +44,12 @@ import org.springframework.hateoas.EntityModel; import org.springframework.hateoas.Link; import org.springframework.hateoas.LinkRelation; -import de.ozgcloud.alfa.common.FeatureToggleProperties; import de.ozgcloud.alfa.common.UserProfileUrlProvider; import de.ozgcloud.alfa.common.command.CommandController; import de.ozgcloud.alfa.common.user.CurrentUserService; import de.ozgcloud.alfa.common.user.UserRole; -import de.ozgcloud.alfa.vorgang.EingangHeaderTestFactory; -import de.ozgcloud.alfa.vorgang.EingangTestFactory; import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus; import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory; -import de.ozgcloud.alfa.vorgang.VorgangProperties; import de.ozgcloud.alfa.vorgang.VorgangWithEingang; import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory; import de.ozgcloud.alfa.vorgang.forwarding.ForwardingController; @@ -72,11 +67,6 @@ class VorgangWithEingangCommandProzessorTest { @Mock private ForwardingController forwardingController; - @Mock - private FeatureToggleProperties featureToggle; - @Mock - private VorgangProperties vorgangProperties; - private VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create(); private EntityModel<VorgangWithEingang> vorgangEntityModel = EntityModel.of(vorgang); @@ -233,202 +223,4 @@ class VorgangWithEingangCommandProzessorTest { .isEqualTo("/api/commands?pending=true&vorgangId=" + VorgangHeaderTestFactory.ID); } } - - @Nested - class TestCreateBescheidLink { - - @BeforeEach - void activateFeature() { - initUserProfileUrlProvider(urlProvider); - } - - @Test - void shouldHaveCreateBescheidLink() { - doReturn(true).when(processor).isCreateBescheidEnabled(vorgang); - - var processed = processor.process(vorgangEntityModel); - - assertThat(processed.getLink(VorgangWithEingangCommandProzessor.REL_BESCHEID)).isPresent().get() - .extracting(Link::getHref) - .isEqualTo("/api/vorgangs/" + VorgangHeaderTestFactory.ID + "/relations/" + VorgangHeaderTestFactory.ID + "/" - + VorgangHeaderTestFactory.VERSION + "/commands"); - } - - @Test - void shouldHaveNoLinkIfDisabled() { - doReturn(false).when(processor).isCreateBescheidEnabled(vorgang); - - var processed = processor.process(vorgangEntityModel); - - assertThat(processed.getLink(VorgangWithEingangCommandProzessor.REL_BESCHEID)).isEmpty(); - } - } - - @Nested - class TestIsCreateBescheidEnabled { - - @BeforeEach - void setUp() { - when(featureToggle.isCreateBescheid()).thenReturn(true); - } - - @Test - void shouldCallFeatureToggleProperties() { - callProcessor(VorgangWithEingangTestFactory.create()); - - verify(featureToggle).isCreateBescheid(); - } - - @Test - void shouldCallHasVorgangCreateBescheidEnabled() { - var vorgang = VorgangWithEingangTestFactory.create(); - - callProcessor(vorgang); - - verify(processor).hasVorgangCreateBescheidEnabled(vorgang); - } - - @Nested - class TestFeatureToggleDisabled { - - @BeforeEach - void setUp() { - when(featureToggle.isCreateBescheid()).thenReturn(false); - } - - @Test - void shouldReturnFalse() { - var isEnabled = callProcessor(VorgangWithEingangTestFactory.create()); - - assertThat(isEnabled).isFalse(); - } - } - - @Nested - class TestFeatureToggleEnabled { - - private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create(); - - @BeforeEach - void setUp() { - when(featureToggle.isCreateBescheid()).thenReturn(true); - } - - @Test - void shouldReturnTrue() { - doReturn(true).when(processor).hasVorgangCreateBescheidEnabled(vorgang); - - var isEnabled = callProcessor(vorgang); - - assertThat(isEnabled).isTrue(); - } - - @Test - void shouldReturnFalse() { - doReturn(false).when(processor).hasVorgangCreateBescheidEnabled(vorgang); - - var isEnabled = callProcessor(vorgang); - - assertThat(isEnabled).isFalse(); - } - } - - private boolean callProcessor(VorgangWithEingang vorgang) { - return processor.isCreateBescheidEnabled(vorgang); - } - - } - - @Nested - class TestHasVorgangCreateBescheidEnabled { - - @Nested - class TestWhenBescheidPropertiesEmpty { - - @BeforeEach - void setUp() { - when(vorgangProperties.getBescheid()).thenReturn(Map.of()); - } - - @Test - void shouldReturnFalse() { - var hasEnabled = callProcessor(VorgangWithEingangTestFactory.create()); - - assertThat(hasEnabled).isFalse(); - } - - } - - @Nested - class TestWhenVorgangDataNotComplete { - - @Test - void shouldReturnFalseIfEingangNull() { - var hasEnabled = callProcessor(VorgangWithEingangTestFactory.createBuilder().eingang(null).build()); - - assertThat(hasEnabled).isFalse(); - } - - @Test - void shouldReturnFalseIfEingangHeaderNull() { - var hasEnabled = callProcessor( - VorgangWithEingangTestFactory.createBuilder().eingang(EingangTestFactory.createBuilder().header(null).build()).build()); - - assertThat(hasEnabled).isFalse(); - } - - @Test - void shouldReturnFalseIfFormEngineNameNull() { - var hasEnabled = callProcessor( - VorgangWithEingangTestFactory.createBuilder().eingang( - EingangTestFactory.createBuilder().header(EingangHeaderTestFactory.createBuilder().formEngineName(null).build()) - .build()).build()); - - assertThat(hasEnabled).isFalse(); - } - - @Test - void shouldReturnFalseIfFormIdNull() { - var hasEnabled = callProcessor( - VorgangWithEingangTestFactory.createBuilder().eingang( - EingangTestFactory.createBuilder().header(EingangHeaderTestFactory.createBuilder().formId(null).build()) - .build()).build()); - - assertThat(hasEnabled).isFalse(); - } - - } - - @Nested - class TestWhenBescheidPropertiesSet { - - @BeforeEach - void setUp() { - when(vorgangProperties.getBescheid()).thenReturn(Map.of(EingangHeaderTestFactory.FORM_ID, EingangHeaderTestFactory.FORM_ENGINE_NAME)); - } - - @Test - void shouldReturnFalseIfFormEngineNameNotEquals() { - var hasEnabled = callProcessor( - VorgangWithEingangTestFactory.createBuilder().eingang( - EingangTestFactory.createBuilder() - .header(EingangHeaderTestFactory.createBuilder().formEngineName("different").build()) - .build()).build()); - - assertThat(hasEnabled).isFalse(); - } - - @Test - void shouldReturnTrue() { - var hasEnabled = callProcessor(VorgangWithEingangTestFactory.create()); - - assertThat(hasEnabled).isTrue(); - } - } - - boolean callProcessor(VorgangWithEingang vorgang) { - return processor.hasVorgangCreateBescheidEnabled(vorgang); - } - - } } \ No newline at end of file