diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-list.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-list.e2e.component.ts index 10efef4c42cc6f09830481855be78f0ac068ab83..2888ff32d20a5f14a0448f1f33401d859dadac57 100644 --- a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-list.e2e.component.ts +++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-list.e2e.component.ts @@ -32,6 +32,7 @@ export class VorgangListE2EComponent { private readonly noRoleMessage: string = 'user-no-role-message'; private readonly emptyListText: string = 'empty-list-text'; private readonly emptyList: string = 'empty-list'; + private readonly archivedStatus: string = 'vorgang-list-item-archive-status'; public getRoot() { return cy.getTestElement(this.root); @@ -57,4 +58,8 @@ export class VorgangListE2EComponent { public getEmptySucheMessage() { return cy.getTestElement(this.emptyListText); } + + public getArchivedStatus(): Cypress.Chainable<JQuery<HTMLElement>> { + return cy.getTestElement(this.archivedStatus); + } } diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-more-menu.e2e.components.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-more-menu.e2e.components.ts index c32077d00937f2981d7f15a8f78ffe7d0cd717d5..fc9d58e57cd22a0057c706bca6f4e71010f3d0df 100644 --- a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-more-menu.e2e.components.ts +++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-more-menu.e2e.components.ts @@ -25,10 +25,9 @@ export class VorgangMoreMenuE2EComponent { private readonly rootLocator: string = 'more-menu'; private readonly buttonLocator: string = 'more-menu-button'; - private readonly exportierenItem: VorgangMoreMenuExportierenItemE2EComponent = - new VorgangMoreMenuExportierenItemE2EComponent(); - private readonly vorpruefenItem: VorgangMoreMenuVorpruefenItemE2EComponent = - new VorgangMoreMenuVorpruefenItemE2EComponent(); + private readonly exportierenItem: VorgangMoreMenuExportierenItemE2EComponent = new VorgangMoreMenuExportierenItemE2EComponent(); + private readonly vorpruefenItem: VorgangMoreMenuVorpruefenItemE2EComponent = new VorgangMoreMenuVorpruefenItemE2EComponent(); + private readonly archivierenItem: VorgangMoreMenuArchivierenItemE2EComponent = new VorgangMoreMenuArchivierenItemE2EComponent(); public getRoot() { return cy.getTestElementWithOid(this.rootLocator); @@ -50,17 +49,21 @@ export class VorgangMoreMenuE2EComponent { public getVorpruefenItem(): VorgangMoreMenuVorpruefenItemE2EComponent { return this.vorpruefenItem; } + + public getArchivierenItem(): VorgangMoreMenuArchivierenItemE2EComponent { + return this.archivierenItem; + } } export class VorgangMoreMenuExportierenItemE2EComponent { private readonly root: string = 'vorgang-exportieren-button'; private readonly button: string = 'export-vorgang'; - public getRoot() { + public getRoot(): Cypress.Chainable<JQuery<HTMLElement>> { return cy.getTestElementWithOid(this.root); } - public getButton() { + public getButton(): Cypress.Chainable<JQuery<HTMLElement>> { return this.getRoot().getTestElementWithOid(this.button); } } @@ -69,11 +72,46 @@ export class VorgangMoreMenuVorpruefenItemE2EComponent { private readonly root: string = 'vorgang-process-vorgang-button'; private readonly button: string = 'process-vorgang'; - public getRoot() { + public getRoot(): Cypress.Chainable<JQuery<HTMLElement>> { return cy.getTestElementWithOid(this.root); } - public getButton() { + public getButton(): Cypress.Chainable<JQuery<HTMLElement>> { + return this.getRoot().getTestElementWithOid(this.button); + } +} + +export class VorgangMoreMenuArchivierenItemE2EComponent { + private readonly root: string = 'vorgang-archive-button'; + private readonly button: string = 'archive-vorgang'; + private readonly archivierenConfirm: string = 'archive-confirmation-button'; + private readonly archivierenCancel: string = 'archive-cancel-button'; + + public getRoot(): Cypress.Chainable<JQuery<HTMLElement>> { + return cy.getTestElementWithOid(this.root); + } + + public getButton(): Cypress.Chainable<JQuery<HTMLElement>> { return this.getRoot().getTestElementWithOid(this.button); } + + public clickArchivieren(): void { + this.getButton().click({ force: true }); + } + + public getArchivierenConfirm(): Cypress.Chainable<JQuery<HTMLElement>> { + return cy.getTestElement(this.archivierenConfirm); + } + + public getArchivierenCancel(): Cypress.Chainable<JQuery<HTMLElement>> { + return cy.getTestElement(this.archivierenCancel); + } + + public confirmArchivieren(): void { + this.getArchivierenConfirm().click(); + } + + public cancelArchivieren(): void { + this.getArchivierenCancel().click(); + } } diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-xdomea/vorgang-archivieren.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-xdomea/vorgang-archivieren.cy.ts new file mode 100644 index 0000000000000000000000000000000000000000..06851ae9d48cea11990291ac2cca9362c51a0d4f --- /dev/null +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-xdomea/vorgang-archivieren.cy.ts @@ -0,0 +1,150 @@ +/* + * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den + * Ministerpräsidenten des Landes Schleswig-Holstein + * Staatskanzlei + * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung + * + * Lizenziert unter der EUPL, Version 1.2 oder - sobald + * diese von der Europäischen Kommission genehmigt wurden - + * Folgeversionen der EUPL ("Lizenz"); + * Sie dürfen dieses Werk ausschließlich gemäß + * dieser Lizenz nutzen. + * Eine Kopie der Lizenz finden Sie hier: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Sofern nicht durch anwendbare Rechtsvorschriften + * gefordert oder in schriftlicher Form vereinbart, wird + * die unter der Lizenz verbreitete Software "so wie sie + * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - + * ausdrücklich oder stillschweigend - verbreitet. + * Die sprachspezifischen Genehmigungen und Beschränkungen + * unter der Lizenz sind dem Lizenztext zu entnehmen. + */ +import { registerLocaleData } from '@angular/common'; +import localeDe from '@angular/common/locales/de'; +import localeDeExtra from '@angular/common/locales/extra/de'; +import { SnackBarE2EComponent } from 'apps/alfa-e2e/src/components/ui/snackbar.e2e.component'; +import { VorgangFormularButtonsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components'; +import { + VorgangMoreMenuArchivierenItemE2EComponent, + VorgangMoreMenuE2EComponent, +} from 'apps/alfa-e2e/src/components/vorgang/vorgang-more-menu.e2e.components'; +import { VorgangSubnavigationE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-subnavigation'; +import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component'; +import { VorgangE2E, VorgangStatusE2E } from '../../../model/vorgang'; +import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po'; +import { VorgangPage } from '../../../page-objects/vorgang.po'; +import { dropCollections, wait } from '../../../support/cypress-helper'; +import { exist, notExist } from '../../../support/cypress.util'; +import { loginAsSabine } from '../../../support/user-util'; +import { createVorgang, initVorgaenge } from '../../../support/vorgang-util'; + +registerLocaleData(localeDe, 'de', localeDeExtra); + +describe('Vorgang archivieren', () => { + const mainPage: MainPage = new MainPage(); + const snackBar: SnackBarE2EComponent = mainPage.getSnackBar(); + + const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList(); + + const vorgangPage: VorgangPage = new VorgangPage(); + const subnavigation: VorgangSubnavigationE2EComponent = vorgangPage.getSubnavigation(); + const vorgangMoreMenu: VorgangMoreMenuE2EComponent = vorgangPage.getMoreMenu(); + + const vorgangFormularButtons: VorgangFormularButtonsE2EComponent = vorgangPage.getFormularButtons(); + + const vorgangExportieren: VorgangE2E = { + ...createVorgang(), + status: VorgangStatusE2E.BESCHIEDEN, + name: 'DoArchivieren', + }; + + before(() => { + initVorgaenge([vorgangExportieren]); + + loginAsSabine(); + + waitForSpinnerToDisappear(); + exist(vorgangList.getRoot()); + }); + + after(() => { + dropCollections(); + }); + + describe('archive file', () => { + const archivierenItem: VorgangMoreMenuArchivierenItemE2EComponent = vorgangMoreMenu.getArchivierenItem(); + + it('should not show archived status on list page', () => { + notExist(vorgangList.getArchivedStatus()); + }); + + it('Open Vorgang-Detail-Page', () => { + vorgangList.getListItem(vorgangExportieren.name).getRoot().click(); + waitForSpinnerToDisappear(); + + exist(vorgangPage.getVorgangDetailHeader().getRoot()); + }); + + it('should not show "Archivieren" entry in Beschieden status', () => { + vorgangMoreMenu.getButton().click(); + + notExist(archivierenItem.getRoot()); + }); + + it('should show "Archivieren" button in Abgeschlossen status', () => { + vorgangMoreMenu.getButton().click({ force: true }); + vorgangFormularButtons.getAbschliessenButton().click(); + waitForSpinnerToDisappear(); + + snackBar.getCloseButton().click(); + vorgangMoreMenu.getButton().click(); + + exist(archivierenItem.getButton()); + }); + + it('should open popup with confirm button on clicking "Vorgang archivieren"', () => { + archivierenItem.clickArchivieren(); + + exist(archivierenItem.getArchivierenConfirm()); + }); + + it('should close popup on clicking Cancel, and still show more menu', () => { + archivierenItem.cancelArchivieren(); + + notExist(archivierenItem.getArchivierenConfirm()); + exist(vorgangMoreMenu.getRoot()); + }); + + it('should open popup again and archive Vorgang on confirmation', () => { + archivierenItem.clickArchivieren(); + archivierenItem.confirmArchivieren(); + + //ersetzen, sobald tatsächliche Archivierung geklärt ist; aktuell nur Workaround + wait(2000); + archivierenItem.cancelArchivieren(); + // + }); + + it('should show archived status on list page', () => { + subnavigation.getBackButton().click({ force: true }); + waitForSpinnerToDisappear(); + + exist(vorgangList.getArchivedStatus()); + }); + + it('should still show back button on details page', () => { + vorgangList.getListItem(vorgangExportieren.name).getRoot().click(); + waitForSpinnerToDisappear(); + + exist(subnavigation.getBackButton()); + }); + + it('should not show subnavigation buttons on details page', () => { + notExist(subnavigation.getCreateWiedervorlageIconButton()); + notExist(subnavigation.getAssignUserProfileIconButton()); + notExist(subnavigation.getPostfachMailIconButton()); + }); + }); +});