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

OZG-7572 OZG-7901 add forwarded links to root resource

parent 0b62b56f
Branches
Tags
1 merge request!21OZG-7572 Weiterleiten Filter
...@@ -72,7 +72,7 @@ class RootViewLinkHandler { ...@@ -72,7 +72,7 @@ class RootViewLinkHandler {
private final SystemStatusService systemStatusService; private final SystemStatusService systemStatusService;
private final List<VorgangStatus> statusList = List.of(VorgangStatus.NEU, VorgangStatus.ANGENOMMEN, VorgangStatus.IN_BEARBEITUNG, private final List<VorgangStatus> statusList = List.of(VorgangStatus.NEU, VorgangStatus.ANGENOMMEN, VorgangStatus.IN_BEARBEITUNG,
VorgangStatus.BESCHIEDEN, VorgangStatus.ABGESCHLOSSEN, VorgangStatus.VERWORFEN, VorgangStatus.ZU_LOESCHEN); VorgangStatus.BESCHIEDEN, VorgangStatus.ABGESCHLOSSEN, VorgangStatus.VERWORFEN, VorgangStatus.ZU_LOESCHEN, VorgangStatus.WEITERGELEITET);
public void addViewLinks(EntityModel<Root> model, Optional<UserId> userId) { public void addViewLinks(EntityModel<Root> model, Optional<UserId> userId) {
model.add(buildGetAllVorgaengeLink()); model.add(buildGetAllVorgaengeLink());
......
package de.ozgcloud.alfa;
import java.util.List;
import java.util.stream.Stream;
import org.springframework.hateoas.Link;
import com.thedeanda.lorem.LoremIpsum;
public class LinkTestFactory {
public static Link create() {
return Link.of(LoremIpsum.getInstance().getUrl());
}
public static List<Link> createList(int size) {
return Stream.iterate(0, i -> i + 1).limit(size).map(i -> create()).toList();
}
}
...@@ -27,6 +27,7 @@ import static org.assertj.core.api.Assertions.*; ...@@ -27,6 +27,7 @@ import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*; import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
...@@ -36,6 +37,7 @@ import org.junit.jupiter.api.Test; ...@@ -36,6 +37,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.mockito.AdditionalAnswers;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Spy; import org.mockito.Spy;
...@@ -433,29 +435,66 @@ class RootViewLinkHandlerTest { ...@@ -433,29 +435,66 @@ class RootViewLinkHandlerTest {
class TestBuildVorgangStatusLinks { class TestBuildVorgangStatusLinks {
private final UserId userId = UserProfileTestFactory.ID; private final UserId userId = UserProfileTestFactory.ID;
private final List<VorgangStatus> statuses = List.of(VorgangStatus.NEU, VorgangStatus.ANGENOMMEN, VorgangStatus.IN_BEARBEITUNG,
VorgangStatus.BESCHIEDEN,
VorgangStatus.ABGESCHLOSSEN, VorgangStatus.VERWORFEN, VorgangStatus.ZU_LOESCHEN, VorgangStatus.WEITERGELEITET);
@Test @Test
void shouldCallBuildVorgangListByPageLink() { void shouldCallBuildVorgangListByPageLink() {
viewLinkHandler.buildVorgangStatusLinks(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE, UserProfileTestFactory.ID); viewLinkHandler.buildVorgangStatusLinks(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE, UserProfileTestFactory.ID);
verify(viewLinkHandler, times(7)).buildGetAllVorgaengeByAssignedToAndStatus( statuses.forEach(status -> verify(viewLinkHandler).buildGetAllVorgaengeByAssignedToAndStatus(status,
any(VorgangStatus.class), RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE, userId));
eq(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE),
eq(userId));
} }
@Test @Test
void shouldCallFormatLinkRelTemplate() { void shouldReturnLinks() {
viewLinkHandler.buildVorgangStatusLinks(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE, UserProfileTestFactory.ID); var expectedLinks = LinkTestFactory.createList(8);
doAnswer(AdditionalAnswers.returnsElementsOf(expectedLinks)).when(viewLinkHandler).buildGetAllVorgaengeByAssignedToAndStatus(any(),
any(), any());
var links = viewLinkHandler.buildVorgangStatusLinks(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE, UserProfileTestFactory.ID);
verify(viewLinkHandler, times(7)).formatLinkRelTemplate(eq(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE), any(VorgangStatus.class)); assertThat(links).containsExactlyInAnyOrderElementsOf(expectedLinks);
}
} }
@Test @DisplayName("build get all vorgaenge by assignedTo and status")
void shouldBuildLinks() { @Nested
var links = viewLinkHandler.buildVorgangStatusLinks(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE, UserProfileTestFactory.ID); class TestBuildGetAllVorgaengeByAssignedToAndStatus {
@ParameterizedTest
@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
"ZU_LOESCHEN", "WEITERGELEITET" })
void shouldCallFormatLinkRelTemplate(VorgangStatus status) {
viewLinkHandler.buildGetAllVorgaengeByAssignedToAndStatus(status, RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE,
UserProfileTestFactory.ID);
verify(viewLinkHandler).formatLinkRelTemplate(RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE, status);
}
@ParameterizedTest
@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
"ZU_LOESCHEN", "WEITERGELEITET" })
void shouldAddByAssignedToAndStatus(VorgangStatus status) {
var link = viewLinkHandler.buildGetAllVorgaengeByAssignedToAndStatus(status, RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE,
UserProfileTestFactory.ID);
assertThat(link.getHref()).isEqualTo(
"/api/vorgangs?page=0&limit=100&assignedTo=" + UserProfileTestFactory.ID.toString() + "&status=" + status.toString());
}
@ParameterizedTest
@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
"ZU_LOESCHEN", "WEITERGELEITET" })
void shouldHaveFormattedRelation(VorgangStatus status) {
var expectedRelation = LoremIpsum.getInstance().getWords(1);
doReturn(expectedRelation).when(viewLinkHandler).formatLinkRelTemplate(any(), any());
var link = viewLinkHandler.buildGetAllVorgaengeByAssignedToAndStatus(status, RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE,
UserProfileTestFactory.ID);
assertThat(links).hasSize(7); assertThat(link.getRel()).isEqualTo(LinkRelation.of(expectedRelation));
} }
} }
...@@ -465,7 +504,7 @@ class RootViewLinkHandlerTest { ...@@ -465,7 +504,7 @@ class RootViewLinkHandlerTest {
@ParameterizedTest @ParameterizedTest
@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN", @EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
"ZU_LOESCHEN" }) "ZU_LOESCHEN", "WEITERGELEITET" })
void shouldCallFormatLinkRelTemplateWithAllVorgaengeTemplate(VorgangStatus status) { void shouldCallFormatLinkRelTemplateWithAllVorgaengeTemplate(VorgangStatus status) {
var linkRel = viewLinkHandler.formatLinkRelTemplate(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE, status); var linkRel = viewLinkHandler.formatLinkRelTemplate(RootViewLinkHandler.VORGAENGE_ALL_REL_TEMPLATE, status);
...@@ -474,7 +513,7 @@ class RootViewLinkHandlerTest { ...@@ -474,7 +513,7 @@ class RootViewLinkHandlerTest {
@ParameterizedTest @ParameterizedTest
@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN", @EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
"ZU_LOESCHEN" }) "ZU_LOESCHEN", "WEITERGELEITET" })
void shouldCallFormatLinkRelTemplateWithMyVorgaengeTemplate(VorgangStatus status) { void shouldCallFormatLinkRelTemplateWithMyVorgaengeTemplate(VorgangStatus status) {
var linkRel = viewLinkHandler.formatLinkRelTemplate(RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE, status); var linkRel = viewLinkHandler.formatLinkRelTemplate(RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE, status);
...@@ -483,7 +522,7 @@ class RootViewLinkHandlerTest { ...@@ -483,7 +522,7 @@ class RootViewLinkHandlerTest {
@ParameterizedTest @ParameterizedTest
@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN", @EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
"ZU_LOESCHEN" }) "ZU_LOESCHEN", "WEITERGELEITET" })
void shouldCallFormatLinkRelTemplateWithUnassignedVorgaengeTemplate(VorgangStatus status) { void shouldCallFormatLinkRelTemplateWithUnassignedVorgaengeTemplate(VorgangStatus status) {
var linkRel = viewLinkHandler.formatLinkRelTemplate(RootViewLinkHandler.VORGAENGE_UNASSIGNED_REL_TEMPLATE, status); var linkRel = viewLinkHandler.formatLinkRelTemplate(RootViewLinkHandler.VORGAENGE_UNASSIGNED_REL_TEMPLATE, status);
...@@ -497,7 +536,7 @@ class RootViewLinkHandlerTest { ...@@ -497,7 +536,7 @@ class RootViewLinkHandlerTest {
@ParameterizedTest @ParameterizedTest
@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN", @EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
"ZU_LOESCHEN" }) "ZU_LOESCHEN", "WEITERGELEITET" })
void shouldAddByStatus(VorgangStatus status) { void shouldAddByStatus(VorgangStatus status) {
var link = viewLinkHandler.buildGetAllVorgaengeByStatus(status, RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE); var link = viewLinkHandler.buildGetAllVorgaengeByStatus(status, RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE);
...@@ -506,29 +545,13 @@ class RootViewLinkHandlerTest { ...@@ -506,29 +545,13 @@ class RootViewLinkHandlerTest {
} }
@DisplayName("build get all vorgaenge by assignedTo and status")
@Nested
class TestBuildGetAllVorgaengeByAssignedToAndStatus {
@ParameterizedTest
@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
"ZU_LOESCHEN" })
void shouldAddByAssignedToAndStatus(VorgangStatus status) {
var link = viewLinkHandler.buildGetAllVorgaengeByAssignedToAndStatus(status, RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE,
UserProfileTestFactory.ID);
assertThat(link.getHref()).isEqualTo(
"/api/vorgangs?page=0&limit=100&assignedTo=" + UserProfileTestFactory.ID.toString() + "&status=" + status.toString());
}
}
@DisplayName("build get all unassigned vorgaenge by status") @DisplayName("build get all unassigned vorgaenge by status")
@Nested @Nested
class TestBuildGetAllUnassignedVorgaengeByStatus { class TestBuildGetAllUnassignedVorgaengeByStatus {
@ParameterizedTest @ParameterizedTest
@EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN", @EnumSource(mode = Mode.INCLUDE, names = { "NEU", "ANGENOMMEN", "IN_BEARBEITUNG", "BESCHIEDEN", "ABGESCHLOSSEN", "VERWORFEN",
"ZU_LOESCHEN" }) "ZU_LOESCHEN", "WEITERGELEITET" })
void shouldAddByUnassignedToAndStatus(VorgangStatus status) { void shouldAddByUnassignedToAndStatus(VorgangStatus status) {
var link = viewLinkHandler.buildGetAllVorgaengeByAssignedToAndStatus(status, RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE, var link = viewLinkHandler.buildGetAllVorgaengeByAssignedToAndStatus(status, RootViewLinkHandler.VORGAENGE_MY_REL_TEMPLATE,
UserId.empty()); UserId.empty());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment