Skip to content
Snippets Groups Projects
Commit 5b25146f authored by Felix Reichenbach's avatar Felix Reichenbach
Browse files

OZG-7474 restructure ForwardingVorgangWithEingangProcessorTest to be more consistent

parent d37f14e1
No related branches found
No related tags found
1 merge request!11OZG-7474 OZG-7610 add forward by ozg cloud link, move forward by email into new processor
...@@ -34,7 +34,7 @@ class ForwardingVorgangWithEingangProcessor implements RepresentationModelProces ...@@ -34,7 +34,7 @@ class ForwardingVorgangWithEingangProcessor implements RepresentationModelProces
Optional.ofNullable(model.getContent()) Optional.ofNullable(model.getContent())
.ifPresent(vorgang -> model .ifPresent(vorgang -> model
.addIf(isForwardableByOzgCloud(vorgang), () -> buildForwardByOzgCloudLink(vorgang)) .addIf(isForwardableByOzgCloud(vorgang), () -> buildForwardByOzgCloudLink(vorgang))
.addIf(isEinheitlicherAnsprechpartner(), () -> buildForwardByEmailLink(vorgang))); .addIf(isForwardableByEmail(), () -> buildForwardByEmailLink(vorgang)));
return model; return model;
} }
...@@ -51,7 +51,7 @@ class ForwardingVorgangWithEingangProcessor implements RepresentationModelProces ...@@ -51,7 +51,7 @@ class ForwardingVorgangWithEingangProcessor implements RepresentationModelProces
vorgang.getVersion(), null)).withRel(REL_FORWARD_BY_OZGCLOUD); vorgang.getVersion(), null)).withRel(REL_FORWARD_BY_OZGCLOUD);
} }
private boolean isEinheitlicherAnsprechpartner() { boolean isForwardableByEmail() {
return userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER); return userService.hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER);
} }
......
...@@ -10,6 +10,7 @@ import org.junit.jupiter.api.Test; ...@@ -10,6 +10,7 @@ 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.junit.jupiter.params.provider.EnumSource.Mode; import org.junit.jupiter.params.provider.EnumSource.Mode;
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Spy; import org.mockito.Spy;
...@@ -21,7 +22,6 @@ import de.ozgcloud.alfa.common.FeatureToggleProperties; ...@@ -21,7 +22,6 @@ import de.ozgcloud.alfa.common.FeatureToggleProperties;
import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController; import de.ozgcloud.alfa.common.command.CommandController.CommandByRelationController;
import de.ozgcloud.alfa.common.user.CurrentUserService; import de.ozgcloud.alfa.common.user.CurrentUserService;
import de.ozgcloud.alfa.common.user.UserRole; 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.Vorgang.VorgangStatus;
import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory; import de.ozgcloud.alfa.vorgang.VorgangHeaderTestFactory;
import de.ozgcloud.alfa.vorgang.VorgangWithEingang; import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
...@@ -41,6 +41,8 @@ class ForwardingVorgangWithEingangProcessorTest { ...@@ -41,6 +41,8 @@ class ForwardingVorgangWithEingangProcessorTest {
@Nested @Nested
class TestProcess { class TestProcess {
private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
@Test @Test
void shouldReturnSameModelOnEmptyEntity() { void shouldReturnSameModelOnEmptyEntity() {
EntityModel<VorgangWithEingang> inputModel = when(mock(EntityModel.class).getContent()).thenReturn(null).getMock(); EntityModel<VorgangWithEingang> inputModel = when(mock(EntityModel.class).getContent()).thenReturn(null).getMock();
...@@ -52,7 +54,7 @@ class ForwardingVorgangWithEingangProcessorTest { ...@@ -52,7 +54,7 @@ class ForwardingVorgangWithEingangProcessorTest {
@Test @Test
void shouldReturnSameModel() { void shouldReturnSameModel() {
var inputModel = EntityModel.of(VorgangWithEingangTestFactory.create()); var inputModel = EntityModel.of(vorgang);
var model = processor.process(inputModel); var model = processor.process(inputModel);
...@@ -62,8 +64,6 @@ class ForwardingVorgangWithEingangProcessorTest { ...@@ -62,8 +64,6 @@ class ForwardingVorgangWithEingangProcessorTest {
@Nested @Nested
class TestForwardByOzgCloudLink { class TestForwardByOzgCloudLink {
private final VorgangWithEingang vorgang = VorgangWithEingangTestFactory.create();
@Test @Test
void shouldCallIsForwardableByOzgCloud() { void shouldCallIsForwardableByOzgCloud() {
doReturn(false).when(processor).isForwardableByOzgCloud(any()); doReturn(false).when(processor).isForwardableByOzgCloud(any());
...@@ -112,47 +112,52 @@ class ForwardingVorgangWithEingangProcessorTest { ...@@ -112,47 +112,52 @@ class ForwardingVorgangWithEingangProcessorTest {
} }
@Nested @Nested
class TestForwardingLink { class TestForwardByEmailLink {
@Test @Test
void shouldCallUserServiceForCurrentRole() { void shouldCallIsForwardableByEmail() {
processor.process(EntityModel.of(VorgangWithEingangTestFactory.create())); doReturn(false).when(processor).isForwardableByEmail();
verify(userService).hasRole(UserRole.EINHEITLICHER_ANSPRECHPARTNER); processor.process(EntityModel.of(vorgang));
verify(processor).isForwardableByEmail();
} }
@ParameterizedTest @Nested
@EnumSource class TestOnIsNotForwardableByEmail {
void shouldNotBePresentWithoutRole(Vorgang.VorgangStatus status) {
when(userService.hasRole(any())).thenReturn(false);
var link = processor.process(buildVorgangInStatus(status)).getLink(ForwardingVorgangWithEingangProcessor.REL_FORWARD_BY_EMAIL); @BeforeEach
void givenIsNotForwardableByEmail() {
doReturn(false).when(processor).isForwardableByEmail();
}
@Test
void shouldNotAddLink() {
var model = processor.process(EntityModel.of(vorgang));
assertThat(link).isEmpty(); assertThat(model.getLink(ForwardingVorgangWithEingangProcessor.REL_FORWARD_BY_EMAIL)).isEmpty();
}
} }
@Nested @Nested
class TestWithRoleEinheitlicherAnsprechpartner { class TestOnIsForwardableByEmail {
@BeforeEach @BeforeEach
void init() { void givenIsForwardableByEmail() {
when(userService.hasRole(any())).thenReturn(true); doReturn(true).when(processor).isForwardableByEmail();
} }
@ParameterizedTest @Test
@EnumSource void shouldAddLink() {
void shouldBePresentOnAnyStatus(VorgangStatus status) {
var expectedHref = UriComponentsBuilder.fromUriString(ForwardingController.LIST_PATH) var expectedHref = UriComponentsBuilder.fromUriString(ForwardingController.LIST_PATH)
.queryParam(ForwardingController.PARAM_VORGANG_ID, VorgangHeaderTestFactory.ID).build().toString(); .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 { ...@@ -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);
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment