import {AbstractHeaderPage} from "../abstract-header.po"; import {by, element} from "protractor"; import {TaskOverviewPage} from "./task-overview.po"; /** * PageObject Klasse, repräsentiert die Formularseite zum * editieren und Erstellen von Aufgaben * * @author FHartwich */ export class TaskEditPage extends AbstractHeaderPage { /** * Array mit möglichen Fehleranzeigen * @type {{title: string; email: string}} */ errorMessages = {title: 'Titel muss mindestens 5 Zeichen enthalten', email : 'Bitte geben Sie eine gültige E-Mail Adresse an'}; /** * Eingabefeld - Titel * @type {ElementFinder} */ titleInput = element(by.id('title')); /** * Eingabefeld - Beschreibung * @type {ElementFinder} */ descriptionInput = element(by.id('description')); /** * Eingabefeld - Verantwortlicher, eMail * @type {ElementFinder} */ assigneeEmail = element(by.id('assignee_email')); /** * Speichern - Button * @type {ElementFinder} */ saveButton = element(by.id('save')); /** * Abbrechen - Button * @type {ElementFinder} */ cancelButton = element(by.id('cancel')); /** * Konstruktor * @param newTask - true, wenn die Seite für einen neuen Tasks geöffnet wird * false, wenn ein Task editiert wird */ constructor(newTask: boolean) { super(); let headline; if (newTask) { headline = 'Neue Aufgabe anlegen'; } else { headline = 'Aufgabe bearbeiten'; } super.validatePageHeadline(headline) } /** * Löscht alten Titel und gibt neuen ein * @param title - neuer Titel */ clearEnterTitle(title: string) { this.titleInput.clear(); this.titleInput.sendKeys(title); } /** * Löscht alte Beschreibung und gibt neue ein * @param description - neue Beschreibung */ clearEnterDescription(description: string) { this.descriptionInput.clear(); this.descriptionInput.sendKeys(description); } /** * Löscht alte Assignee eMail und trägt neue ein * @param email - neue eMail Adresse */ clearInsertEmail(email: string) { this.assigneeEmail.clear(); this.assigneeEmail.sendKeys(email); } /** * Klick auf den Button zum absenden des Formulars * @returns {TaskOverviewPage} */ submitTaskForm() { this.saveButton.click(); return new TaskOverviewPage; } /** * Klick auf den Button zum Abbrechen der Formulareingabe * @returns {TaskOverviewPage} */ cancelSubmitTask() : TaskOverviewPage { this.cancelButton.click(); return new TaskOverviewPage(); } /** * überprüft den Feldwert des über die ID beschriebenen Elements * @param elementId - CSS ID des Testfeldes * @param value - erwarteter Wert */ static validateInput(elementId: string, value: string) { const input = element(by.id(elementId)); expect(input.getAttribute('value')).toBe(value); } /** * prüft ob ein Error existiert der diesen Wert hat * @param input - erwartete Fehlermeldung */ validateError(input: string) { expect(element(by.className('alert')).getText()) .toBe(this.errorMessages[input]); } }