angular4-testing/project-manager/e2e/page-object/task/task-edit.po.ts

134 lines
3.1 KiB
TypeScript
Raw Permalink Normal View History

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