diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingVorgangWithEingangProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingVorgangWithEingangProcessor.java index 46e63f18aaa609c1e638354c09833fd075f6b3e6..253c61c08de8fe9bf248a1b273dc017c321eb140 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingVorgangWithEingangProcessor.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingVorgangWithEingangProcessor.java @@ -34,7 +34,7 @@ class ForwardingVorgangWithEingangProcessor implements RepresentationModelProces Optional.ofNullable(model.getContent()) .ifPresent(vorgang -> model .addIf(isForwardableByOzgCloud(vorgang), () -> buildForwardByOzgCloudLink(vorgang)) - .addIf(isEinheitlicherAnsprechpartner(), () -> buildForwardByEmailLink(vorgang))); + .addIf(isForwardableByEmail(), () -> buildForwardByEmailLink(vorgang))); return model; } @@ -51,7 +51,7 @@ class ForwardingVorgangWithEingangProcessor implements RepresentationModelProces vorgang.getVersion(), null)).withRel(REL_FORWARD_BY_OZGCLOUD); } - private boolean isEinheitlicherAnsprechpartner() { + boolean isForwardableByEmail() { return userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER); } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingVorgangWithEingangProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingVorgangWithEingangProcessorTest.java index d8031d15c93d4d7b9ad555c1a132c8dd0fdaf25c..6cb6708f9eaac89da60d6166a21b5af6ce0268f0 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingVorgangWithEingangProcessorTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/vorgang/forwarding/ForwardingVorgangWithEingangProcessorTest.java @@ -10,6 +10,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.EnumSource.Mode; +import org.junit.jupiter.params.provider.ValueSource; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; @@ -21,7 +22,6 @@ import de.ozgcloud.alfa.common.FeatureToggleProperties; 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; import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus; import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory; import de.ozgcloud.alfa.vorgang.VorgangWithEingang; @@ -41,6 +41,8 @@ class ForwardingVorgangWithEingangProcessorTest { @Nested class TestProcess { + private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create(); + @Test void shouldReturnSameModelOnEmptyEntity() { EntityModel<VorgangWithEingang> inputModel = when(mock(EntityModel.class).getContent()).thenReturn(null).getMock(); @@ -52,7 +54,7 @@ class ForwardingVorgangWithEingangProcessorTest { @Test void shouldReturnSameModel() { - var inputModel = EntityModel.of(VorgangWithEingangTestFactory.create()); + var inputModel = EntityModel.of(vorgang); var model = processor.process(inputModel); @@ -62,8 +64,6 @@ class ForwardingVorgangWithEingangProcessorTest { @Nested class TestForwardByOzgCloudLink { - private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create(); - @Test void shouldCallIsForwardableByOzgCloud() { doReturn(false).when(processor).isForwardableByOzgCloud(any()); @@ -112,48 +112,53 @@ class ForwardingVorgangWithEingangProcessorTest { } @Nested - class TestForwardingLink { + class TestForwardByEmailLink { @Test - void shouldCallUserServiceForCurrentRole() { - processor.process(EntityModel.of(VorgangWithEingangTestFactory.create())); + void shouldCallIsForwardableByEmail() { + doReturn(false).when(processor).isForwardableByEmail(); + + processor.process(EntityModel.of(vorgang)); - verify(userService).hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER); + verify(processor).isForwardableByEmail(); } - @ParameterizedTest - @EnumSource - void shouldNotBePresentWithoutRole(Vorgang.VorgangStatus status) { - when(userService.hasRole(any())).thenReturn(false); + @Nested + class TestOnIsNotForwardableByEmail { + + @BeforeEach + void givenIsNotForwardableByEmail() { + doReturn(false).when(processor).isForwardableByEmail(); + } - var link = processor.process(buildVorgangInStatus(status)).getLink(ForwardingVorgangWithEingangProcessor.REL_FORWARD_BY_EMAIL); + @Test + void shouldNotAddLink() { + var model = processor.process(EntityModel.of(vorgang)); - assertThat(link).isEmpty(); + assertThat(model.getLink(ForwardingVorgangWithEingangProcessor.REL_FORWARD_BY_EMAIL)).isEmpty(); + } } @Nested - class TestWithRoleEinheitlicherAnsprechpartner { + class TestOnIsForwardableByEmail { @BeforeEach - void init() { - when(userService.hasRole(any())).thenReturn(true); + void givenIsForwardableByEmail() { + doReturn(true).when(processor).isForwardableByEmail(); } - @ParameterizedTest - @EnumSource - void shouldBePresentOnAnyStatus(VorgangStatus status) { + @Test + void shouldAddLink() { var expectedHref = UriComponentsBuilder.fromUriString(ForwardingController.LIST_PATH) .queryParam(ForwardingController.PARAM_VORGANG_ID, VorgangHeaderTestFactory.ID).build().toString(); - var link = processor.process(buildVorgangInStatus(status)).getLink(ForwardingVorgangWithEingangProcessor.REL_FORWARD_BY_EMAIL); + var model = processor.process(EntityModel.of(vorgang)); - assertThat(link).isPresent().get().extracting(Link::getHref).isEqualTo(expectedHref); + assertThat(model.getLink(ForwardingVorgangWithEingangProcessor.REL_FORWARD_BY_EMAIL)).get() + .extracting(Link::getHref) + .isEqualTo(expectedHref); } } - - private EntityModel<VorgangWithEingang> buildVorgangInStatus(VorgangStatus status) { - return EntityModel.of(VorgangWithEingangTestFactory.createBuilder().status(status).build()); - } } } @@ -207,4 +212,25 @@ class ForwardingVorgangWithEingangProcessorTest { } } } + + @Nested + class TestIsForwardableByEmail { + + @Test + void shouldCallUserServiceForCurrentRole() { + processor.isForwardableByEmail(); + + verify(userService).hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER); + } + + @ParameterizedTest + @ValueSource(booleans = { true, false }) + void shouldReturnIsEinheitlicherAnsprechpartner(boolean isEinheitlicherAnsprechpartner) { + when(userService.hasRole(any())).thenReturn(isEinheitlicherAnsprechpartner); + + var isForwardableByEmail = processor.isForwardableByEmail(); + + assertThat(isForwardableByEmail).isEqualTo(isEinheitlicherAnsprechpartner); + } + } }