diff --git a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding.cy.ts index 8b346e0d75ba810435adc064d63adf36e2ef0991..82dd57a8ae88f5879ed473712a489e31520d0c0e 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forwarding.cy.ts @@ -1,34 +1,23 @@ import { registerLocaleData } from '@angular/common'; import localeDe from '@angular/common/locales/de'; import localeDeExtra from '@angular/common/locales/extra/de'; -import { VorgangFormularButtonsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components'; -import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component'; +import { E2EVorgangNavigator } from '../../../helper/vorgang/vorgang.navigator'; +import { E2EVorgangVerifier } from '../../../helper/vorgang/vorgang.verifier'; import { VorgangE2E } from '../../../model/vorgang'; -import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po'; -import { VorgangPage } from '../../../page-objects/vorgang.po'; import { dropCollections } from '../../../support/cypress-helper'; -import { exist, notExist } from '../../../support/cypress.util'; import { loginAsEmil } from '../../../support/user-util'; import { createVorgang, initVorgaenge } from '../../../support/vorgang-util'; registerLocaleData(localeDe, 'de', localeDeExtra); describe('Vorgang weiterleiten innerhalb der OzgCloud', () => { - const mainPage: MainPage = new MainPage(); - const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList(); - - const vorgangPage: VorgangPage = new VorgangPage(); - const vorgangFormularButtons: VorgangFormularButtonsE2EComponent = vorgangPage.getFormularButtons(); + const vorgangNavigator: E2EVorgangNavigator = new E2EVorgangNavigator(); + const vorgangVerifier: E2EVorgangVerifier = new E2EVorgangVerifier(); const vorgangWeiterleiten: VorgangE2E = { ...createVorgang(), name: 'Weiterleitung' }; before(() => { initVorgaenge([vorgangWeiterleiten]); - - loginAsEmil(); - - waitForSpinnerToDisappear(); - exist(vorgangList.getRoot()); }); after(() => { @@ -36,11 +25,18 @@ describe('Vorgang weiterleiten innerhalb der OzgCloud', () => { }); describe('Weiterleiten', () => { - it('should display Weiterleiten button in Status Neu', () => { - vorgangList.getListItem(vorgangWeiterleiten.name).getRoot().click(); - waitForSpinnerToDisappear(); - - notExist(vorgangFormularButtons.getForwardButton()); + describe('Emil', () => { + it('should login as Emil', () => { + loginAsEmil(); + }); + + it('should open vorgang', () => { + vorgangNavigator.openVorgangDetailByName(vorgangWeiterleiten.name); + }); + + it('should display Weiterleiten button in Status Neu', () => { + vorgangVerifier.verifyForwardingButtonExists(); + }); }); }); }); diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forwarding.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forwarding.cy.ts index 415799c611732fbe280decf67ded9242212306bd..d91019905c1bc53a44fb0a28e0fb882a416933f3 100644 --- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forwarding.cy.ts +++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forwarding.cy.ts @@ -3,6 +3,8 @@ import localeDe from '@angular/common/locales/de'; import localeDeExtra from '@angular/common/locales/extra/de'; import { VorgangFormularButtonsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components'; import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component'; +import { E2EVorgangNavigator } from '../../../helper/vorgang/vorgang.navigator'; +import { E2EVorgangVerifier } from '../../../helper/vorgang/vorgang.verifier'; import { VorgangE2E } from '../../../model/vorgang'; import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po'; import { VorgangPage } from '../../../page-objects/vorgang.po'; @@ -15,6 +17,9 @@ import { ForwardingDialogE2EComponent } from 'apps/alfa-e2e/src/components/vorga registerLocaleData(localeDe, 'de', localeDeExtra); describe('Vorgang weiterleiten', () => { + const vorgangNavigator: E2EVorgangNavigator = new E2EVorgangNavigator(); + const vorgangVerifier: E2EVorgangVerifier = new E2EVorgangVerifier(); + const mainPage: MainPage = new MainPage(); const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList(); @@ -45,7 +50,7 @@ describe('Vorgang weiterleiten', () => { vorgangList.getListItem(vorgangWeiterleiten.name).getRoot().click(); waitForSpinnerToDisappear(); - exist(vorgangFormularButtons.getForwardButton()); + vorgangVerifier.verifyForwardingButtonExists(); }); it('should open forwarding dialog on forward button click', () => { @@ -113,14 +118,14 @@ describe('Vorgang weiterleiten', () => { vorgangFormularButtons.getAnnehmenButton().click(); waitForSpinnerToDisappear(); - notExist(vorgangFormularButtons.getForwardButton()); + vorgangVerifier.verifyNoForwardingButtonExists(); }); it('should not display Weiterleiten button in status In Bearbeitung', () => { vorgangFormularButtons.getBearbeitenButton().click(); waitForSpinnerToDisappear(); - notExist(vorgangFormularButtons.getForwardButton()); + vorgangVerifier.verifyNoForwardingButtonExists(); }); }); @@ -134,11 +139,10 @@ describe('Vorgang weiterleiten', () => { exist(vorgangList.getRoot()); }); - it('should not display Weiterleiten button in Status In Neu', () => { - vorgangList.getListItem(vorgangWeiterleiten.name).getRoot().click(); - waitForSpinnerToDisappear(); + it('should display Weiterleiten button in Status In Neu', () => { + vorgangNavigator.openVorgangDetailByName(vorgangWeiterleiten.name); - notExist(vorgangFormularButtons.getForwardButton()); + vorgangVerifier.verifyForwardingButtonExists(); }); }); }); diff --git a/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.helper.ts b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.helper.ts new file mode 100644 index 0000000000000000000000000000000000000000..14855ec9447435b69b037074d1e17fb695c54ab4 --- /dev/null +++ b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.helper.ts @@ -0,0 +1,7 @@ +import { E2EVorgangNavigator } from './vorgang.navigator'; +import { E2EVorgangVerifier } from './vorgang.verifier'; + +export class E2EVorgangHelper { + private readonly verifier: E2EVorgangVerifier = new E2EVorgangVerifier(); + private readonly navigator: E2EVorgangNavigator = new E2EVorgangNavigator(); +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..7b4fc54b196ff4dc2c83ffbf029a8b063c6b1054 --- /dev/null +++ b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.navigator.ts @@ -0,0 +1,15 @@ +import { VorgangListE2EComponent } from '../../components/vorgang/vorgang-list.e2e.component'; +import { waitForSpinnerToDisappear } from '../../page-objects/main.po'; +import { E2EVorgangVerifier } from './vorgang.verifier'; + +export class E2EVorgangNavigator { + private readonly verifier: E2EVorgangVerifier = new E2EVorgangVerifier(); + + private readonly vorgangListPage = new VorgangListE2EComponent(); + + public openVorgangDetailByName(vorgangName: string): void { + this.vorgangListPage.getListItem(vorgangName).getRoot().click(); + waitForSpinnerToDisappear(); + this.verifier.verifyVorgangDetailOpen(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 new file mode 100644 index 0000000000000000000000000000000000000000..c42945065f7c18f03c4f74fbcbf2809c9b2a8021 --- /dev/null +++ b/alfa-client/apps/alfa-e2e/src/helper/vorgang/vorgang.verifier.ts @@ -0,0 +1,19 @@ +import { VorgangPage } from '../../page-objects/vorgang.po'; +import { contains, exist, notExist } from '../../support/cypress.util'; + +export class E2EVorgangVerifier { + private readonly vorgangPage: VorgangPage = new VorgangPage(); + + public verifyVorgangDetailOpen(vorgangName: string): void { + exist(this.vorgangPage.getVorgangDetailHeader().getRoot()); + contains(this.vorgangPage.getVorgangDetailHeader().getName(), vorgangName); + } + + public verifyForwardingButtonExists(): void { + exist(this.vorgangPage.getFormularButtons().getForwardButton()); + } + + public verifyNoForwardingButtonExists(): void { + notExist(this.vorgangPage.getFormularButtons().getForwardButton()); + } +} diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data-name/user-form-data-name.component.html b/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data-name/user-form-data-name.component.html index 978716b86eca55e97a7f9d636a6ae2046823d820..ef80c0f57a92cc1f284caa5b6b0afe83e6973f1d 100644 --- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data-name/user-form-data-name.component.html +++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-data/user-form-data-name/user-form-data-name.component.html @@ -1,4 +1,4 @@ -<p class="flex flex-col gap-2 text-text"> +<p class="flex flex-col gap-0.5 text-text"> <span class="font-medium">Benutzername</span> <span>{{ userName }}</span> </p> diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.html b/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.html index a8931fbcb6be03bbd9b0a5c97b7194e2e9605453..1dda4319a297a47b72c1d1c8bc6e1401a796a7ee 100644 --- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.html +++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.html @@ -1,7 +1,7 @@ <h2 class="heading-2 mt-4">Rollen für OZG-Cloud</h2> <div [formGroup]="formGroupParent"> - <div [formGroupName]="UserFormService.CLIENT_ROLES" class="mb-8 flex gap-56"> - <div [formGroupName]="UserFormService.ADMINISTRATION_GROUP" class="flex flex-col gap-2"> + <div [formGroupName]="UserFormService.CLIENT_ROLES" class="mb-8 flex flex-col gap-4 md:flex-row"> + <div [formGroupName]="UserFormService.ADMINISTRATION_GROUP" class="flex flex-1 flex-col gap-2"> <h3 class="text-md block font-medium text-text">Administration</h3> <div class="flex items-center gap-2"> <ods-checkbox-editor [formControlName]="UserFormService.ADMIN" label="Admin" inputId="admin" /> @@ -26,7 +26,7 @@ </button> </div> </div> - <div [formGroupName]="UserFormService.ALFA_GROUP" class="flex flex-col gap-2"> + <div [formGroupName]="UserFormService.ALFA_GROUP" class="flex flex-1 flex-col gap-2"> <h3 class="text-md block font-medium text-text">Alfa</h3> <div class="flex items-center gap-2"> <ods-checkbox-editor [formControlName]="UserFormService.LOESCHEN" label="Löschen" inputId="delete" /> diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.html b/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.html index 1976f243ef7a93f13201789425c4c04a2e780a91..132dc6ba2c8eb40cfc12c0f163ba94092afca6a2 100644 --- a/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.html +++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form.component.html @@ -32,7 +32,7 @@ [formGroupParent]="formService.form" [formGroupOrganisationsEinheiten]="formService.getOrganisationsEinheitenGroup()" /> - <div class="flex justify-between"> + <div class="mb-6 flex justify-between"> <admin-user-form-save-button /> @if (isPatch) { <admin-delete-open-dialog-button data-test-id="delete-button-container" /> diff --git a/alfa-client/libs/design-component/src/lib/form/formcontrol-editor.abstract.component.ts b/alfa-client/libs/design-component/src/lib/form/formcontrol-editor.abstract.component.ts index 0e77b51c101f31ac094b7c59f6fbae9834f76b9a..89c0cd5fb117bc5c11c2aa254dfd810ec7616b32 100644 --- a/alfa-client/libs/design-component/src/lib/form/formcontrol-editor.abstract.component.ts +++ b/alfa-client/libs/design-component/src/lib/form/formcontrol-editor.abstract.component.ts @@ -64,12 +64,15 @@ export abstract class FormControlEditorAbstractComponent implements ControlValue this.fieldControl.setValue(text); this.setErrors(); } + registerOnChange(fn: (text: string | Date) => {}): void { this.onChange = fn; } + registerOnTouched(fn: () => {}): void { this.onTouched = fn; } + setDisabledState?(isDisabled: boolean): void { this.disabled = isDisabled; } @@ -83,9 +86,9 @@ export abstract class FormControlEditorAbstractComponent implements ControlValue if (this.control) { this.fieldControl.setErrors(this.control.errors); if (this.control.invalid) { - this._updateInvalidParams(); this.fieldControl.markAsTouched(); } + this._updateInvalidParams(); } }