diff --git a/alfa-client/apps/alfa-e2e/src/components/navigation/navigation.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/navigation/navigation.e2e.component.ts index 7e1a233687f36196443be78c7d3d56c2601cc51e..5f4b16d3b7c03aaf22996fa476bcc6cde954c363 100644 --- a/alfa-client/apps/alfa-e2e/src/components/navigation/navigation.e2e.component.ts +++ b/alfa-client/apps/alfa-e2e/src/components/navigation/navigation.e2e.component.ts @@ -28,19 +28,19 @@ export class NavigationE2EComponent { private readonly locatorRoot: string = 'navigation'; - public getRoot() { + public getRoot(): Cypress.Chainable<Element> { return cy.getTestElement(this.locatorRoot); } - public getAlleFilter() { + public getAlleFilter(): Cypress.Chainable<Element> { return cy.getTestElement(this.alleFilterToggleButton); } - public getMeineVorgaengeFilter() { + public getMeineVorgaengeFilter(): Cypress.Chainable<Element> { return cy.getTestElement(this.meineVorgaengeToggleButton); } - public getUnassignedFilter() { + public getUnassignedFilter(): Cypress.Chainable<Element> { return cy.getTestElement(this.unassignedToggleButton); } } diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component.ts index 9ada0f2e5a1a3f6a6b52e516037e1040e5948fd0..09585caa4a0cf07a4e271b9c0f071afa5b8052da 100644 --- a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component.ts +++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component.ts @@ -23,33 +23,16 @@ */ export class VorgangViewsE2EComponent { private readonly neuViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Neu'); - private readonly angenommenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent( - 'Angenommen', - ); - private readonly inBearbeitungViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent( - 'In_Bearbeitung', - ); - private readonly beschiedenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent( - 'Beschieden', - ); - private readonly abgeschlossenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent( - 'Abgeschlossen', - ); - private readonly verworfenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent( - 'Verworfen', - ); - private readonly zuLoeschenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent( - 'Zu_Loschen', - ); - private readonly ungelesenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent( - 'Ungelesen', - ); - private readonly wiedervorlagenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent( - 'Wiedervorlagen', - ); - private readonly vorgangListViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent( - 'Vorgangsliste', - ); + private readonly angenommenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Angenommen'); + private readonly inBearbeitungViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('In_Bearbeitung'); + private readonly beschiedenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Beschieden'); + private readonly abgeschlossenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Abgeschlossen'); + private readonly weitergeleitetViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Weitergeleitet'); + private readonly verworfenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Verworfen'); + private readonly zuLoeschenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Zu_Loschen'); + private readonly ungelesenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Ungelesen'); + private readonly wiedervorlagenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Wiedervorlagen'); + private readonly vorgangListViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Vorgangsliste'); private readonly searchViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Suche'); public getNeu(): VorgangViewE2EComponent { @@ -72,6 +55,10 @@ export class VorgangViewsE2EComponent { return this.abgeschlossenViewItem; } + public getWeitergeleitet(): VorgangViewE2EComponent { + return this.weitergeleitetViewItem; + } + public getVerworfen(): VorgangViewE2EComponent { return this.verworfenViewItem; } @@ -108,15 +95,15 @@ export class VorgangViewE2EComponent { this.rootId = rootId; } - public getRoot() { + public getRoot(): Cypress.Chainable<Element> { return cy.getTestElement(`${this.root}${this.rootId}`); } - public getCount() { + public getCount(): Cypress.Chainable<Element> { return this.getRoot().getTestElement(`${this.count}${this.rootId}`); } - public getButton() { + public getButton(): Cypress.Chainable<Element> { return this.getRoot().findTestElementWithClass(this.button); } } diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/accessibility/vorgang-list.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/accessibility/vorgang-list.cy.ts index a254ba3a092baa3b88fa2579ecf0399e5a83029c..c92fb955a61b78ce58d2222f12b3ff8785c04670 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/accessibility/vorgang-list.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/accessibility/vorgang-list.cy.ts @@ -161,6 +161,12 @@ describe('VorgangList Page', () => { isKeyboardFocused(views.getAbgeschlossen().getButton()); }); + it('should focus Weitergeleitet view', () => { + pressTab(); + + isKeyboardFocused(views.getWeitergeleitet().getButton()); + }); + it('should focus Verworfen view', () => { pressTab(); diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-list-views-pages.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-list-views-pages.cy.ts index 2a2316dfc645ba0cbb99af05b34b041ce5d7646e..d8374f8aa947247e627e8d5d437f4aca9f61c9a7 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-list-views-pages.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-list-views-pages.cy.ts @@ -23,13 +23,22 @@ */ import { NavigationE2EComponent } from 'apps/alfa-e2e/src/components/navigation/navigation.e2e.component'; import { VorgangListE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-list.e2e.component'; -import { VorgangViewsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component'; +import { + VorgangViewE2EComponent, + VorgangViewsE2EComponent, +} from 'apps/alfa-e2e/src/components/vorgang/vorgang-views.e2e.component'; import { MainPage, waitForSpinnerToDisappear } from 'apps/alfa-e2e/src/page-objects/main.po'; import { exist } from 'apps/alfa-e2e/src/support/cypress.util'; import { Interception } from 'cypress/types/net-stubbing'; import { HttpMethodE2E } from '../../../model/util'; import { VorgangE2E, VorgangStatusE2E } from '../../../model/vorgang'; -import { dropCollections, intercept, scrollToWindowBottom, waitOfInterceptor } from '../../../support/cypress-helper'; +import { + dropCollections, + intercept, + scrollToWindowBottom, + scrollToWindowTop, + waitOfInterceptor, +} from '../../../support/cypress-helper'; import { generateIds } from '../../../support/tech.util'; import { getUserSabineId, initUsermanagerUsers, loginAsSabine } from '../../../support/user-util'; import { buildVorgang, initVorgaenge } from '../../../support/vorgang-util'; @@ -43,6 +52,7 @@ describe('VorgangList View Pages', () => { const views: VorgangViewsE2EComponent = mainPage.getViews(); + const VORGANG_NAME_PREFIX: string = 'Vorgang'; const PAGE_SIZE: number = 100; const assignedTo: string = getUserSabineId(); @@ -57,6 +67,8 @@ describe('VorgangList View Pages', () => { createAssignedVorgaengeWithStatus(VorgangStatusE2E.BESCHIEDEN), createVorgaengeWithStatus(VorgangStatusE2E.ABGESCHLOSSEN), createAssignedVorgaengeWithStatus(VorgangStatusE2E.ABGESCHLOSSEN), + createVorgaengeWithStatus(VorgangStatusE2E.WEITERGELEITET), + createAssignedVorgaengeWithStatus(VorgangStatusE2E.WEITERGELEITET), createVorgaengeWithStatus(VorgangStatusE2E.VERWORFEN), createAssignedVorgaengeWithStatus(VorgangStatusE2E.VERWORFEN), ); @@ -73,914 +85,259 @@ describe('VorgangList View Pages', () => { }); describe('Neu', () => { - const ALLE_NAME_PREFIX: string = 'VorgangNEU_'; - const MEINE_VORGAENGE_NAME_PREFIX: string = 'VorgangNEUAssigned_'; + const STATUS: string = VorgangStatusE2E.NEU; - describe('Alle filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangNeuPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge NEU', () => { - views.getNeu().getRoot().click(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangNeuPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge NEU and 90 vorgaenge ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - describe('page 3', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangNeuPageLink(3)).as(loadPageInterceptor); - }); - - it('should show page 3 with 10 vorgaenge NEU ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 20); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 80); - assert(interception.response.body._embedded.vorgangHeaderList[19].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - function buildVorgangNeuPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&status=NEU`; - } - }); - - describe('Meine Vorgänge filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangNeuAssignedPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge NEU', () => { - navigation.getMeineVorgaengeFilter().click(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangNeuAssignedPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge NEU and 90 vorgaenge ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 10); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 101); - assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME_PREFIX + 110); - }); - }); - }); - - function buildVorgangNeuAssignedPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&assignedTo=${assignedTo}&status=NEU`; - } - }); - - describe('Nicht zugewiesen filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangUnassignedPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge NEU', () => { - navigation.getUnassignedFilter().click(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangUnassignedPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 10); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 101); - assert(interception.response.body._embedded.vorgangHeaderList[9].name, ALLE_NAME_PREFIX + 110); - }); - }); - }); - - function buildVorgangUnassignedPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&assignedTo=&status=NEU`; - } - }); + testAlleFilter(STATUS, views.getNeu()); + testMeineVorgaengeFilter(STATUS); + testNichtZugewiesenFilter(STATUS); }); describe('Angenommen', () => { - const ALLE_NAME_PREFIX: string = 'VorgangANGENOMMEN_'; - const MEINE_VORGAENGE_NAME_PREFIX: string = 'VorgangANGENOMMENAssigned_'; - - describe('Alle filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - navigation.getAlleFilter().click(); - waitForSpinnerToDisappear(); - intercept(HttpMethodE2E.GET, buildVorgangAngenommenPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge ANGENOMMEN', () => { - views.getAngenommen().getRoot().click(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangAngenommenPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge ANGENOMMEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - describe('page 3', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangAngenommenPageLink(3)).as(loadPageInterceptor); - }); - - it('should show page 3 with 10 vorgaenge ANGENOMMEN ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); + const STATUS: string = VorgangStatusE2E.ANGENOMMEN; - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 20); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 80); - assert(interception.response.body._embedded.vorgangHeaderList[19].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - function buildVorgangAngenommenPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&status=ANGENOMMEN`; - } - }); - - describe('Meine Vorgänge filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangAngenommenAssignedPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge ANGENOMMEN', () => { - navigation.getMeineVorgaengeFilter().click(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangAngenommenAssignedPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge ANGENOMMEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 10); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 101); - assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME_PREFIX + 110); - }); - }); - }); - - function buildVorgangAngenommenAssignedPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&assignedTo=${assignedTo}&status=ANGENOMMEN`; - } - }); - - describe('Nicht zugewiesen filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangAngenommenUnassignedPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge ANGENOMMEN', () => { - navigation.getUnassignedFilter().click(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangAngenommenUnassignedPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 10); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 101); - assert(interception.response.body._embedded.vorgangHeaderList[9].name, ALLE_NAME_PREFIX + 110); - }); - }); - }); - - function buildVorgangAngenommenUnassignedPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&assignedTo=&status=ANGENOMMEN`; - } - }); + testAlleFilter(STATUS, views.getAngenommen()); + testMeineVorgaengeFilter(STATUS); + testNichtZugewiesenFilter(STATUS); }); describe('In Bearbeitung', () => { - const ALLE_NAME_PREFIX: string = 'VorgangIN_BEARBEITUNG_'; - const MEINE_VORGAENGE_NAME_PREFIX: string = 'VorgangIN_BEARBEITUNGAssigned_'; + const STATUS: string = VorgangStatusE2E.IN_BEARBEITUNG; - describe('Alle filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - navigation.getAlleFilter().click(); - waitForSpinnerToDisappear(); - intercept(HttpMethodE2E.GET, buildVorgangInBearbeitungPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge IN_BEARBEITUNG', () => { - views.getInBearbeitung().getRoot().click(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); + testAlleFilter(STATUS, views.getInBearbeitung()); + testMeineVorgaengeFilter(STATUS); + testNichtZugewiesenFilter(STATUS); + }); - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; + describe('Bescheiden', () => { + const STATUS: string = VorgangStatusE2E.BESCHIEDEN; - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInBearbeitungPageLink(2)).as(loadPageInterceptor); - }); + testAlleFilter(STATUS, views.getBeschieden()); + testMeineVorgaengeFilter(STATUS); + testNichtZugewiesenFilter(STATUS); + }); - it('should show page 2 with 10 vorgaenge IN_BEARBEITUNG and 90 vorgaenge ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); + describe('Abgeschlossen', () => { + const STATUS: string = VorgangStatusE2E.ABGESCHLOSSEN; - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); + testAlleFilter(STATUS, views.getAbgeschlossen()); + testMeineVorgaengeFilter(STATUS); + testNichtZugewiesenFilter(STATUS); + }); - describe('page 3', () => { - const loadPageInterceptor: string = 'loadPage'; + describe('Weitergeleitet', () => { + const STATUS: string = VorgangStatusE2E.WEITERGELEITET; - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInBearbeitungPageLink(3)).as(loadPageInterceptor); - }); + testAlleFilter(STATUS, views.getWeitergeleitet()); + testMeineVorgaengeFilter(STATUS); + testNichtZugewiesenFilter(STATUS); + }); - it('should show page 3 with 10 vorgaenge IN_BEARBEITUNG ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); + describe('Verworfen', () => { + const STATUS: string = VorgangStatusE2E.VERWORFEN; - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 20); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 80); - assert(interception.response.body._embedded.vorgangHeaderList[19].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); + testAlleFilter(STATUS, views.getVerworfen()); + testMeineVorgaengeFilter(STATUS); + testNichtZugewiesenFilter(STATUS); + }); - function buildVorgangInBearbeitungPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&status=IN_BEARBEITUNG`; - } + function testAlleFilter(status: string, view: VorgangViewE2EComponent) { + describe('Alle filter', () => { + testAlleFilterPage1(status, view); + testAlleFilterPage2(status); + testAlleFilterPage3(status); }); + } - describe('Meine Vorgänge filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInBearbeitungAssignedPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge IN_BEARBEITUNG', () => { - navigation.getMeineVorgaengeFilter().click(); + function testAlleFilterPage1(status: string, view: VorgangViewE2EComponent): void { + describe('page 1', () => { + const loadPageInterceptor: string = 'loadPage'; - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); + beforeEach(() => { + navigation.getAlleFilter().click(); + waitForSpinnerToDisappear(); + intercept(HttpMethodE2E.GET, buildVorgangStatusPageLink(1, status)).as(loadPageInterceptor); }); - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; + it(`should show page 1 with 100 vorgaenge ${status}`, () => { + view.getRoot().click(); - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInBearbeitungAssignedPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge IN_BEARBEITUNG and 90 vorgaenge ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 10); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 101); - assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME_PREFIX + 110); - }); + waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { + assert(getVorgangList(interception).length === PAGE_SIZE); + assert(getVorgangList(interception)[0].name, VORGANG_NAME_PREFIX + status + 1); + assert(getVorgangList(interception)[99].name, VORGANG_NAME_PREFIX + status + PAGE_SIZE); }); }); - - function buildVorgangInBearbeitungAssignedPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&assignedTo=${assignedTo}&status=IN_BEARBEITUNG`; - } }); + } - describe('Nicht zugewiesen filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInBearbeitungUnassignedPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge IN_BEARBEITUNG', () => { - navigation.getUnassignedFilter().click(); + function testAlleFilterPage2(status: string): void { + describe('page 2', () => { + const loadPageInterceptor: string = 'loadPage'; - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE); - }); - }); + beforeEach(() => { + intercept(HttpMethodE2E.GET, buildVorgangStatusPageLink(2, status)).as(loadPageInterceptor); }); - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; + it(`should show page 2 with 10 vorgaenge ${status} and 90 vorgaenge ASSIGNED on scrolling to bottom`, () => { + scrollToWindowBottom(); - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInBearbeitungUnassignedPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 10); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 101); - assert(interception.response.body._embedded.vorgangHeaderList[9].name, ALLE_NAME_PREFIX + 110); - }); + waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { + assert(getVorgangList(interception).length === PAGE_SIZE); + assert(getVorgangList(interception)[0].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + 1); + assert(getVorgangList(interception)[99].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + PAGE_SIZE); }); }); - - function buildVorgangInBearbeitungUnassignedPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&assignedTo=&status=IN_BEARBEITUNG`; - } }); - }); - - describe('Beschieden', () => { - const ALLE_NAME_PREFIX: string = 'VorgangBESCHIEDEN_'; - const MEINE_VORGAENGE_NAME_PREFIX: string = 'VorgangBESCHIEDENAssigned_'; - - describe('Alle filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - navigation.getAlleFilter().click(); - waitForSpinnerToDisappear(); - intercept(HttpMethodE2E.GET, buildVorgangBeschiedenPageLink(1)).as(loadPageInterceptor); - }); + } - it('should show page 1 with 100 vorgaenge BESCHIEDEN', () => { - views.getBeschieden().getRoot().click(); + function testAlleFilterPage3(status: string): void { + describe('page 3', () => { + const loadPageInterceptor: string = 'loadPage'; - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE); - }); - }); + beforeEach(() => { + intercept(HttpMethodE2E.GET, buildVorgangStatusPageLink(3, status)).as(loadPageInterceptor); }); - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangBeschiedenPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge BESCHIEDEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); + after(() => { + scrollToWindowTop(); }); - describe('page 3', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangBeschiedenPageLink(3)).as(loadPageInterceptor); - }); - - it('should show page 3 with 10 vorgaenge BESCHIEDEN ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); + it(`should show page 3 with 10 vorgaenge ${status} ASSIGNED on scrolling to bottom`, () => { + scrollToWindowBottom(); - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 20); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 80); - assert(interception.response.body._embedded.vorgangHeaderList[19].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); + waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { + assert(getVorgangList(interception).length === 20); + assert(getVorgangList(interception)[0].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + 80); + assert(getVorgangList(interception)[19].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + PAGE_SIZE); }); }); - - function buildVorgangBeschiedenPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&status=BESCHIEDEN`; - } }); + } - describe('Meine Vorgänge filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInBescheidenAssignedPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge BESCHIEDEN', () => { - navigation.getMeineVorgaengeFilter().click(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInBescheidenAssignedPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge BESCHIEDEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 10); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 101); - assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME_PREFIX + 110); - }); - }); - }); + function buildVorgangStatusPageLink(page: number, status: string): string { + return `${buildVorgangPageLink(page)}&status=${status}`; + } - function buildVorgangInBescheidenAssignedPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&assignedTo=${assignedTo}&status=BESCHIEDEN`; - } + function testMeineVorgaengeFilter(status: string): void { + describe('Meine Vorgänge filter', () => { + testMeineVorgaengePage1(status); + testMeineVorgaengePage2(status); }); + } - describe('Nicht zugewiesen filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInBescheidenUnassignedPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge BESCHIEDEN', () => { - navigation.getUnassignedFilter().click(); + function testMeineVorgaengePage1(status: string): void { + describe('page 1', () => { + const loadPageInterceptor: string = 'loadPage'; - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE); - }); - }); + beforeEach(() => { + intercept(HttpMethodE2E.GET, buildVorgangInStatusAssignedPageLink(1, status)).as(loadPageInterceptor); }); - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; + it(`should show page 1 with 100 vorgaenge ${status}`, () => { + navigation.getMeineVorgaengeFilter().click(); - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInBescheidenUnassignedPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 10); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 101); - assert(interception.response.body._embedded.vorgangHeaderList[9].name, ALLE_NAME_PREFIX + 110); - }); + waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { + assert(getVorgangList(interception).length === PAGE_SIZE); + assert(getVorgangList(interception)[0].name, VORGANG_NAME_PREFIX + 'Assigned_' + 1); + assert(getVorgangList(interception)[99].name, VORGANG_NAME_PREFIX + 'Assigned_' + PAGE_SIZE); }); }); - - function buildVorgangInBescheidenUnassignedPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&assignedTo=&status=BESCHIEDEN`; - } }); - }); - - describe('Abgeschlossen', () => { - const ALLE_NAME_PREFIX: string = 'VorgangABGESCHLOSSEN_'; - const MEINE_VORGAENGE_NAME_PREFIX: string = 'VorgangABGESCHLOSSENAssigned_'; - - describe('Alle filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - navigation.getAlleFilter().click(); - waitForSpinnerToDisappear(); - intercept(HttpMethodE2E.GET, buildVorgangAbgeschlossenPageLink(1)).as(loadPageInterceptor); - }); + } - it('should show page 1 with 100 vorgaenge ABGESCHLOSSEN', () => { - views.getAbgeschlossen().getRoot().click(); + function testMeineVorgaengePage2(status: string): void { + describe('page 2', () => { + const loadPageInterceptor: string = 'loadPage'; - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE); - }); - }); + beforeEach(() => { + intercept(HttpMethodE2E.GET, buildVorgangInStatusAssignedPageLink(2, status)).as(loadPageInterceptor); }); - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangAbgeschlossenPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge ABGESCHLOSSEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); + after(() => { + scrollToWindowTop(); }); - describe('page 3', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangAbgeschlossenPageLink(3)).as(loadPageInterceptor); - }); - - it('should show page 3 with 10 vorgaenge ABGESCHLOSSEN ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); + it(`should show page 2 with 10 vorgaenge ${status} and 90 vorgaenge ASSIGNED on scrolling to bottom`, () => { + scrollToWindowBottom(); - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 20); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 80); - assert(interception.response.body._embedded.vorgangHeaderList[19].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); + waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { + assert(getVorgangList(interception).length === 10); + assert(getVorgangList(interception)[0].name, VORGANG_NAME_PREFIX + 'Assigned_' + 101); + assert(getVorgangList(interception)[9].name, VORGANG_NAME_PREFIX + 'Assigned_' + 110); }); }); - - function buildVorgangAbgeschlossenPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&status=ABGESCHLOSSEN`; - } }); + } - describe('Meine Vorgänge filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInAbgeschlossenAssignedPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge ABGESCHLOSSEN', () => { - navigation.getMeineVorgaengeFilter().click(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInAbgeschlossenAssignedPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge ABGESCHLOSSEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 10); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 101); - assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME_PREFIX + 110); - }); - }); - }); - - function buildVorgangInAbgeschlossenAssignedPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&assignedTo=${assignedTo}&status=ABGESCHLOSSEN`; - } - }); + function buildVorgangInStatusAssignedPageLink(page: number, status: string): string { + return `${buildVorgangPageLink(page)}&assignedTo=${assignedTo}&status=${status}`; + } + function testNichtZugewiesenFilter(status: string): void { describe('Nicht zugewiesen filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInAbgeschlossenUnassignedPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge ABGESCHLOSSEN', () => { - navigation.getUnassignedFilter().click(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInAbgeschlossenUnassignedPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 10); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 101); - assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME_PREFIX + 110); - }); - }); - }); - - function buildVorgangInAbgeschlossenUnassignedPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&assignedTo=&status=ABGESCHLOSSEN`; - } + testNichtZugewiesenPage1(status); + testNichtZugewiesenPage2(status); }); - }); - - describe('Verworfen', () => { - const ALLE_NAME_PREFIX: string = 'VorgangVERWORFEN_'; - const MEINE_VORGAENGE_NAME_PREFIX: string = 'VorgangVERWORFENAssigned_'; - - describe('Alle filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - navigation.getAlleFilter().click(); - waitForSpinnerToDisappear(); - intercept(HttpMethodE2E.GET, buildVorgangVerworfenPageLink(1)).as(loadPageInterceptor); - }); + } - it('should show page 1 with 100 vorgaenge VERWORFEN', () => { - views.getVerworfen().getRoot().click(); + function testNichtZugewiesenPage1(status: string): void { + describe('page 1', () => { + const loadPageInterceptor: string = 'loadPage'; - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE); - }); - }); + beforeEach(() => { + intercept(HttpMethodE2E.GET, buildVorgangInStatusUnassignedPageLink(1, status)).as(loadPageInterceptor); }); - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; + it(`should show page 1 with 100 vorgaeng ${status}`, () => { + navigation.getUnassignedFilter().click(); - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangVerworfenPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge VERWORFEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); + waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { + assert(getVorgangList(interception).length === PAGE_SIZE); + assert(getVorgangList(interception)[0].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + 1); + assert(getVorgangList(interception)[99].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + PAGE_SIZE); }); }); - - describe('page 3', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangVerworfenPageLink(3)).as(loadPageInterceptor); - }); - - it('should show page 3 with 10 vorgaenge VERWORFEN ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 20); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 80); - assert(interception.response.body._embedded.vorgangHeaderList[19].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - function buildVorgangVerworfenPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&status=VERWORFEN`; - } }); + } - describe('Meine Vorgänge filter', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInVerworfenAssignedPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge VERWORFEN', () => { - navigation.getMeineVorgaengeFilter().click(); + function testNichtZugewiesenPage2(status: string): void { + describe('page 2', () => { + const loadPageInterceptor: string = 'loadPage'; - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, MEINE_VORGAENGE_NAME_PREFIX + PAGE_SIZE); - }); - }); + beforeEach(() => { + intercept(HttpMethodE2E.GET, buildVorgangInStatusUnassignedPageLink(2, status)).as(loadPageInterceptor); }); - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; + it('should show page 2 with 10 vorgaenge on scrolling to bottom', () => { + scrollToWindowBottom(); - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInVerworfenAssignedPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge VERWORFEN and 90 vorgaenge ASSIGNED on scrolling to bottom', () => { - scrollToWindowBottom(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 10); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, MEINE_VORGAENGE_NAME_PREFIX + 101); - assert(interception.response.body._embedded.vorgangHeaderList[9].name, MEINE_VORGAENGE_NAME_PREFIX + 110); - }); + waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { + assert(getVorgangList(interception).length === 10); + assert(getVorgangList(interception)[0].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + 101); + assert(getVorgangList(interception)[9].name, VORGANG_NAME_PREFIX + status + 'Assigned_' + 110); }); + scrollToWindowTop(); }); - - function buildVorgangInVerworfenAssignedPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&assignedTo=${assignedTo}&status=VERWORFEN`; - } }); + } - describe('Nicht zugewiesen', () => { - describe('page 1', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInVerworfenUnassignedPageLink(1)).as(loadPageInterceptor); - }); - - it('should show page 1 with 100 vorgaenge VERWORFEN', () => { - navigation.getUnassignedFilter().click(); - - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === PAGE_SIZE); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 1); - assert(interception.response.body._embedded.vorgangHeaderList[99].name, ALLE_NAME_PREFIX + PAGE_SIZE); - }); - }); - }); - - describe('page 2', () => { - const loadPageInterceptor: string = 'loadPage'; - - beforeEach(() => { - intercept(HttpMethodE2E.GET, buildVorgangInVerworfenUnassignedPageLink(2)).as(loadPageInterceptor); - }); - - it('should show page 2 with 10 vorgaenge on scrolling to bottom', () => { - scrollToWindowBottom(); + function buildVorgangInStatusUnassignedPageLink(page: number, status: string): string { + return `${buildVorgangPageLink(page)}&assignedTo=&status=${status}`; + } - waitOfInterceptor(loadPageInterceptor).then((interception: Interception) => { - assert(interception.response.body._embedded.vorgangHeaderList.length === 10); - assert(interception.response.body._embedded.vorgangHeaderList[0].name, ALLE_NAME_PREFIX + 101); - assert(interception.response.body._embedded.vorgangHeaderList[9].name, ALLE_NAME_PREFIX + 110); - }); - }); - }); + function buildVorgangPageLink(page: number): string { + return `vorgangs?page=${page - 1}&limit=100`; + } - function buildVorgangInVerworfenUnassignedPageLink(page: number): string { - return `${buildVorgangPageLink(page)}&assignedTo=&status=VERWORFEN`; - } - }); - }); + function getVorgangList(interception: Interception): VorgangE2E[] { + return interception.response.body._embedded.vorgangHeaderList; + } function createVorgaengeWithStatus(status: VorgangStatusE2E): VorgangE2E[] { let count = 1; return generateIds(110).map((randomId) => { const vorgang: VorgangE2E = { - ...buildVorgang(randomId, 'Vorgang' + status + '_' + count), + ...buildVorgang(randomId, VORGANG_NAME_PREFIX + status + '_' + count), status, }; count++; @@ -992,7 +349,7 @@ describe('VorgangList View Pages', () => { let count = 1; return generateIds(110).map((randomId) => { const vorgang: VorgangE2E = { - ...buildVorgang(randomId, 'Vorgang' + status + 'Assigned_' + count), + ...buildVorgang(randomId, VORGANG_NAME_PREFIX + status + 'Assigned_' + count), status, assignedTo, }; @@ -1000,8 +357,4 @@ describe('VorgangList View Pages', () => { return vorgang; }); } - - function buildVorgangPageLink(page: number): string { - return `vorgangs?page=${page - 1}&limit=100`; - } }); diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-views-filter.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-views-filter.cy.ts index 2547f4523c44b68ebd98dacc223c38f8db94abf0..d2b2f5c137420c986239141c7b60c4dff57868f0 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-views-filter.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-list/vorgang-views-filter.cy.ts @@ -66,12 +66,29 @@ describe('Vorgang views and filter', () => { const inBearbeitungView: VorgangViewE2EComponent = views.getInBearbeitung(); const beschiedenView: VorgangViewE2EComponent = views.getBeschieden(); const abgeschlossenView: VorgangViewE2EComponent = views.getAbgeschlossen(); + const weitergeleitetView: VorgangViewE2EComponent = views.getWeitergeleitet(); const verworfenView: VorgangViewE2EComponent = views.getVerworfen(); const zuLoeschenView: VorgangViewE2EComponent = views.getZuLoeschen(); + const ungelesenView: VorgangViewE2EComponent = views.getUngelesen(); const wiedervorlagenView: VorgangViewE2EComponent = views.getWiedervorlagen(); const vorgangListView: VorgangViewE2EComponent = views.getVorgangList(); const sucheView: VorgangViewE2EComponent = views.getSuche(); + const ALL_VIEW_COMPONENTS: VorgangViewE2EComponent[] = [ + neuView, + angenommenView, + inBearbeitungView, + beschiedenView, + abgeschlossenView, + weitergeleitetView, + verworfenView, + zuLoeschenView, + ungelesenView, + wiedervorlagenView, + vorgangListView, + sucheView, + ]; + const navigation: NavigationE2EComponent = mainPage.getNavigation(); const vorgangNeuAssigned: VorgangE2E = { @@ -134,6 +151,16 @@ describe('Vorgang views and filter', () => { status: VorgangStatusE2E.ABGESCHLOSSEN, }; + const vorgangWeitergeleitetAssigned: VorgangE2E = { + ...buildVorgang(objectIds[13], 'VorgangWeitergeleitetAssigned'), + status: VorgangStatusE2E.WEITERGELEITET, + assignedTo: getUserSabineId(), + }; + const vorgangWeitergeleitetUnassigned: VorgangE2E = { + ...buildVorgang(objectIds[14], 'VorgangWeitergeleitetUnassigned'), + status: VorgangStatusE2E.WEITERGELEITET, + }; + const vorgangVerworfenAssigned: VorgangE2E = { ...buildVorgang(objectIds[9], 'VorgangVerworfenAssigned'), status: VorgangStatusE2E.VERWORFEN, @@ -181,6 +208,13 @@ describe('Vorgang views and filter', () => { vorgangAbgeschlossenUnassigned.name, ); + const vorgangWeitergeleitetAssignedInList: VorgangListItemE2EComponent = vorgangList.getListItem( + vorgangWeitergeleitetAssigned.name, + ); + const vorgangWeitergeleitetUnassignedInList: VorgangListItemE2EComponent = vorgangList.getListItem( + vorgangWeitergeleitetUnassigned.name, + ); + const vorgangVerworfenAssignedInList: VorgangListItemE2EComponent = vorgangList.getListItem(vorgangVerworfenAssigned.name); const vorgangVerworfenUnassignedInList: VorgangListItemE2EComponent = vorgangList.getListItem(vorgangVerworfenUnassigned.name); @@ -189,7 +223,7 @@ describe('Vorgang views and filter', () => { vorgangZuLoeschenUnassigned.name, ); - const LIST_SIZE: number = 14; + const LIST_SIZE: number = 16; before(() => { const vorgaenge: VorgangE2E[] = [ @@ -203,6 +237,8 @@ describe('Vorgang views and filter', () => { vorgangBeschiedenUnassigned, vorgangAbgeschlossenAssigned, vorgangAbgeschlossenUnassigned, + vorgangWeitergeleitetAssigned, + vorgangWeitergeleitetUnassigned, vorgangVerworfenAssigned, vorgangVerworfenUnassigned, vorgangZuLoeschenAssigned, @@ -214,8 +250,6 @@ describe('Vorgang views and filter', () => { initUsermanagerUsers(); loginAsSabine(); - - waitForSpinnerToDisappear(); }); after(() => { @@ -257,6 +291,7 @@ describe('Vorgang views and filter', () => { isNotSelected(inBearbeitungView.getRoot()); isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); + isNotSelected(weitergeleitetView.getRoot()); isNotSelected(verworfenView.getRoot()); isNotSelected(zuLoeschenView.getRoot()); isNotSelected(sucheView.getRoot()); @@ -283,6 +318,10 @@ describe('Vorgang views and filter', () => { contains(abgeschlossenView.getCount(), '2'); }); + it('weitergeleitet', () => { + contains(abgeschlossenView.getCount(), '2'); + }); + it('verworfen', () => { contains(verworfenView.getCount(), '2'); }); @@ -300,262 +339,82 @@ describe('Vorgang views and filter', () => { describe('Select view', () => { describe('Neu', () => { - it('should set selected after click', () => { - neuView.getRoot().click(); - waitForSpinnerToDisappear(); - - isSelected(neuView.getRoot()); - }); - - it('should unselect other views', () => { - isNotSelected(angenommenView.getRoot()); - isNotSelected(inBearbeitungView.getRoot()); - isNotSelected(beschiedenView.getRoot()); - isNotSelected(abgeschlossenView.getRoot()); - isNotSelected(verworfenView.getRoot()); - isNotSelected(zuLoeschenView.getRoot()); - isNotSelected(vorgangListView.getRoot()); - isNotSelected(sucheView.getRoot()); - }); - - it('should keep filter selection', () => { - isOdsButtonToggleChecked(navigation.getAlleFilter()); - isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter()); - isOdsButtonToggleNotChecked(navigation.getUnassignedFilter()); - }); - - it('should filter List', () => { - haveLength(vorgangList.getItems(), 2); - exist(vorgangNeuAssignedInList.getRoot()); - exist(vorgangNeuUnassignedInList.getRoot()); - }); + testAlleFilterViewSelection(neuView, [vorgangNeuAssignedInList, vorgangNeuUnassignedInList]); }); describe('Angenommen', () => { - it('should set selected after click', () => { - angenommenView.getRoot().click(); - waitForSpinnerToDisappear(); - - isSelected(angenommenView.getRoot()); - }); - - it('should unselect other views', () => { - isNotSelected(neuView.getRoot()); - isNotSelected(inBearbeitungView.getRoot()); - isNotSelected(beschiedenView.getRoot()); - isNotSelected(abgeschlossenView.getRoot()); - isNotSelected(verworfenView.getRoot()); - isNotSelected(zuLoeschenView.getRoot()); - isNotSelected(vorgangListView.getRoot()); - isNotSelected(sucheView.getRoot()); - }); - - it('should keep filter selection', () => { - isOdsButtonToggleChecked(navigation.getAlleFilter()); - isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter()); - isOdsButtonToggleNotChecked(navigation.getUnassignedFilter()); - }); - - it('should filter List', () => { - haveLength(vorgangList.getItems(), 2); - exist(vorgangAngenommenAssignedInList.getRoot()); - exist(vorgangAngenommenUnassignedInList.getRoot()); - }); + testAlleFilterViewSelection(angenommenView, [vorgangAngenommenAssignedInList, vorgangAngenommenUnassignedInList]); }); describe('In Bearbeitung', () => { - it('should set selected after click', () => { - inBearbeitungView.getRoot().click(); - waitForSpinnerToDisappear(); - - isSelected(inBearbeitungView.getRoot()); - }); - - it('should unselect other views', () => { - isNotSelected(neuView.getRoot()); - isNotSelected(angenommenView.getRoot()); - isNotSelected(beschiedenView.getRoot()); - isNotSelected(abgeschlossenView.getRoot()); - isNotSelected(verworfenView.getRoot()); - isNotSelected(zuLoeschenView.getRoot()); - isNotSelected(vorgangListView.getRoot()); - isNotSelected(sucheView.getRoot()); - }); - - it('should keep filter selection', () => { - isOdsButtonToggleChecked(navigation.getAlleFilter()); - isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter()); - isOdsButtonToggleNotChecked(navigation.getUnassignedFilter()); - }); - - it('should filter List', () => { - haveLength(vorgangList.getItems(), LIST_SIZE - 12); - exist(vorgangInBearbeitungAssignedInList.getRoot()); - exist(vorgangInBearbeitungUnassignedInList.getRoot()); - }); + testAlleFilterViewSelection(inBearbeitungView, [vorgangInBearbeitungAssignedInList, vorgangInBearbeitungUnassignedInList]); }); describe('Beschieden', () => { - it('should set selected after click', () => { - beschiedenView.getRoot().click(); - waitForSpinnerToDisappear(); - - isSelected(beschiedenView.getRoot()); - }); - - it('should unselect other views', () => { - isNotSelected(neuView.getRoot()); - isNotSelected(angenommenView.getRoot()); - isNotSelected(inBearbeitungView.getRoot()); - isNotSelected(abgeschlossenView.getRoot()); - isNotSelected(verworfenView.getRoot()); - isNotSelected(zuLoeschenView.getRoot()); - isNotSelected(vorgangListView.getRoot()); - isNotSelected(sucheView.getRoot()); - }); - - it('should keep filter selection', () => { - isOdsButtonToggleChecked(navigation.getAlleFilter()); - isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter()); - isOdsButtonToggleNotChecked(navigation.getUnassignedFilter()); - }); - - it('should filter List', () => { - haveLength(vorgangList.getItems(), LIST_SIZE - 12); - exist(vorgangBeschiedenAssignedInList.getRoot()); - exist(vorgangBeschiedenUnassignedInList.getRoot()); - }); + testAlleFilterViewSelection(beschiedenView, [vorgangBeschiedenAssignedInList, vorgangBeschiedenUnassignedInList]); }); describe('Abgeschlossen', () => { - it('should set selected after click', () => { - abgeschlossenView.getRoot().click(); - waitForSpinnerToDisappear(); - - isSelected(abgeschlossenView.getRoot()); - }); - - it('should unselect other views', () => { - isNotSelected(neuView.getRoot()); - isNotSelected(angenommenView.getRoot()); - isNotSelected(inBearbeitungView.getRoot()); - isNotSelected(beschiedenView.getRoot()); - isNotSelected(verworfenView.getRoot()); - isNotSelected(zuLoeschenView.getRoot()); - isNotSelected(vorgangListView.getRoot()); - isNotSelected(sucheView.getRoot()); - }); - - it('should keep filter selection', () => { - isOdsButtonToggleChecked(navigation.getAlleFilter()); - isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter()); - isOdsButtonToggleNotChecked(navigation.getUnassignedFilter()); - }); + testAlleFilterViewSelection(abgeschlossenView, [vorgangAbgeschlossenAssignedInList, vorgangAbgeschlossenUnassignedInList]); + }); - it('should filter List', () => { - haveLength(vorgangList.getItems(), LIST_SIZE - 12); - exist(vorgangAbgeschlossenAssignedInList.getRoot()); - exist(vorgangAbgeschlossenUnassignedInList.getRoot()); - }); + describe('Weitergeleitet', () => { + testAlleFilterViewSelection(weitergeleitetView, [ + vorgangWeitergeleitetAssignedInList, + vorgangWeitergeleitetUnassignedInList, + ]); }); describe('Verworfen', () => { - it('should set selected after click', () => { - verworfenView.getRoot().click(); - waitForSpinnerToDisappear(); - - isSelected(verworfenView.getRoot()); - }); - - it('should unselect other views', () => { - isNotSelected(neuView.getRoot()); - isNotSelected(angenommenView.getRoot()); - isNotSelected(inBearbeitungView.getRoot()); - isNotSelected(beschiedenView.getRoot()); - isNotSelected(abgeschlossenView.getRoot()); - isNotSelected(zuLoeschenView.getRoot()); - isNotSelected(vorgangListView.getRoot()); - isNotSelected(sucheView.getRoot()); - }); - - it('should keep filter selection', () => { - isOdsButtonToggleChecked(navigation.getAlleFilter()); - isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter()); - isOdsButtonToggleNotChecked(navigation.getUnassignedFilter()); - }); - - it('should filter List', () => { - haveLength(vorgangList.getItems(), LIST_SIZE - 12); - exist(vorgangVerworfenAssignedInList.getRoot()); - exist(vorgangVerworfenUnassignedInList.getRoot()); - }); + testAlleFilterViewSelection(verworfenView, [vorgangVerworfenAssignedInList, vorgangVerworfenUnassignedInList]); }); describe('Zu Löschen', () => { - it('should set selected after click', () => { - zuLoeschenView.getRoot().click(); - waitForSpinnerToDisappear(); - - isSelected(zuLoeschenView.getRoot()); - }); - - it('should unselect other views', () => { - isNotSelected(neuView.getRoot()); - isNotSelected(angenommenView.getRoot()); - isNotSelected(inBearbeitungView.getRoot()); - isNotSelected(beschiedenView.getRoot()); - isNotSelected(abgeschlossenView.getRoot()); - isNotSelected(verworfenView.getRoot()); - isNotSelected(vorgangListView.getRoot()); - isNotSelected(sucheView.getRoot()); - }); - - it('should keep filter selection', () => { - isOdsButtonToggleChecked(navigation.getAlleFilter()); - isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter()); - isOdsButtonToggleNotChecked(navigation.getUnassignedFilter()); - }); - - it('should filter List', () => { - haveLength(vorgangList.getItems(), LIST_SIZE - 12); - exist(vorgangZuLoeschenAssignedInList.getRoot()); - exist(vorgangZuLoeschenUnassignedInList.getRoot()); - }); + testAlleFilterViewSelection(zuLoeschenView, [vorgangZuLoeschenAssignedInList, vorgangZuLoeschenUnassignedInList]); }); describe('Wiedervorlagen', () => { + testAlleFilterViewSelection(wiedervorlagenView, [vorgangAngenommenUnassignedInList, vorgangAbgeschlossenAssignedInList]); + }); + + function testAlleFilterViewSelection(view: VorgangViewE2EComponent, listItems: VorgangListItemE2EComponent[]): void { + testViewSelection(view); + testOtherViewsAreUnselected(view); + testAlleFilterIsSelected(); + testVorgangListItem(listItems); + } + + function testViewSelection(view: VorgangViewE2EComponent): void { it('should set selected after click', () => { - wiedervorlagenView.getRoot().click(); + view.getRoot().click(); waitForSpinnerToDisappear(); - isSelected(wiedervorlagenView.getRoot()); + isSelected(view.getRoot()); }); + } + function testOtherViewsAreUnselected(selectedView: VorgangViewE2EComponent): void { it('should unselect other views', () => { - isNotSelected(neuView.getRoot()); - isNotSelected(angenommenView.getRoot()); - isNotSelected(inBearbeitungView.getRoot()); - isNotSelected(beschiedenView.getRoot()); - isNotSelected(abgeschlossenView.getRoot()); - isNotSelected(verworfenView.getRoot()); - isNotSelected(zuLoeschenView.getRoot()); - isNotSelected(vorgangListView.getRoot()); - isNotSelected(sucheView.getRoot()); + ALL_VIEW_COMPONENTS.filter((view: VorgangViewE2EComponent) => view != selectedView).forEach( + (view: VorgangViewE2EComponent) => isNotSelected(view.getRoot()), + ); }); + } + function testAlleFilterIsSelected(): void { it('should keep filter selection', () => { isOdsButtonToggleChecked(navigation.getAlleFilter()); isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter()); isOdsButtonToggleNotChecked(navigation.getUnassignedFilter()); }); + } + function testVorgangListItem(listItems: VorgangListItemE2EComponent[]): void { it('should filter List', () => { - haveLength(vorgangList.getItems(), 2); - - exist(vorgangAngenommenUnassignedInList.getRoot()); - exist(vorgangAbgeschlossenAssignedInList.getRoot()); + haveLength(vorgangList.getItems(), LIST_SIZE - 14); + listItems.forEach((item: VorgangListItemE2EComponent) => exist(item.getRoot())); }); - }); + } describe('VorgangList', () => { it('should set selected after click', () => { @@ -571,6 +430,7 @@ describe('Vorgang views and filter', () => { isNotSelected(inBearbeitungView.getRoot()); isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); + isNotSelected(weitergeleitetView.getRoot()); isNotSelected(zuLoeschenView.getRoot()); isNotSelected(verworfenView.getRoot()); isNotSelected(sucheView.getRoot()); @@ -595,22 +455,8 @@ describe('Vorgang views and filter', () => { isSelected(sucheView.getRoot()); }); - it('should unselect other views', () => { - isNotSelected(neuView.getRoot()); - isNotSelected(angenommenView.getRoot()); - isNotSelected(inBearbeitungView.getRoot()); - isNotSelected(beschiedenView.getRoot()); - isNotSelected(abgeschlossenView.getRoot()); - isNotSelected(zuLoeschenView.getRoot()); - isNotSelected(verworfenView.getRoot()); - isNotSelected(vorgangListView.getRoot()); - }); - - it('should keep filter selection', () => { - isOdsButtonToggleChecked(navigation.getAlleFilter()); - isOdsButtonToggleNotChecked(navigation.getMeineVorgaengeFilter()); - isOdsButtonToggleNotChecked(navigation.getUnassignedFilter()); - }); + testOtherViewsAreUnselected(sucheView); + testAlleFilterIsSelected(); it('should show message', () => { haveText(vorgangList.getEmptySucheMessage(), 'Bitte geben Sie einen Suchbegriff ein.'); @@ -643,6 +489,7 @@ describe('Vorgang views and filter', () => { isNotSelected(inBearbeitungView.getRoot()); isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); + isNotSelected(weitergeleitetView.getRoot()); isNotSelected(verworfenView.getRoot()); isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); @@ -892,11 +739,11 @@ describe('Vorgang views and filter', () => { vorgangSearch.doSearch(searchString); } - function isNotSelected(element) { + function isNotSelected(element: Cypress.Chainable<Element>): void { notContainClass(element, 'selected'); } - function isSelected(element) { + function isSelected(element: Cypress.Chainable<Element>): void { containClass(element, 'selected'); } }); diff --git a/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts b/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts index b4f477e2422f3bd0ea391d7d3259c29bd4b2a8a6..9e520f34e3c7641fc9dd0c0b2d6d4ff25ac39ab0 100644 --- a/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts +++ b/alfa-client/apps/alfa-e2e/src/support/cypress-helper.ts @@ -28,6 +28,7 @@ import { SmockerMocks } from '../model/smocker'; import { UsermanagerUserE2E } from '../model/usermanager'; import { VorgangE2E } from '../model/vorgang'; import { VorgangAttachedItemE2E } from '../model/vorgang-attached-item'; +import { waitForSpinnerToDisappear } from '../page-objects/main.po'; enum CypressTasks { DROP_COLLECTIONS = 'dropCollections', @@ -62,6 +63,7 @@ export function login(userJsonPath: string): void { cy.fixture(userJsonPath).then((user) => { cy.login(user.name, user.password); }); + waitForSpinnerToDisappear(); } export function visitUrl(url: string): void { @@ -170,6 +172,10 @@ export function scrollToWindowBottom(): void { cy.window().scrollTo('bottom'); } +export function scrollToWindowTop(): void { + cy.window().scrollTo('top'); +} + export function intercept(method: string, url: string): Cypress.Chainable<null> { return cy.intercept(method, url); } diff --git a/alfa-client/libs/api-root-shared/src/lib/api-root.linkrel.ts b/alfa-client/libs/api-root-shared/src/lib/api-root.linkrel.ts index 1ea618d47d18ed73a95030929bf0d581d41d3c6c..9d89989e6f5eb294ee5d7215b881a2584f3490db 100644 --- a/alfa-client/libs/api-root-shared/src/lib/api-root.linkrel.ts +++ b/alfa-client/libs/api-root-shared/src/lib/api-root.linkrel.ts @@ -46,6 +46,9 @@ export enum ApiRootLinkRel { ALLE_VORGAENGE_ABGESCHLOSSEN = 'vorgaenge_abgeschlossen_all', MEINE_VORGAENGE_ABGESCHLOSSEN = 'vorgaenge_abgeschlossen_my', UNASSIGNED_ABGESCHLOSSEN = 'vorgaenge_abgeschlossen_unassigned', + ALLE_VORGAENGE_WEITERGELEITET = 'vorgaenge_weitergeleitet_all', + MEINE_VORGAENGE_WEITERGELEITET = 'vorgaenge_weitergeleitet_my', + UNASSIGNED_WEITERGELEITET = 'vorgaenge_weitergeleitet_unassigned', ALLE_VORGAENGE_VERWORFEN = 'vorgaenge_verworfen_all', MEINE_VORGAENGE_VERWORFEN = 'vorgaenge_verworfen_my', UNASSIGNED_VERWORFEN = 'vorgaenge_verworfen_unassigned', diff --git a/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts b/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts index c3358acb510534afa4df0bca712d8b2ff8161bb5..c2e342d93cc22a74bd18be0d1c135b5e51606c50 100644 --- a/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts +++ b/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.spec.ts @@ -1054,6 +1054,12 @@ describe('Vorgang Reducer', () => { expect(vorgangStatistic.resource.byStatus.verworfen).toBeNull(); }); + it('should have null as weitergeleitet', () => { + const vorgangStatistic: StateResource<VorgangStatistic> = Reducer.initialState.vorgangStatistic; + + expect(vorgangStatistic.resource.byStatus.weitergeleitet).toBeNull(); + }); + it('should have null as zuLoeschen', () => { const vorgangStatistic: StateResource<VorgangStatistic> = Reducer.initialState.vorgangStatistic; diff --git a/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts b/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts index 0f200a551da43386ab80c67938d561a277bed11d..2601e8b7044b3d484d2556d1e418d1642dffa17f 100644 --- a/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts +++ b/alfa-client/libs/vorgang-shared/src/lib/+state/vorgang.reducer.ts @@ -126,6 +126,7 @@ function createEmptyVorgangStatistic(): VorgangStatistic { inBearbeitung: null, beschieden: null, verworfen: null, + weitergeleitet: null, zuLoeschen: null, }, wiedervorlagen: null, diff --git a/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.spec.ts b/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.spec.ts index 76c2de5b4f697f184580a6ec74c0ebaaaf1705be..c522a0f4fcc3a6dfb8ee4d11c373ad4030d1717a 100644 --- a/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.spec.ts +++ b/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.spec.ts @@ -21,11 +21,11 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { UrlSegment } from '@angular/router'; -import { faker } from '@faker-js/faker'; import { ApiRootLinkRel } from '@alfa-client/api-root-shared'; import { RouteData } from '@alfa-client/navigation-shared'; import { EMPTY_STRING } from '@alfa-client/tech-shared'; +import { UrlSegment } from '@angular/router'; +import { faker } from '@faker-js/faker'; import { createRouteData } from 'libs/navigation-shared/test/navigation-test-factory'; import { initialState, VorgangState } from './+state/vorgang.reducer'; import { @@ -130,9 +130,7 @@ describe('Vorgang Navigation Util', () => { it('should return value on uebersichtsSeite', () => { jest.spyOn(VorgangNavigationUtil, 'isUebersichtsSeite').mockReturnValue(true); - const vorgangFilter: VorgangFilter = getVorgangFilter( - buildWithRouteParam(VorgangFilter.ALLE), - ); + const vorgangFilter: VorgangFilter = getVorgangFilter(buildWithRouteParam(VorgangFilter.ALLE)); expect(vorgangFilter).toBe(VorgangFilter.ALLE); }); @@ -152,10 +150,7 @@ describe('Vorgang Navigation Util', () => { const vorgangView: VorgangView = VorgangView.ANGENOMMEN; jest.spyOn(VorgangNavigationUtil, 'getVorgangView').mockReturnValue(vorgangView); - const isSelected: boolean = VorgangNavigationUtil.isViewSelected( - createRouteData(), - vorgangView, - ); + const isSelected: boolean = VorgangNavigationUtil.isViewSelected(createRouteData(), vorgangView); expect(isSelected).toBeTruthy(); }); @@ -164,10 +159,7 @@ describe('Vorgang Navigation Util', () => { const vorgangView: VorgangView = VorgangView.ANGENOMMEN; jest.spyOn(VorgangNavigationUtil, 'getVorgangView').mockReturnValue(VorgangView.NEU); - const isSelected: boolean = VorgangNavigationUtil.isViewSelected( - createRouteData(), - vorgangView, - ); + const isSelected: boolean = VorgangNavigationUtil.isViewSelected(createRouteData(), vorgangView); expect(isSelected).toBeFalsy(); }); @@ -198,7 +190,7 @@ describe('Vorgang Navigation Util', () => { const vorgangView: VorgangView = VorgangNavigationUtil.getVorgangView(routeData); - expect(vorgangView).toBe(6); + expect(vorgangView).toBe(VorgangView.VORGANG_LIST); }); it('should return VorgangView.NEU if routeData contains this view', () => { @@ -261,9 +253,7 @@ describe('Vorgang Navigation Util', () => { }); it('should build by given filter and view', () => { - jest - .spyOn(Storage, 'getViewFromLocalStorage') - .mockReturnValue(ROUTE_PARAM_BY_VORGANG_VIEW[VorgangView.ANGENOMMEN]); + jest.spyOn(Storage, 'getViewFromLocalStorage').mockReturnValue(ROUTE_PARAM_BY_VORGANG_VIEW[VorgangView.ANGENOMMEN]); jest .spyOn(Storage, 'getFilterFromLocalStorage') .mockReturnValue(ROUTE_PARAM_BY_VORGANG_FILTER[VorgangFilter.MEINE_VORGAENGE]); @@ -340,10 +330,7 @@ describe('Vorgang Navigation Util', () => { it('should build by meine vorgänge filter and view', () => { const state: VorgangState = { ...initialState, vorgangView: VorgangView.NEU }; - const routePath: string = buildVorgangListRouteWithVorgangFilter( - state, - VorgangFilter.MEINE_VORGAENGE, - ); + const routePath: string = buildVorgangListRouteWithVorgangFilter(state, VorgangFilter.MEINE_VORGAENGE); expect(routePath).toEqual('/meine/neu'); }); @@ -354,10 +341,7 @@ describe('Vorgang Navigation Util', () => { vorgangView: VorgangView.SEARCH, searchString: 'testSearchString', }; - const routePath: string = buildVorgangListRouteWithVorgangFilter( - state, - VorgangFilter.MEINE_VORGAENGE, - ); + const routePath: string = buildVorgangListRouteWithVorgangFilter(state, VorgangFilter.MEINE_VORGAENGE); expect(routePath).toEqual('/meine/search/testSearchString'); }); @@ -368,10 +352,7 @@ describe('Vorgang Navigation Util', () => { vorgangView: VorgangView.ANGENOMMEN, searchString: 'testSearchString', }; - const routePath: string = buildVorgangListRouteWithVorgangFilter( - state, - VorgangFilter.MEINE_VORGAENGE, - ); + const routePath: string = buildVorgangListRouteWithVorgangFilter(state, VorgangFilter.MEINE_VORGAENGE); expect(routePath).toEqual('/meine/angenommen'); }); @@ -406,19 +387,13 @@ describe('Vorgang Navigation Util', () => { }); it('return linkRel for Meine Vorgänge Filter', () => { - const linkRel: string = buildLinkRel( - VorgangFilter.MEINE_VORGAENGE, - VorgangView.VORGANG_LIST, - ); + const linkRel: string = buildLinkRel(VorgangFilter.MEINE_VORGAENGE, VorgangView.VORGANG_LIST); expect(linkRel).toBe('vorgaenge_my'); }); it('return linkRel for Nicht Zugewiesen Filter', () => { - const linkRel: string = buildLinkRel( - VorgangFilter.NICHT_ZUGEWIESEN, - VorgangView.VORGANG_LIST, - ); + const linkRel: string = buildLinkRel(VorgangFilter.NICHT_ZUGEWIESEN, VorgangView.VORGANG_LIST); expect(linkRel).toBe('vorgaenge_unassigned'); }); @@ -456,21 +431,13 @@ describe('Vorgang Navigation Util', () => { const vorgangView: VorgangView = VorgangView.NEU; it('should return routePath of view and filter', () => { - const routePath: string = buildVorgangFilterViewRoutePath( - vorgangFilter, - vorgangView, - EMPTY_STRING, - ); + const routePath: string = buildVorgangFilterViewRoutePath(vorgangFilter, vorgangView, EMPTY_STRING); expect(routePath).toBe('/alle/neu'); }); it('should return routePath of view and filter and searchString', () => { - const routePath: string = buildVorgangFilterViewRoutePath( - vorgangFilter, - vorgangView, - 'searchString', - ); + const routePath: string = buildVorgangFilterViewRoutePath(vorgangFilter, vorgangView, 'searchString'); expect(routePath).toBe('/alle/neu/searchString'); }); diff --git a/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.ts b/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.ts index d525cd4e9a1614ee19f2db106387e0ed2937fe5b..053d9eb1c84a2b396d86b45fbf8908b4790f76a9 100644 --- a/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.ts +++ b/alfa-client/libs/vorgang-shared/src/lib/vorgang-navigation.util.ts @@ -40,6 +40,7 @@ export const ANGENOMMEN_ROUTE_PARAM: string = 'angenommen'; export const IN_BEARBEITUNG_ROUTE_PARAM: string = 'in_bearbeitung'; export const BESCHIEDEN_ROUTE_PARAM: string = 'beschieden'; export const ABGESCHLOSSEN_ROUTE_PARAM: string = 'abgeschlossen'; +export const WEITERGELEITET_ROUTE_PARAM: string = 'weitergeleitet'; export const VERWORFEN_ROUTE_PARAM: string = 'verworfen'; export const WIEDERVORLAGEN_ROUTE_PARAM: string = 'wiedervorlagen'; export const UNGELESENE_NACHRICHTEN_ROUTE_PARAM: string = 'ungelesene_nachrichten'; @@ -54,6 +55,7 @@ export const ROUTE_PARAM_BY_VORGANG_VIEW: { [view: string]: string } = { [VorgangView.IN_BEARBEITUNG]: IN_BEARBEITUNG_ROUTE_PARAM, [VorgangView.BESCHIEDEN]: BESCHIEDEN_ROUTE_PARAM, [VorgangView.ABGESCHLOSSEN]: ABGESCHLOSSEN_ROUTE_PARAM, + [VorgangView.WEITERGELEITET]: WEITERGELEITET_ROUTE_PARAM, [VorgangView.VERWORFEN]: VERWORFEN_ROUTE_PARAM, [VorgangView.VORGANG_LIST]: EMPTY_STRING, [VorgangView.WIEDERVORLAGEN]: WIEDERVORLAGEN_ROUTE_PARAM, @@ -68,6 +70,7 @@ export const VORGANG_VIEW_BY_ROUTE_PARAM: { [routeParam: string]: VorgangView } [IN_BEARBEITUNG_ROUTE_PARAM]: VorgangView.IN_BEARBEITUNG, [BESCHIEDEN_ROUTE_PARAM]: VorgangView.BESCHIEDEN, [ABGESCHLOSSEN_ROUTE_PARAM]: VorgangView.ABGESCHLOSSEN, + [WEITERGELEITET_ROUTE_PARAM]: VorgangView.WEITERGELEITET, [VERWORFEN_ROUTE_PARAM]: VorgangView.VERWORFEN, [WIEDERVORLAGEN_ROUTE_PARAM]: VorgangView.WIEDERVORLAGEN, [UNGELESENE_NACHRICHTEN_ROUTE_PARAM]: VorgangView.UNGELESENE_NACHRICHTEN, @@ -115,9 +118,7 @@ export function isViewSelected(routeData: RouteData, vorgangView: VorgangView): export function getVorgangView(routeData: RouteData): VorgangView { const vorgangViewValue: string = VorgangNavigationUtil.getRouteUrlSegment(routeData, 1); if (VorgangNavigationUtil.isUebersichtsSeite(routeData)) { - return isNotUndefined(vorgangViewValue) ? - VORGANG_VIEW_BY_ROUTE_PARAM[vorgangViewValue] - : VorgangView.VORGANG_LIST; + return isNotUndefined(vorgangViewValue) ? VORGANG_VIEW_BY_ROUTE_PARAM[vorgangViewValue] : VorgangView.VORGANG_LIST; } return undefined; } @@ -133,9 +134,7 @@ export function isUebersichtsSeite(routeData: RouteData): boolean { } export function getRouteUrlSegment(routeData: RouteData, num: number): string { - return routeData.urlSegments.length > num ? - routeData.urlSegments[num].path.toString() - : undefined; + return routeData.urlSegments.length > num ? routeData.urlSegments[num].path.toString() : undefined; } export function buildBackButtonUrl(state: VorgangState): string { @@ -153,17 +152,11 @@ export function isStateEqualLocalStorage(state: VorgangState): boolean { ); } -export function buildVorgangListRoutePathWithFilter( - state: VorgangState, - filter: VorgangFilter, -): string { +export function buildVorgangListRoutePathWithFilter(state: VorgangState, filter: VorgangFilter): string { return VorgangNavigationUtil.buildVorgangListRouteWithVorgangFilter(state, filter); } -export function buildVorgangListRouteWithVorgangFilter( - state: VorgangState, - filter: VorgangFilter, -): string { +export function buildVorgangListRouteWithVorgangFilter(state: VorgangState, filter: VorgangFilter): string { let route = '/' + ROUTE_PARAM_BY_VORGANG_FILTER[filter]; if (state.vorgangView !== VorgangView.VORGANG_LIST) { @@ -198,9 +191,7 @@ export function buildLinkRelFromPathSegments(pathSegments: string[]): string { } const vorgangView: VorgangView = - isEmpty(pathSegments[1]) ? - VorgangView.VORGANG_LIST - : VORGANG_VIEW_BY_ROUTE_PARAM[pathSegments[1]]; + isEmpty(pathSegments[1]) ? VorgangView.VORGANG_LIST : VORGANG_VIEW_BY_ROUTE_PARAM[pathSegments[1]]; return buildLinkRel(vorgangFilter, vorgangView); } @@ -210,11 +201,7 @@ export function buildVorgangFilterViewRoutePath( vorgangView: VorgangView, searchString: string, ): string { - let baseRoutePath: string = - '/' + - ROUTE_PARAM_BY_VORGANG_FILTER[vorgangFilter] + - '/' + - ROUTE_PARAM_BY_VORGANG_VIEW[vorgangView]; + let baseRoutePath: string = '/' + ROUTE_PARAM_BY_VORGANG_FILTER[vorgangFilter] + '/' + ROUTE_PARAM_BY_VORGANG_VIEW[vorgangView]; if (isNotEmpty(searchString)) { return baseRoutePath + '/' + searchString; } diff --git a/alfa-client/libs/vorgang-shared/src/lib/vorgang.model.ts b/alfa-client/libs/vorgang-shared/src/lib/vorgang.model.ts index 8417137108330ec18fd817f11a55d134e9e47f24..956adad470e23174c4cd6360ab7853420a9e5cc9 100644 --- a/alfa-client/libs/vorgang-shared/src/lib/vorgang.model.ts +++ b/alfa-client/libs/vorgang-shared/src/lib/vorgang.model.ts @@ -118,6 +118,7 @@ export interface ByStatus { beschieden: number; abgeschlossen: number; verworfen: number; + weitergeleitet: number; zuLoeschen: number; } @@ -160,6 +161,7 @@ export enum VorgangView { ABGESCHLOSSEN, VERWORFEN, VORGANG_LIST, + WEITERGELEITET, WIEDERVORLAGEN, SEARCH, ZU_LOESCHEN, diff --git a/alfa-client/libs/vorgang-shared/test/vorgang.ts b/alfa-client/libs/vorgang-shared/test/vorgang.ts index 9eadf4c36b6fbb1e06bab1d81880a2d386db0246..0a98811ad59a31a8c735fa90e1efe5a296f6aceb 100644 --- a/alfa-client/libs/vorgang-shared/test/vorgang.ts +++ b/alfa-client/libs/vorgang-shared/test/vorgang.ts @@ -160,6 +160,7 @@ function createByStatus(): ByStatus { beschieden: faker.number.int(), abgeschlossen: faker.number.int(), verworfen: faker.number.int(), + weitergeleitet: faker.number.int(), zuLoeschen: faker.number.int(), }; } diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/_vorgang-views-menu.theme.scss b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/_vorgang-views-menu.theme.scss index 01889d5e0d21fe759a533c2415fe3ccfac84c804..b29f62b51b0da42f61a47a11583e6e11445e272e 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/_vorgang-views-menu.theme.scss +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/_vorgang-views-menu.theme.scss @@ -90,22 +90,15 @@ alfa-vorgang-view-item { border-color: #155ab4; } - &.angenommen { - background-color: #f6ebce; - border-color: #f1c14e; - } - + &.angenommen, &.in_bearbeitung { background-color: #f6ebce; border-color: #f1c14e; } - &.beschieden { - background-color: #d9eec5; - border-color: #7ccb2b; - } - - &.abgeschlossen { + &.beschieden, + &.abgeschlossen, + &.weitergeleitet { background-color: #d9eec5; border-color: #7ccb2b; } diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html index 21f2c7272fe3695da90ec1ffd5685265b2a0e4be..fde89f0449a26cb2ab766ff0c4eef29de14fd154 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.html @@ -28,10 +28,7 @@ <alfa-vorgang-view-item-container *ngIf=" apiRootResource - | hasAnyLink - : apiRootLinkRel.ALLE_VORGAENGE_NEU - : apiRootLinkRel.MEINE_VORGAENGE_NEU - : apiRootLinkRel.UNASSIGNED_NEU + | hasAnyLink: apiRootLinkRel.ALLE_VORGAENGE_NEU : apiRootLinkRel.MEINE_VORGAENGE_NEU : apiRootLinkRel.UNASSIGNED_NEU " data-test-id="vorgang-neu-view" label="Neu" @@ -100,6 +97,22 @@ > <div class="dot abgeschlossen"></div> </alfa-vorgang-view-item-container> + @if ( + apiRootResource + | hasAnyLink + : apiRootLinkRel.ALLE_VORGAENGE_WEITERGELEITET + : apiRootLinkRel.MEINE_VORGAENGE_WEITERGELEITET + : apiRootLinkRel.UNASSIGNED_WEITERGELEITET + ) { + <alfa-vorgang-view-item-container + data-test-id="vorgang-weitergeleitet-view" + label="Weitergeleitet" + [view]="vorgangView.WEITERGELEITET" + [count]="statistic.byStatus.weitergeleitet" + > + <div class="dot weitergeleitet"></div> + </alfa-vorgang-view-item-container> + } <alfa-vorgang-view-item-container *ngIf=" apiRootResource @@ -159,17 +172,11 @@ [view]="vorgangView.WIEDERVORLAGEN" [count]="statistic.wiedervorlagen" > - <alfa-wiedervorlage-icon - [isOverdue]="statistic.existsWiedervorlageOverdue" - ></alfa-wiedervorlage-icon> + <alfa-wiedervorlage-icon [isOverdue]="statistic.existsWiedervorlageOverdue"></alfa-wiedervorlage-icon> </alfa-vorgang-view-item-container> <alfa-vorgang-view-item-container *ngIf=" - apiRootResource - | hasAnyLink - : apiRootLinkRel.ALLE_VORGAENGE - : apiRootLinkRel.MEINE_VORGAENGE - : apiRootLinkRel.UNASSIGNED + apiRootResource | hasAnyLink: apiRootLinkRel.ALLE_VORGAENGE : apiRootLinkRel.MEINE_VORGAENGE : apiRootLinkRel.UNASSIGNED " data-test-id="vorgang-vorgang-list-view" label="Vorgangsliste" @@ -180,11 +187,7 @@ </alfa-vorgang-view-item-container> <alfa-vorgang-search-view-item-container *ngIf=" - apiRootResource - | hasAnyLink - : apiRootLinkRel.SEARCH_ALLE - : apiRootLinkRel.SEARCH_MEINE - : apiRootLinkRel.SEARCH_UNASSIGNED + apiRootResource | hasAnyLink: apiRootLinkRel.SEARCH_ALLE : apiRootLinkRel.SEARCH_MEINE : apiRootLinkRel.SEARCH_UNASSIGNED " data-test-id="vorgang-search-view" class="top-border" diff --git a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts index 002788d2e9ecf9fc8c9f0e23f9797b125c7edc8d..d7cd88c0faf1e5ca2ec114a6908733f27df88fe8 100644 --- a/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts +++ b/alfa-client/libs/vorgang/src/lib/vorgang-list-page-container/vorgang-list-page/vorgang-views-menu/vorgang-views-menu.component.spec.ts @@ -24,11 +24,7 @@ import { ApiRootLinkRel } from '@alfa-client/api-root-shared'; import { HasLinkPipe, createStateResource } from '@alfa-client/tech-shared'; import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils'; -import { - OzgcloudIconComponent, - OzgcloudSvgIconComponent, - PostfachIconComponent, -} from '@alfa-client/ui'; +import { OzgcloudIconComponent, OzgcloudSvgIconComponent, PostfachIconComponent } from '@alfa-client/ui'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { createApiRootResource } from 'libs/api-root-shared/test/api-root'; import { HasAnyLinkPipe } from 'libs/tech-shared/src/lib/pipe/has-any-link.pipe'; @@ -50,6 +46,7 @@ describe('VorgangViewsMenuComponent', () => { const inBearbeitungView: string = getDataTestIdOf('vorgang-in-bearbeitung-view'); const beschiedenView: string = getDataTestIdOf('vorgang-beschieden-view'); const abgeschlossenView: string = getDataTestIdOf('vorgang-abgeschlossen-view'); + const weitergeleitetView: string = getDataTestIdOf('vorgang-weitergeleitet-view'); const verworfenView: string = getDataTestIdOf('vorgang-verworfen-view'); const wiedervorlagenView: string = getDataTestIdOf('vorgang-wiedervorlagen-view'); const ungeleseneNachrichtenView: string = getDataTestIdOf('vorgang-ungelesene-nachrichten-view'); @@ -83,16 +80,15 @@ describe('VorgangViewsMenuComponent', () => { }); describe('neu view', () => { - it.each([ - ApiRootLinkRel.ALLE_VORGAENGE_NEU, - ApiRootLinkRel.MEINE_VORGAENGE_NEU, - ApiRootLinkRel.UNASSIGNED_NEU, - ])('should show if %s link exists', (linkRel: string) => { - component.apiRootResource = createApiRootResource([linkRel]); - fixture.detectChanges(); + it.each([ApiRootLinkRel.ALLE_VORGAENGE_NEU, ApiRootLinkRel.MEINE_VORGAENGE_NEU, ApiRootLinkRel.UNASSIGNED_NEU])( + 'should show if %s link exists', + (linkRel: string) => { + component.apiRootResource = createApiRootResource([linkRel]); + fixture.detectChanges(); - existsAsHtmlElement(fixture, neuView); - }); + existsAsHtmlElement(fixture, neuView); + }, + ); it('should hide if both links not exists', () => { component.apiRootResource = createApiRootResource(); @@ -182,6 +178,26 @@ describe('VorgangViewsMenuComponent', () => { }); }); + describe('weitergeleitet view', () => { + it.each([ + ApiRootLinkRel.ALLE_VORGAENGE_WEITERGELEITET, + ApiRootLinkRel.MEINE_VORGAENGE_WEITERGELEITET, + ApiRootLinkRel.UNASSIGNED_WEITERGELEITET, + ])('should show if %s link exists', (linkRel: string) => { + component.apiRootResource = createApiRootResource([linkRel]); + fixture.detectChanges(); + + existsAsHtmlElement(fixture, weitergeleitetView); + }); + + it('should hide if both links not exists', () => { + component.apiRootResource = createApiRootResource(); + fixture.detectChanges(); + + notExistsAsHtmlElement(fixture, beschiedenView); + }); + }); + describe('verworfen view', () => { it.each([ ApiRootLinkRel.ALLE_VORGAENGE_VERWORFEN, @@ -203,16 +219,15 @@ describe('VorgangViewsMenuComponent', () => { }); describe('wiedervorlagen view', () => { - it.each([ - ApiRootLinkRel.ALL_WIEDERVORLAGEN, - ApiRootLinkRel.MY_WIEDERVORLAGEN, - ApiRootLinkRel.UNASSIGNED_WIEDERVORLAGEN, - ])('should show if %s link exists', (linkRel: string) => { - component.apiRootResource = createApiRootResource([linkRel]); - fixture.detectChanges(); + it.each([ApiRootLinkRel.ALL_WIEDERVORLAGEN, ApiRootLinkRel.MY_WIEDERVORLAGEN, ApiRootLinkRel.UNASSIGNED_WIEDERVORLAGEN])( + 'should show if %s link exists', + (linkRel: string) => { + component.apiRootResource = createApiRootResource([linkRel]); + fixture.detectChanges(); - existsAsHtmlElement(fixture, wiedervorlagenView); - }); + existsAsHtmlElement(fixture, wiedervorlagenView); + }, + ); it('should hide if link not exists', () => { component.apiRootResource = createApiRootResource(); @@ -243,16 +258,15 @@ describe('VorgangViewsMenuComponent', () => { }); describe('vorgangList view', () => { - it.each([ - ApiRootLinkRel.ALLE_VORGAENGE, - ApiRootLinkRel.MEINE_VORGAENGE, - ApiRootLinkRel.UNASSIGNED, - ])('should show if %s link exists', (linkRel: string) => { - component.apiRootResource = createApiRootResource([linkRel]); - fixture.detectChanges(); + it.each([ApiRootLinkRel.ALLE_VORGAENGE, ApiRootLinkRel.MEINE_VORGAENGE, ApiRootLinkRel.UNASSIGNED])( + 'should show if %s link exists', + (linkRel: string) => { + component.apiRootResource = createApiRootResource([linkRel]); + fixture.detectChanges(); - existsAsHtmlElement(fixture, vorgangListView); - }); + existsAsHtmlElement(fixture, vorgangListView); + }, + ); it('should hide if link not exists', () => { component.apiRootResource = createApiRootResource(); @@ -263,16 +277,15 @@ describe('VorgangViewsMenuComponent', () => { }); describe('search view', () => { - it.each([ - ApiRootLinkRel.SEARCH_ALLE, - ApiRootLinkRel.SEARCH_MEINE, - ApiRootLinkRel.SEARCH_UNASSIGNED, - ])('should show if %s link exists', (linkRel: string) => { - component.apiRootResource = createApiRootResource([linkRel]); - fixture.detectChanges(); - - existsAsHtmlElement(fixture, searchView); - }); + it.each([ApiRootLinkRel.SEARCH_ALLE, ApiRootLinkRel.SEARCH_MEINE, ApiRootLinkRel.SEARCH_UNASSIGNED])( + 'should show if %s link exists', + (linkRel: string) => { + component.apiRootResource = createApiRootResource([linkRel]); + fixture.detectChanges(); + + existsAsHtmlElement(fixture, searchView); + }, + ); it('should hide if no link not exists', () => { component.apiRootResource = createApiRootResource();