Skip to content
Snippets Groups Projects
benutzer.e2e.component.ts 6.79 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*
     * 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 'cypress-real-events';
    
    import { convertToDataTestId } from '../../support/tech-util';
    
    //TODO BenutzerListPage erstellen welche den Button und die Liste enthaelt.
    
    export class BenutzerListE2EComponent {
    
    Martin's avatar
    Martin committed
      private readonly headline: string = 'user-list-headline';
    
      private readonly list: string = 'user-list';
    
    Albert Bruns's avatar
    Albert Bruns committed
      private readonly benutzerHinzufuegenButton: string = 'add-user-button';
    
    
      public getHeadline(): Cypress.Chainable<Element> {
    
    Martin's avatar
    Martin committed
        return cy.getTestElement(this.headline);
    
      public getList(): Cypress.Chainable<Element> {
        return cy.getTestElement(this.list);
    
      public getHinzufuegenButton(): Cypress.Chainable<Element> {
        return cy.getTestElement(this.benutzerHinzufuegenButton);
      }
    
    
      public getItem(userName: string): BenutzerListItemE2EComponent {
        return new BenutzerListItemE2EComponent(userName);
    
    }
    
    export class BenutzerListItemE2EComponent {
      private root: string;
    
      private fullName: string = 'fullname';
      private email: string = 'email';
      private userName: string = 'username';
    
      private roles: string = 'roles';
    
      private organisationsEinheiten: string = 'organisations-einheiten';
      private noOrganisationsEinheitenText: string = 'no-organisations-einheit-text';
    
      constructor(userName: string) {
        this.root = convertToDataTestId(userName) + '-user-entry';
    
    Cord Westhoff's avatar
    Cord Westhoff committed
      }
    
    
      public getRoot(): Cypress.Chainable<Element> {
        return cy.getTestElement(this.root);
      }
    
      public getRoles(): Cypress.Chainable<Element> {
        return this.getRoot().getTestElementWithClass(this.roles);
      }
    
      public getOrganisationsEinheiten(): Cypress.Chainable<Element> {
        return this.getRoot().getTestElementWithClass(this.organisationsEinheiten);
    
      public getNoOrganisationsEinheitText(): Cypress.Chainable<Element> {
        return this.getRoot().getTestElementWithClass(this.noOrganisationsEinheitenText);
    
      public getFullName(): Cypress.Chainable<Element> {
        return this.getRoot().getTestElementWithClass(this.fullName);
    
      public getEMail(): Cypress.Chainable<Element> {
        return this.getRoot().getTestElementWithClass(this.email);
    
    OZGCloud's avatar
    OZGCloud committed
    
    
      public getUserName(): Cypress.Chainable<Element> {
        return this.getRoot().getTestElementWithClass(this.userName);
    
    OZGCloud's avatar
    OZGCloud committed
      }
    
    }
    
    export class BenutzerE2EComponent {
      private readonly headline: string = 'benutzer-form-headline';
    
    OZGCloud's avatar
    OZGCloud committed
    
    
      private readonly userVorname: string = 'Vorname-text-input';
      private readonly userNachname: string = 'Nachname-text-input';
      private readonly userBenutzername: string = 'Benutzername-text-input';
      private readonly userMail: string = 'E-Mail-text-input';
    
    
      private readonly adminCheckboxLabel: string = 'Admin';
      private readonly loeschenCheckboxLabel: string = 'Löschen';
      private readonly userCheckboxLabel: string = 'User';
      private readonly postCheckboxLabel: string = 'Poststelle';
    
      private readonly datenbeauftragungLabel: string = 'Datenbeauftragung';
    
    
      private readonly organisationsEinheitCheckboxSuffix: string = '-checkbox-editor';
    
      private readonly saveButton: string = 'save-button';
    
      private readonly deleteButton: string = 'delete-button';
    
      public getHeadline(): Cypress.Chainable<Element> {
        return cy.getTestElement(this.headline);
      }
    
    
      public getVornameInput(): Cypress.Chainable<Element> {
        return cy.getTestElement(this.userVorname);
    
    OZGCloud's avatar
    OZGCloud committed
      public getNachnameInput(): Cypress.Chainable<Element> {
        return cy.getTestElement(this.userNachname);
      }
    
      public getBenutzernameInput(): Cypress.Chainable<Element> {
        return cy.getTestElement(this.userBenutzername);
      }
    
      public getMailInput(): Cypress.Chainable<Element> {
        return cy.getTestElement(this.userMail);
      }
    
      public getAdminCheckbox(): BenutzerCheckboxE2EComponent {
        return new BenutzerCheckboxE2EComponent(this.adminCheckboxLabel);
    
      public getLoeschenCheckbox(): BenutzerCheckboxE2EComponent {
        return new BenutzerCheckboxE2EComponent(this.loeschenCheckboxLabel);
    
      public getUserCheckbox(): BenutzerCheckboxE2EComponent {
        return new BenutzerCheckboxE2EComponent(this.userCheckboxLabel);
    
      public getPostCheckbox(): BenutzerCheckboxE2EComponent {
        return new BenutzerCheckboxE2EComponent(this.postCheckboxLabel);
    
      public getDatenbeauftragungCheckbox(): Cypress.Chainable<Element> {
    
        return cy.getTestElement(this.datenbeauftragungLabel);
    
    Cord Westhoff's avatar
    Cord Westhoff committed
      public getOrganisationsEinheitCheckbox(einheit: string): Cypress.Chainable<Element> {
    
        return cy.getTestElement(einheit + this.organisationsEinheitCheckboxSuffix);
    
      public getSaveButton(): Cypress.Chainable<Element> {
        return cy.getTestElement(this.saveButton);
      }
    
      public getDeleteButton(): Cypress.Chainable<Element> {
        return cy.getTestElement(this.deleteButton);
      }
    }
    
    export class BenutzerDeleteDialogE2EComponent {
      private readonly deleteButton: string = 'dialog-delete';
      private readonly cancelButton: string = 'cancel-dialog';
    
      public getCancelButton(): Cypress.Chainable<Element> {
        return cy.getTestElement(this.cancelButton);
      }
    
      public getDeleteButton(): Cypress.Chainable<Element> {
        return cy.getTestElement(this.deleteButton);
    
    Cord Westhoff's avatar
    Cord Westhoff committed
      }
    
    
    export class BenutzerCheckboxE2EComponent {
      private rootPrefix: string;
      private prefix: string;
    
      private readonly adminCheckbox: string = '-checkbox-editor';
      private readonly adminInfoButtonSuffix: string = '-role-info-button';
      private readonly adminInfoButtonTooltipSuffix: string = '-role-info-button-tooltip';
    
      constructor(label: string) {
        this.rootPrefix = convertToDataTestId(label);
        this.prefix = convertToDataTestId(label.toLocaleLowerCase());
      }
    
      public getRoot(): Cypress.Chainable<Element> {
        return cy.getTestElement(`${this.rootPrefix}${this.adminCheckbox}`);
      }
    
      public getInfoButton(): Cypress.Chainable<Element> {
        return cy.getTestElement(`${this.prefix}${this.adminInfoButtonSuffix}`);
      }
    
      public getInfoButtonTooltip(): Cypress.Chainable<Element> {
        return cy.getTestElement(`${this.prefix}${this.adminInfoButtonTooltipSuffix}`);
      }
    }