From 4e1a2c405b3ebdb47263e10541221c4dc79f6883 Mon Sep 17 00:00:00 2001 From: Martin <git@mail.de> Date: Thu, 20 Mar 2025 13:40:40 +0100 Subject: [PATCH] OZG-7501 add e2e test for forwarding --- ...vorgang-forwarding-dialog.e2e.component.ts | 2 +- .../main-tests/forwarding/forwarding.cy.ts | 40 +++++++++++++++++++ .../apps/alfa-e2e/src/helper/app.helper.ts | 23 +++++++++++ .../helper/forwarding/forwarding.executor.ts | 16 ++++++++ .../helper/forwarding/forwarding.helper.ts | 15 +++++++ .../helper/forwarding/forwarding.navigator.ts | 17 ++++++++ .../src/helper/vorgang/vorgang.navigator.ts | 11 +++++ .../src/helper/vorgang/vorgang.verifier.ts | 23 +++++++++++ .../src/model/organisationseinheit.ts | 3 ++ .../forwarding-button.component.html | 2 +- .../forwarding-button.component.ts | 1 + .../forwarding-dialog.component.html | 1 + 12 files changed, 152 insertions(+), 2 deletions(-) create mode 100644 alfa-client/apps/alfa-e2e/src/e2e/main-tests/forwarding/forwarding.cy.ts create mode 100644 alfa-client/apps/alfa-e2e/src/helper/app.helper.ts create mode 100644 alfa-client/apps/alfa-e2e/src/helper/forwarding/forwarding.executor.ts create mode 100644 alfa-client/apps/alfa-e2e/src/helper/forwarding/forwarding.helper.ts create mode 100644 alfa-client/apps/alfa-e2e/src/helper/forwarding/forwarding.navigator.ts create mode 100644 alfa-client/apps/alfa-e2e/src/model/organisationseinheit.ts diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forwarding-dialog.e2e.component.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forwarding-dialog.e2e.component.ts index 27fbc0aa69..7f5d897628 100644 --- a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forwarding-dialog.e2e.component.ts +++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-forwarding-dialog.e2e.component.ts @@ -2,7 +2,7 @@ export class ForwardingDialogE2EComponent { private readonly root: string = 'forwarding-dialog'; private readonly cancelButton: string = 'cancel-dialog-button'; private readonly cancelIconButton: string = 'cancel-dialog-icon-button'; - private readonly forwardingButton: string = 'forwarding-button'; + private readonly forwardingButton: string = 'forwarding-dialog-forwarding-button'; private readonly searchText: string = 'instant_search-text-input'; private readonly searchEntry: string = 'item-button'; private readonly forwardingItem: string = 'forwarding-item'; diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/forwarding/forwarding.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/forwarding/forwarding.cy.ts new file mode 100644 index 0000000000..38dc17bb68 --- /dev/null +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/forwarding/forwarding.cy.ts @@ -0,0 +1,40 @@ +import { registerLocaleData } from '@angular/common'; +import localeDe from '@angular/common/locales/de'; +import localeDeExtra from '@angular/common/locales/extra/de'; +import { E2EAppHelper } from 'apps/alfa-e2e/src/helper/app.helper'; +import { E2EForwardingHelper } from 'apps/alfa-e2e/src/helper/forwarding/forwarding.helper'; +import { E2EOrganisationsEinheit } from 'apps/alfa-e2e/src/model/organisationseinheit'; +import { E2EVorgangVerifier } from '../../../helper/vorgang/vorgang.verifier'; +import { VorgangE2E } from '../../../model/vorgang'; +import { dropCollections } from '../../../support/cypress-helper'; +import { createVorgang, initVorgang } from '../../../support/vorgang-util'; + +registerLocaleData(localeDe, 'de', localeDeExtra); + +describe('Vorgang weiterleiten', () => { + const appHelper: E2EAppHelper = new E2EAppHelper(); + + const vorgangVerifier: E2EVorgangVerifier = new E2EVorgangVerifier(); + + const forwardingHelper: E2EForwardingHelper = new E2EForwardingHelper(); + + const vorgang: VorgangE2E = { ...createVorgang(), name: 'Weiterleitung' }; + + before(() => { + initVorgang(vorgang); + + appHelper.loginAsSabine(); + }); + + after(() => { + dropCollections(); + }); + + it('should disable all functions after successfully forwarding', () => { + forwardingHelper.openForwarding(vorgang.name); + + forwardingHelper.forwardTo(E2EOrganisationsEinheit.HAMBURG_STADTENTWAESSERUNG); + + vorgangVerifier.verifyVorgangIsLocked(); + }); +}); diff --git a/alfa-client/apps/alfa-e2e/src/helper/app.helper.ts b/alfa-client/apps/alfa-e2e/src/helper/app.helper.ts new file mode 100644 index 0000000000..e264eb98df --- /dev/null +++ b/alfa-client/apps/alfa-e2e/src/helper/app.helper.ts @@ -0,0 +1,23 @@ +import { VorgangListE2EComponent } from '../components/vorgang/vorgang-list.e2e.component'; +import { MainPage, waitForSpinnerToDisappear } from '../page-objects/main.po'; +import { exist } from '../support/cypress.util'; +import { loginAsSabine } from '../support/user-util'; + +export class E2EAppHelper { + private readonly mainPage: MainPage = new MainPage(); + private readonly vorgangList: VorgangListE2EComponent = new VorgangListE2EComponent(); + + public loginAsSabine(): void { + loginAsSabine(); + this.waitAfterLogin(); + } + + private waitAfterLogin(): void { + waitForSpinnerToDisappear(); + exist(this.vorgangList.getRoot()); + } + + public navigateToDomain(): void { + this.mainPage.getHeader().getLogo().click(); + } +} diff --git a/alfa-client/apps/alfa-e2e/src/helper/forwarding/forwarding.executor.ts b/alfa-client/apps/alfa-e2e/src/helper/forwarding/forwarding.executor.ts new file mode 100644 index 0000000000..22295bb180 --- /dev/null +++ b/alfa-client/apps/alfa-e2e/src/helper/forwarding/forwarding.executor.ts @@ -0,0 +1,16 @@ +import { ForwardingDialogE2EComponent } from '../../components/vorgang/vorgang-forwarding-dialog.e2e.component'; +import { waitForSpinnerToDisappear } from '../../page-objects/main.po'; +import { exist } from '../../support/cypress.util'; + +export class E2EForwardingExecutor { + private readonly forwardingDialog = new ForwardingDialogE2EComponent(); + + public fillForwardingDialog(organisationsEinheit: string): void { + this.forwardingDialog.getSearchText().type(organisationsEinheit); + waitForSpinnerToDisappear(); + this.forwardingDialog.clickSearchEntry(0); + exist(this.forwardingDialog.getForwardingItem()); + this.forwardingDialog.getForwardingButton().click(); + waitForSpinnerToDisappear(); + } +} diff --git a/alfa-client/apps/alfa-e2e/src/helper/forwarding/forwarding.helper.ts b/alfa-client/apps/alfa-e2e/src/helper/forwarding/forwarding.helper.ts new file mode 100644 index 0000000000..218fd6e714 --- /dev/null +++ b/alfa-client/apps/alfa-e2e/src/helper/forwarding/forwarding.helper.ts @@ -0,0 +1,15 @@ +import { E2EForwardingExecutor } from './forwarding.executor'; +import { E2EForwardingNavigator } from './forwarding.navigator'; + +export class E2EForwardingHelper { + private readonly executor: E2EForwardingExecutor = new E2EForwardingExecutor(); + private readonly navigator: E2EForwardingNavigator = new E2EForwardingNavigator(); + + public openForwarding(vorgangName: string): void { + this.navigator.openForwardDialog(vorgangName); + } + + public forwardTo(orgnisationsEinheit: string): void { + this.executor.fillForwardingDialog(orgnisationsEinheit); + } +} diff --git a/alfa-client/apps/alfa-e2e/src/helper/forwarding/forwarding.navigator.ts b/alfa-client/apps/alfa-e2e/src/helper/forwarding/forwarding.navigator.ts new file mode 100644 index 0000000000..3400d79516 --- /dev/null +++ b/alfa-client/apps/alfa-e2e/src/helper/forwarding/forwarding.navigator.ts @@ -0,0 +1,17 @@ +import { VorgangFormularButtonsE2EComponent } from '../../components/vorgang/vorgang-formular-buttons.e2e.components'; +import { ForwardingDialogE2EComponent } from '../../components/vorgang/vorgang-forwarding-dialog.e2e.component'; +import { exist } from '../../support/cypress.util'; +import { E2EVorgangNavigator } from '../vorgang/vorgang.navigator'; + +export class E2EForwardingNavigator { + private readonly vorgangNavigator: E2EVorgangNavigator = new E2EVorgangNavigator(); + + private readonly formularButtons: VorgangFormularButtonsE2EComponent = new VorgangFormularButtonsE2EComponent(); + private readonly forwardingDialog: ForwardingDialogE2EComponent = new ForwardingDialogE2EComponent(); + + public openForwardDialog(vorgangName: string): void { + this.vorgangNavigator.openVorgangDetailByName(vorgangName); + this.formularButtons.getForwardButton().click(); + exist(this.forwardingDialog.getRoot()); + } +} diff --git a/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.navigator.ts b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.navigator.ts index 7b4fc54b19..3225f82b8a 100644 --- a/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.navigator.ts +++ b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.navigator.ts @@ -1,8 +1,12 @@ import { VorgangListE2EComponent } from '../../components/vorgang/vorgang-list.e2e.component'; import { waitForSpinnerToDisappear } from '../../page-objects/main.po'; +import { exist } from '../../support/cypress.util'; +import { E2EAppHelper } from '../app.helper'; import { E2EVorgangVerifier } from './vorgang.verifier'; export class E2EVorgangNavigator { + private readonly appHelper: E2EAppHelper = new E2EAppHelper(); + private readonly verifier: E2EVorgangVerifier = new E2EVorgangVerifier(); private readonly vorgangListPage = new VorgangListE2EComponent(); @@ -12,4 +16,11 @@ export class E2EVorgangNavigator { waitForSpinnerToDisappear(); this.verifier.verifyVorgangDetailOpen(vorgangName); } + + public openVorgang(vorgangName: string): void { + this.appHelper.navigateToDomain(); + waitForSpinnerToDisappear(); + exist(this.vorgangListPage.getRoot()); + this.openVorgangDetailByName(vorgangName); + } } diff --git a/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.verifier.ts b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.verifier.ts index c42945065f..d8e8e39394 100644 --- a/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.verifier.ts +++ b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.verifier.ts @@ -1,8 +1,10 @@ +import { VorgangFormularButtonsE2EComponent } from '../../components/vorgang/vorgang-formular-buttons.e2e.components'; import { VorgangPage } from '../../page-objects/vorgang.po'; import { contains, exist, notExist } from '../../support/cypress.util'; export class E2EVorgangVerifier { private readonly vorgangPage: VorgangPage = new VorgangPage(); + private readonly formularButtons: VorgangFormularButtonsE2EComponent = new VorgangFormularButtonsE2EComponent(); public verifyVorgangDetailOpen(vorgangName: string): void { exist(this.vorgangPage.getVorgangDetailHeader().getRoot()); @@ -16,4 +18,25 @@ export class E2EVorgangVerifier { public verifyNoForwardingButtonExists(): void { notExist(this.vorgangPage.getFormularButtons().getForwardButton()); } + + public verifyVorgangIsLocked(): void { + this.verifyFormularButtonsNotVisible(); + notExist(this.vorgangPage.getWiedervorlagenContainer().getCreateWiedervorlageButton()); + notExist(this.vorgangPage.getKommentarContainer().getHinzufuegenButton()); + notExist(this.vorgangPage.getPostfachMailcontainer().getCreateButtonWithText()); + notExist(this.vorgangPage.getPostfachMailcontainer().getCreateButtonWithoutText()); + } + + private verifyFormularButtonsNotVisible(): void { + notExist(this.formularButtons.getAbschliessenButton()); + notExist(this.formularButtons.getBearbeitenButton()); + notExist(this.formularButtons.getBescheidenButton()); + notExist(this.formularButtons.getEndgueltigLoeschenButton()); + notExist(this.formularButtons.getForwardButton()); + notExist(this.formularButtons.getLoeschAnforderungZuruecknehmenButton()); + notExist(this.formularButtons.getVerwerfenButton()); + notExist(this.formularButtons.getWiedereroeffnenButton()); + notExist(this.formularButtons.getZurueckholenButton()); + notExist(this.formularButtons.getZurueckstellenButton()); + } } diff --git a/alfa-client/apps/alfa-e2e/src/model/organisationseinheit.ts b/alfa-client/apps/alfa-e2e/src/model/organisationseinheit.ts new file mode 100644 index 0000000000..302f3c4018 --- /dev/null +++ b/alfa-client/apps/alfa-e2e/src/model/organisationseinheit.ts @@ -0,0 +1,3 @@ +export enum E2EOrganisationsEinheit { + HAMBURG_STADTENTWAESSERUNG = 'Wasserwerk - Hamburg Wasser - Hamburger Stadtentwässerung', +} diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html index 1b36245dd2..56351e1e67 100644 --- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.html @@ -4,7 +4,7 @@ (clickEmitter)="clickEmitter.emit()" text="Weiterleiten" variant="outline" - dataTestId="forwarding-button" + [dataTestId]="dataTestId" data-test-id="forwarding-button-container" > <ods-forward-vorgang-icon icon class="fill-primary" /> diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.ts b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.ts index 767fe5e4ce..6d4eb151c9 100644 --- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.ts +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-button/forwarding-button.component.ts @@ -13,6 +13,7 @@ import { ForwardVorgangIconComponent } from '@ods/system'; export class ForwardingButtonComponent { @Input() disabled: boolean; @Input() stateResource: StateResource<CommandResource>; + @Input({ required: true }) dataTestId: string; @Output() clickEmitter: EventEmitter<void> = new EventEmitter(); } diff --git a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html index 5aaf99a340..ebe39314d3 100644 --- a/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html +++ b/alfa-client/libs/forwarding/src/lib/forwarding-dialog-container/forwarding-dialog/forwarding-dialog.component.html @@ -16,6 +16,7 @@ [disabled]="!selectedSearchResult" (clickEmitter)="onForwarding()" data-test-id="foward-dialog-forward-button" + dataTestId="forwarding-dialog-forwarding-button" /> <ods-cancel-dialog-button /> </div> -- GitLab