Skip to content
Snippets Groups Projects
Verified Commit d521e263 authored by Sebastian Bergandy's avatar Sebastian Bergandy :keyboard:
Browse files

Merge branch 'main' into OZG-7615-Fixed

parents 9298d2ff cfbcba57
No related branches found
No related tags found
1 merge request!73OZG-7615 Admin Leifaden
Showing
with 442 additions and 488 deletions
......@@ -22,154 +22,128 @@
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
import 'cypress-real-events';
import { AdminUserE2E } from '../../model/util';
import { exist } from '../../support/cypress.util';
import { convertToDataTestId } from '../../support/tech-util';
export class BenutzerE2EComponent {
export class BenutzerListE2EComponent {
private readonly headline: string = 'user-list-headline';
private readonly benutzerHinzufuegenButton: string = 'add-user-button';
private readonly userEntry: string = 'user-entry-';
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 adminCheckbox: string = 'Admin-checkbox-editor';
private readonly loeschenCheckbox: string = 'Loschen-checkbox-editor';
private readonly userCheckbox: string = 'User-checkbox-editor';
private readonly postCheckbox: string = 'Poststelle-checkbox-editor';
private readonly saveButton: string = 'save-button';
private readonly organisationsEinheitCheckbox: string = '-checkbox-editor';
public getHeadline(): Cypress.Chainable<Element> {
return cy.getTestElement(this.headline);
}
public getHinzufuegenButton(): Cypress.Chainable<Element> {
return cy.getTestElement(this.benutzerHinzufuegenButton);
}
public hinzufuegenButtonIsVisible(): void {
exist(this.getHinzufuegenButton());
public getItem(userName: string): BenutzerListItemE2EComponent {
return new BenutzerListItemE2EComponent(userName);
}
public clickAddUser(): void {
this.getHinzufuegenButton().click();
}
public addUser(user: AdminUserE2E): void {
this.enterVorname(user.vorname);
this.enterNachname(user.nachname);
this.enterBenutzername(user.benutzername);
this.enterMail(user.email);
export class BenutzerListItemE2EComponent {
private root: string;
if (user.isAdmin) {
this.clickAdminCheckbox();
}
if (user.isUser) {
this.clickUserCheckbox();
}
if (user.isLoeschen) {
this.clickLoeschenCheckbox();
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';
}
if (user.isPoststelle) {
this.clickPostCheckbox();
public getRoot(): Cypress.Chainable<Element> {
return cy.getTestElement(this.root);
}
if (user.organisationseinheiten) {
for (const einheit of user.organisationseinheiten) {
this.clickOrganisationsEinheitCheckbox(einheit);
public getRoles(): Cypress.Chainable<Element> {
return this.getRoot().getTestElementWithClass(this.roles);
}
public getOrganisationsEinheiten(): Cypress.Chainable<Element> {
return this.getRoot().getTestElementWithClass(this.organisationsEinheiten);
}
this.saveUser();
public getNoOrganisationsEinheitText(): Cypress.Chainable<Element> {
return this.getRoot().getTestElementWithClass(this.noOrganisationsEinheitenText);
}
public getUserEntry(user: string): Cypress.Chainable<Element> {
user = this.userEntry + user;
return cy.getTestElement(user);
public getFullName(): Cypress.Chainable<Element> {
return this.getRoot().getTestElementWithClass(this.fullName);
}
public clickUserEntry(user: string): void {
this.getUserEntry(user).click();
public getEMail(): Cypress.Chainable<Element> {
return this.getRoot().getTestElementWithClass(this.email);
}
public stringExistsInUserEntry(phrase: string, user: string): void {
this.getUserEntry(user).within(() => {
exist(cy.contains(phrase));
});
public getUserName(): Cypress.Chainable<Element> {
return this.getRoot().getTestElementWithClass(this.userName);
}
}
export class BenutzerE2EComponent {
private readonly headline: string = 'benutzer-form-headline';
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 adminCheckbox: string = 'Admin-checkbox-editor';
private readonly loeschenCheckbox: string = 'Loschen-checkbox-editor';
private readonly userCheckbox: string = 'User-checkbox-editor';
private readonly postCheckbox: string = 'Poststelle-checkbox-editor';
private readonly organisationsEinheitCheckboxSuffix: string = '-checkbox-editor';
private readonly saveButton: string = 'save-button';
public getVornameInput(): Cypress.Chainable<Element> {
return cy.getTestElement(this.userVorname);
}
public enterVorname(vorname: string): void {
this.getVornameInput().type(vorname);
}
public getNachnameInput(): Cypress.Chainable<Element> {
return cy.getTestElement(this.userNachname);
}
public enterNachname(nachname: string): void {
this.getNachnameInput().type(nachname);
}
public getBenutzernameInput(): Cypress.Chainable<Element> {
return cy.getTestElement(this.userBenutzername);
}
public enterBenutzername(benutzername: string): void {
this.getBenutzernameInput().type(benutzername);
}
public getMailInput(): Cypress.Chainable<Element> {
return cy.getTestElement(this.userMail);
}
public enterMail(mail: string): void {
this.getMailInput().type(mail);
}
public getAdminCheckbox(): Cypress.Chainable<Element> {
return cy.getTestElement(this.adminCheckbox);
}
public clickAdminCheckbox(): void {
this.getAdminCheckbox().click();
}
public getLoeschenCheckbox() {
public getLoeschenCheckbox(): Cypress.Chainable<Element> {
return cy.getTestElement(this.loeschenCheckbox);
}
public clickLoeschenCheckbox(): void {
this.getLoeschenCheckbox().click();
}
public getUserCheckbox(): Cypress.Chainable<Element> {
return cy.getTestElement(this.userCheckbox);
}
public clickUserCheckbox(): void {
this.getUserCheckbox().click();
}
public getPostCheckbox(): Cypress.Chainable<Element> {
return cy.getTestElement(this.postCheckbox);
}
public clickPostCheckbox(): void {
this.getPostCheckbox().click();
}
public getSaveButton(): Cypress.Chainable<Element> {
return cy.getTestElement(this.saveButton);
}
public saveUser(): void {
this.getSaveButton().click();
}
public getOrganisationsEinheitCheckbox(einheit: string): Cypress.Chainable<Element> {
return cy.getTestElement(einheit + this.organisationsEinheitCheckbox);
return cy.getTestElement(einheit + this.organisationsEinheitCheckboxSuffix);
}
public clickOrganisationsEinheitCheckbox(einheit: string): void {
this.getOrganisationsEinheitCheckbox(einheit).click();
public getHeadline(): Cypress.Chainable<Element> {
return cy.getTestElement(this.headline);
}
}
/*
* 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 { clearText, haveValue, typeText } from '../../support/cypress.util';
export class OrganisationseinheitenSignaturE2EComponent {
private readonly organisationsEinheitName: string = 'organisations-form-container-headline';
private readonly signatureText: string = 'signature-textarea';
private readonly saveSignatureButton: string = 'save-button';
public getOrganisationsEinheitName(): Cypress.Chainable<Element> {
return cy.getTestElement(this.organisationsEinheitName);
}
public getSignatureText(): Cypress.Chainable<Element> {
return cy.getTestElement(this.signatureText);
}
public setSignature(signatur: string): void {
this.clearSignature();
typeText(this.getSignatureText(), signatur);
}
public clearSignature(): void {
clearText(this.getSignatureText());
}
public getSaveButton(): Cypress.Chainable<Element> {
return cy.getTestElement(this.saveSignatureButton);
}
public saveSignature(): void {
this.getSaveButton().click();
}
public hasSignature(compare: string): void {
haveValue(this.getSignatureText(), compare);
}
public hasScrollbar(): void {
this.getSignatureText().then((textarea) => {
const scrollHeight = textarea[0].scrollHeight;
const clientHeight = textarea[0].clientHeight;
expect(scrollHeight).to.be.greaterThan(clientHeight);
});
}
}
......@@ -21,66 +21,21 @@
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
import { containClass, exist, haveText, notContainClass } from '../../support/cypress.util';
export class OrganisationsEinheitenE2EComponent {
private readonly organisationsEinheitenList: string = 'organisations-einheit-list';
private readonly organisationsEinheitenName: string = 'organisations-einheit-name';
private readonly organisationsEinheitenID: string = 'organisations-einheit-id';
private readonly organisationsEinheitHinzufuegen: string = 'add-organisationseinheit-button';
private readonly errorColor: string = 'text-red-500';
private readonly errorIcon: string = 'organisations-einheit-sync-error';
private readonly errorText: string = 'Organisationseinheit wurde nicht in den PVOG-Daten gefunden.';
private readonly organisationsEinheitItemSuffix: string = '-organisation-item';
public getOrganisationsEinheitList(): Cypress.Chainable<Element> {
return cy.getTestElement(this.organisationsEinheitenList);
}
public getListItemByName(name: string): Cypress.Chainable<JQuery<HTMLElement>> {
return cy.getTestElement(this.organisationsEinheitenName).contains(name);
}
public openOrganisationsEinheit(name: string): void {
this.getListItemByName(name).click();
}
public getOrganisationsEinheitHinzufuegenButton(): Cypress.Chainable<Element> {
return cy.getTestElement(this.organisationsEinheitHinzufuegen);
}
public clickHinzufuegen(): void {
this.getOrganisationsEinheitHinzufuegenButton().click();
}
public organisationsEinheitContainsID(name: string, id: string): void {
this.getListItemByName(name)
.parents('a')
.within(() => {
haveText(cy.getTestElement(this.organisationsEinheitenID), id);
});
}
public elementIsShownAsError(name: string): void {
containClass(this.getListItemByName(name).closest('ods-list-item'), this.errorColor);
}
public getErrorIconInElement(name: string): Cypress.Chainable<JQuery<HTMLAnchorElement>> {
return this.getListItemByName(name)
.parents('a')
.within(() => {
exist(cy.getTestElement(this.errorIcon));
});
}
public getErrorTooltip(name: string): Cypress.Chainable<JQuery<HTMLElement>> {
return this.getErrorIconInElement(name)
.find('ods-exclamation-icon[mattooltip]')
.should('have.attr', 'mattooltip')
.and('include', this.errorText);
}
public elementShowsNoError(name: string): void {
notContainClass(this.getListItemByName(name).closest('ods-list-item'), this.errorColor);
public getListItem(name: string) {
return cy.getTestElement(name + this.organisationsEinheitItemSuffix);
}
}
import { enterWith } from '../../support/cypress.util';
export class StatistikFieldsFormE2EComponent {
private readonly locatorFormEngineInput: string = 'form-engine-input';
private readonly locatorFormIdInput: string = 'form-id-input';
private readonly locatorFormDataFieldInput: string = 'data-statistik-field-';
private readonly locatorAddFieldButton: string = 'add-data-field-button';
private readonly locatorSaveButton: string = 'save-statistik-fields-button';
private readonly locatorCancelButton: string = 'cancel-statistik-fields-button';
private readonly formEngineInput: string = 'form-engine-name-text-input';
private readonly formIdInput: string = 'form-id-text-input';
private readonly formDataFieldInput: string = 'mapping-field-';
private readonly addDataFieldButton: string = 'add-mapping-button';
private readonly deleteDataFieldButtonPrefix: string = 'remove-mapping-button-';
private readonly saveButton: string = 'save-button';
private readonly cancelButton: string = 'cancel-button';
public getFormEngineInput(): Cypress.Chainable<Element> {
return cy.getTestElement(this.locatorFormEngineInput);
return cy.getTestElement(this.formEngineInput);
}
public enterFormEngine(text: string): void {
......@@ -17,7 +18,7 @@ export class StatistikFieldsFormE2EComponent {
}
public getFormIdInput(): Cypress.Chainable<Element> {
return cy.getTestElement(this.locatorFormIdInput);
return cy.getTestElement(this.formIdInput);
}
public enterFormId(text: string): void {
......@@ -25,7 +26,7 @@ export class StatistikFieldsFormE2EComponent {
}
public getAddFieldButton(): Cypress.Chainable<Element> {
return cy.getTestElement(this.locatorAddFieldButton);
return cy.getTestElement(this.addDataFieldButton);
}
public addField(): void {
......@@ -33,15 +34,23 @@ export class StatistikFieldsFormE2EComponent {
}
public getDataFieldInput(index: number): Cypress.Chainable<Element> {
return cy.getTestElement(this.locatorFormDataFieldInput + index);
return cy.getTestElement(this.formDataFieldInput + index + '-text-input');
}
public enterDataFieldPath(text: string, index: number): void {
enterWith(this.getDataFieldInput(index), text);
}
public getDataFieldDeleteButton(index: number): Cypress.Chainable<Element> {
return cy.getTestElement(this.deleteDataFieldButtonPrefix + index);
}
public deleteDataField(index: number): void {
this.getDataFieldDeleteButton(index).click();
}
public getSaveButton(): Cypress.Chainable<Element> {
return cy.getTestElement(this.locatorSaveButton);
return cy.getTestElement(this.saveButton);
}
public save(): void {
......@@ -49,7 +58,7 @@ export class StatistikFieldsFormE2EComponent {
}
public getCancelButton(): Cypress.Chainable<Element> {
return cy.getTestElement(this.locatorCancelButton);
return cy.getTestElement(this.cancelButton);
}
public cancel(): void {
......
import { exist } from '../../support/cypress.util';
export class StatistikE2EComponent {
private readonly locatorHeaderText: string = 'statistik-header-text';
private readonly locatorWeitereFelderAuswertenButton = 'weitere-felder-auswerten-button';
public isHeaderTextVisible(): void {
exist(cy.getTestElement(this.locatorHeaderText));
public getHeaderText(): Cypress.Chainable<Element> {
return cy.getTestElement(this.locatorHeaderText);
}
public getWeiterFelderAuswertenButton(): Cypress.Chainable<Element> {
public getWeitereFelderAuswertenButton(): Cypress.Chainable<Element> {
return cy.getTestElement(this.locatorWeitereFelderAuswertenButton);
}
}
import { MainPage } from 'apps/admin-e2e/src/page-objects/main.po';
import { BenutzerE2EComponent } from '../../../components/benutzer/benutzer.e2e.component';
import { beChecked, beEnabled, contains, exist, notBeChecked, notBeEnabled } from '../../../support/cypress.util';
import { AlfaRollen, AlfaUsers, loginAsAriane } from '../../../support/user-util';
import { E2EBenutzerHelper } from 'apps/admin-e2e/src/helper/benutzer/benutzer.helper';
import { E2EBenutzerVerifier } from 'apps/admin-e2e/src/helper/benutzer/benutzer.verifier';
import { getCypressEnv, interceptWithResponse, waitOfInterceptor } from 'apps/admin-e2e/src/support/cypress-helper';
import { SnackBarE2EComponent } from '../../../components/ui/snackbar.e2e.component';
import { SnackbarMessagesE2E } from '../../../model/util';
import { getCypressEnv, interceptWithResponse, wait, waitOfInterceptor } from 'apps/admin-e2e/src/support/cypress-helper';
import { AdminUserE2E, HttpMethodE2E } from '../../../model/util';
import { AdminUserE2E, HttpMethodE2E, SnackbarMessagesE2E } from '../../../model/util';
import { contains, notExist } from '../../../support/cypress.util';
import { loginAsAriane } from '../../../support/user-util';
const mainPage: MainPage = new MainPage();
const benutzerPage: BenutzerE2EComponent = new BenutzerE2EComponent();
const snackBar: SnackBarE2EComponent = new SnackBarE2EComponent();
describe('Benutzer anlegen', () => {
const benutzerHelper: E2EBenutzerHelper = new E2EBenutzerHelper();
const benutzerVerifier: E2EBenutzerVerifier = new E2EBenutzerVerifier();
const vorname: string = 'Theo';
const nachname: string = 'Testuser';
const benutzername: string = 'testtheo';
const emailAddress: string = 'theo.test@ozg-sh.de';
const snackBar: SnackBarE2EComponent = new SnackBarE2EComponent();
const newUser: AdminUserE2E = {
vorname: 'Theo',
nachname: 'Testuser',
benutzername: 'testtheo',
username: 'testtheo',
email: 'theo.test@ozg-sh.de',
isAdmin: true,
isUser: true,
}
organisationseinheiten: [],
};
describe('Benutzer anlegen', () => {
before(() => {
loginAsAriane();
});
it('should open Benutzer tab and show Hinzufuegen button', () => {
mainPage.clickBenutzerNavigationItem();
exist(benutzerPage.getHinzufuegenButton());
});
it('should show snackbar message on error', () => {
it('should show error snackbar after save and receiving error response', () => {
const interceptor: string = 'postUser';
const url: string = getCypressEnv('keycloakUrl') + '/admin/realms/' + getCypressEnv('keycloakRealm') + '/users'
const url: string = getCypressEnv('keycloakUrl') + '/admin/realms/' + getCypressEnv('keycloakRealm') + '/users';
const errorCode: number = 500;
const errorBody: string = 'Internal Server Error';
interceptWithResponse(HttpMethodE2E.POST, url, { errorCode, errorBody }).as(interceptor);
benutzerHelper.openNewBenutzerPage();
benutzerPage.clickAddUser();
benutzerPage.addUser(newUser);
benutzerHelper.addBenutzer(newUser);
benutzerHelper.saveBenutzer();
waitOfInterceptor(interceptor).then(() => {
contains(snackBar.getMessage(), SnackbarMessagesE2E.NUTZER_FEHLGESCHLAGEN);
snackBar.getCloseButton().click();
notExist(snackBar.getMessage());
});
});
it('should show snackbar message on saving user', () => {
snackBar.getCloseButton().click();
it('should show snackbar after save', () => {
benutzerHelper.openNewBenutzerPage();
benutzerHelper.addBenutzer(newUser);
benutzerHelper.saveBenutzer();
benutzerPage.saveUser();
contains(snackBar.getMessage(), SnackbarMessagesE2E.NUTZER_ANGELEGT);
snackBar.getCloseButton().click();
});
it('should display new user in users table', () => {
benutzerPage.stringExistsInUserEntry(AlfaRollen.USER, benutzername);
benutzerPage.stringExistsInUserEntry(vorname, benutzername);
benutzerPage.stringExistsInUserEntry(nachname, benutzername);
// FEHLT NOCH: benutzerPage.stringExistsInUserEntry(AlfaRollen.ADMIN, benutzername);
it('should show created user in list', () => {
benutzerVerifier.verifyUserInList(newUser);
});
});
import { OrganisationsEinheitenE2EComponent } from 'apps/admin-e2e/src/components/organisationseinheiten/organisationseinheiten.e2e.component';
import { ZustaendigeStelleDialogE2EComponent } from 'apps/admin-e2e/src/components/zustaendige-stelle/zustaendige-stelle-dialog.e2e.component';
import { E2EBenutzerHelper } from 'apps/admin-e2e/src/helper/benutzer/benutzer.helper';
import { E2EBenutzerVerifier } from 'apps/admin-e2e/src/helper/benutzer/benutzer.verifier';
import { OrganisationsEinheitE2E } from 'apps/admin-e2e/src/model/organisations-einheit';
import { AdminUserE2E } from 'apps/admin-e2e/src/model/util';
import { MainPage } from 'apps/admin-e2e/src/page-objects/main.po';
import { BenutzerE2EComponent } from '../../../components/benutzer/benutzer.e2e.component';
import { beChecked, exist, notBeChecked } from '../../../support/cypress.util';
import { loginAsAriane } from '../../../support/user-util';
describe('Organisationseinheit zu Benutzer hinzufügen', () => {
const mainPage: MainPage = new MainPage();
const benutzerPage: BenutzerE2EComponent = new BenutzerE2EComponent();
const organisationsEinheitenComponent: OrganisationsEinheitenE2EComponent = new OrganisationsEinheitenE2EComponent();
const zustaendigeStelleSearchComponent: ZustaendigeStelleDialogE2EComponent = new ZustaendigeStelleDialogE2EComponent();
const organistationsEinheitOrdnungsamt: string = 'Ordnungsamt';
const organisationsEinheitDenkmalpflege: string = 'Denkmalpflege';
const organisationsEinheitLiegenschaften: string = 'Liegenschaften';
const organisationsEinheitNone: string = 'keine zuständige Stelle zugewiesen';
const benutzerVerifier: E2EBenutzerVerifier = new E2EBenutzerVerifier();
const benutzerHelper: E2EBenutzerHelper = new E2EBenutzerHelper();
const vorname: string = 'Theo';
const nachname: string = 'Testuser';
const now1 = new Date();
const benutzername1: string = 'testtheo' + now1.getSeconds().toString() + now1.getMilliseconds().toString();
const userName1: string = 'testtheo' + now1.getSeconds().toString() + now1.getMilliseconds().toString();
const emailAddress1: string = 'theo' + now1.getSeconds().toString() + now1.getMilliseconds().toString() + '@ozg-sh.de';
const now2 = new Date(now1.getTime() + 1000);
const benutzername2: string = 'testtheo' + now2.getSeconds().toString() + now2.getMilliseconds().toString();
const userName2: string = 'testtheo' + now2.getSeconds().toString() + now2.getMilliseconds().toString();
const emailAddress2: string = 'theo' + now2.getSeconds().toString() + now2.getMilliseconds().toString() + '@ozg-sh.de';
const newUser1: AdminUserE2E = {
const userWithoutOrganisationsEinheiten: AdminUserE2E = {
vorname: vorname,
nachname: nachname,
benutzername: benutzername1,
username: userName1,
email: emailAddress1,
isUser: true,
organisationseinheiten: [],
};
const newUser2: AdminUserE2E = {
const userWithOrganisationsEinheiten: AdminUserE2E = {
vorname: vorname,
nachname: nachname,
benutzername: benutzername2,
username: userName2,
email: emailAddress2,
isUser: true,
organisationseinheiten: ['Denkmalpflege'],
organisationseinheiten: [OrganisationsEinheitE2E.DENKMALPFLEGE],
};
before(() => {
loginAsAriane();
});
it('should click Hinzufügen button and show Organisationseinheiten in Benutzer page', () => {
mainPage.benutzerNavigationItemIsVisible();
mainPage.clickBenutzerNavigationItem();
benutzerPage.hinzufuegenButtonIsVisible();
it('should show organisationseinheiten in formular', () => {
benutzerHelper.openNewBenutzerPage();
benutzerPage.clickAddUser();
exist(benutzerPage.getOrganisationsEinheitCheckbox(organisationsEinheitDenkmalpflege));
exist(benutzerPage.getOrganisationsEinheitCheckbox(organistationsEinheitOrdnungsamt));
benutzerVerifier.verifyOrganisationsEinheitenInFormular([
OrganisationsEinheitE2E.DENKMALPFLEGE,
OrganisationsEinheitE2E.ORDNUNGSAMT,
]);
});
it('should add no Organisationseinheit to new user without selection and saving', () => {
benutzerPage.addUser(newUser1);
benutzerPage.stringExistsInUserEntry(organisationsEinheitNone, benutzername1);
});
it('should add new user without organisationseinheiten', () => {
benutzerHelper.openNewBenutzerPage();
it('should add Organisationseinheit to new user after selection and saving', () => {
benutzerPage.clickAddUser();
benutzerPage.addUser(newUser2);
benutzerHelper.addBenutzerAndSave(userWithoutOrganisationsEinheiten);
benutzerPage.stringExistsInUserEntry(organisationsEinheitDenkmalpflege, benutzername2);
benutzerVerifier.verifyNoOrganisationsEinheitInBenutzerList(userName1);
});
it('should remove Organisationseinheit from existing user on deselection and save', () => {
benutzerPage.clickUserEntry(benutzername2);
beChecked(benutzerPage.getOrganisationsEinheitCheckbox(organisationsEinheitDenkmalpflege));
it('should add new user with organisationseinheiten', () => {
benutzerHelper.openNewBenutzerPage();
benutzerPage.clickOrganisationsEinheitCheckbox(organisationsEinheitDenkmalpflege);
benutzerPage.saveUser();
benutzerHelper.addBenutzerAndSave(userWithOrganisationsEinheiten);
benutzerPage.stringExistsInUserEntry(organisationsEinheitNone, benutzername2);
benutzerVerifier.verfiyOrganisationsEinheitInBenutzerList(OrganisationsEinheitE2E.DENKMALPFLEGE, userName2);
});
it('should add Organisationseinheit to existing user on selection and save', () => {
benutzerPage.clickUserEntry(benutzername2);
notBeChecked(benutzerPage.getOrganisationsEinheitCheckbox(organistationsEinheitOrdnungsamt));
benutzerPage.clickOrganisationsEinheitCheckbox(organistationsEinheitOrdnungsamt);
benutzerPage.saveUser();
it('should remove organisationseinheit from existing user', () => {
benutzerHelper.openBenutzerPage(userName2);
benutzerPage.stringExistsInUserEntry(organistationsEinheitOrdnungsamt, benutzername2);
});
benutzerHelper.editOrganisationsEinheitenAndSave([OrganisationsEinheitE2E.DENKMALPFLEGE]);
it('should enable new Organisationseinheit for users after adding it', () => {
mainPage.clickOrganisationsEinheitenNavigationItem();
organisationsEinheitenComponent.clickHinzufuegen();
zustaendigeStelleSearchComponent.enterSearchTerm(organisationsEinheitLiegenschaften);
zustaendigeStelleSearchComponent.getZustaendigeStelleTitle(0).then((title: string) => {
zustaendigeStelleSearchComponent.clickFoundItem(0);
benutzerVerifier.verifyNoOrganisationsEinheitInBenutzerList(userName2);
});
mainPage.clickBenutzerNavigationItem();
benutzerPage.clickUserEntry(benutzername2);
it('should add organisationseinheit to existing user', () => {
benutzerHelper.openBenutzerPage(userName2);
exist(benutzerPage.getOrganisationsEinheitCheckbox(organisationsEinheitLiegenschaften));
});
benutzerHelper.editOrganisationsEinheitenAndSave([OrganisationsEinheitE2E.ORDNUNGSAMT]);
it('should add new Organisationseinheit to existing user', () => {
benutzerPage.clickOrganisationsEinheitCheckbox(organisationsEinheitLiegenschaften);
benutzerPage.saveUser();
benutzerPage.stringExistsInUserEntry(organisationsEinheitLiegenschaften, benutzername2);
benutzerVerifier.verfiyOrganisationsEinheitInBenutzerList(OrganisationsEinheitE2E.ORDNUNGSAMT, userName2);
});
});
......@@ -21,45 +21,63 @@
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
import { MainPage } from 'apps/admin-e2e/src/page-objects/main.po';
import { BenutzerE2EComponent } from '../../../components/benutzer/benutzer.e2e.component';
import { beChecked, beEnabled, exist, notBeChecked, notBeEnabled } from '../../../support/cypress.util';
import { E2EBenutzerHelper } from 'apps/admin-e2e/src/helper/benutzer/benutzer.helper';
import { OrganisationsEinheitE2E } from 'apps/admin-e2e/src/model/organisations-einheit';
import {
BenutzerE2EComponent,
BenutzerListE2EComponent,
BenutzerListItemE2EComponent,
} from '../../../components/benutzer/benutzer.e2e.component';
import { beChecked, beEnabled, contains, exist, notBeChecked, notBeEnabled } from '../../../support/cypress.util';
import { AlfaRollen, AlfaUsers, loginAsAriane } from '../../../support/user-util';
const mainPage: MainPage = new MainPage();
describe('Benutzer und Rollen', () => {
const benutzerPage: BenutzerE2EComponent = new BenutzerE2EComponent();
const organisationsEinheitOrdnungsamt: string = 'Ordnungsamt';
const organisationsEinheitDenkmalpflege: string = 'Denkmalpflege';
const organisationsEinheitWirtschaftsfoerderung: string = 'Wirtschaftsförderung';
const organisationsEinheitNone: string = 'keine zuständige Stelle zugewiesen';
const benutzerListPage: BenutzerListE2EComponent = new BenutzerListE2EComponent();
//TODO In der entsprechenden json hinterlegen und darauf zugreifen
const emailAddress: string = 'peter.von.der.post@ozg-sh.de';
describe('Benutzer und Rollen', () => {
const helper: E2EBenutzerHelper = new E2EBenutzerHelper();
before(() => {
loginAsAriane();
});
it('should open Benutzer tab and show Hinzufuegen button', () => {
mainPage.clickBenutzerNavigationItem();
it('should show users and attributes in list', () => {
helper.openBenutzerListPage();
exist(benutzerPage.getHinzufuegenButton());
});
const ariane: BenutzerListItemE2EComponent = benutzerListPage.getItem(AlfaUsers.ARAINE);
exist(ariane.getRoot());
contains(ariane.getRoles(), AlfaRollen.USER);
const dorothea: BenutzerListItemE2EComponent = benutzerListPage.getItem(AlfaUsers.DOROTHEA);
exist(dorothea.getRoot());
contains(dorothea.getRoles(), AlfaRollen.USER);
const ludwig: BenutzerListItemE2EComponent = benutzerListPage.getItem(AlfaUsers.LUDWIG);
exist(ludwig.getRoot());
contains(ludwig.getRoles(), AlfaRollen.LOESCHEN);
contains(ludwig.getOrganisationsEinheiten(), OrganisationsEinheitE2E.ORDNUNGSAMT);
const zelda: BenutzerListItemE2EComponent = benutzerListPage.getItem(AlfaUsers.ZELDA);
exist(zelda.getRoot());
contains(zelda.getRoles(), AlfaRollen.USER);
contains(zelda.getOrganisationsEinheiten(), OrganisationsEinheitE2E.DENKMALPFLEGE);
contains(zelda.getOrganisationsEinheiten(), OrganisationsEinheitE2E.WIRTSCHAFTSFOERDERUNG);
const peter: BenutzerListItemE2EComponent = benutzerListPage.getItem(AlfaUsers.PETER);
exist(peter.getRoot());
contains(peter.getRoles(), AlfaRollen.POSTSTELLE);
contains(peter.getEMail(), emailAddress);
it('should show users and attributes in table', () => {
exist(benutzerPage.getUserEntry('ariane'));
benutzerPage.stringExistsInUserEntry(AlfaRollen.USER, AlfaUsers.DOROTHEA);
benutzerPage.stringExistsInUserEntry(organisationsEinheitOrdnungsamt, AlfaUsers.LUDWIG);
benutzerPage.stringExistsInUserEntry(AlfaRollen.USER, AlfaUsers.ZELDA);
benutzerPage.stringExistsInUserEntry(AlfaRollen.LOESCHEN, AlfaUsers.LUDWIG);
benutzerPage.stringExistsInUserEntry(organisationsEinheitDenkmalpflege, AlfaUsers.ZELDA);
benutzerPage.stringExistsInUserEntry(organisationsEinheitWirtschaftsfoerderung, AlfaUsers.ZELDA);
benutzerPage.stringExistsInUserEntry(organisationsEinheitNone, AlfaUsers.RICHARD);
benutzerPage.stringExistsInUserEntry(emailAddress, AlfaUsers.PETER);
benutzerPage.stringExistsInUserEntry(AlfaRollen.POSTSTELLE, AlfaUsers.PETER);
const richard: BenutzerListItemE2EComponent = benutzerListPage.getItem(AlfaUsers.RICHARD);
exist(richard.getRoot());
exist(richard.getNoOrganisationsEinheitText());
});
it('should show single user screen on click', () => {
benutzerPage.clickAddUser();
helper.openNewBenutzerPage();
exist(benutzerPage.getVornameInput());
exist(benutzerPage.getNachnameInput());
......@@ -73,47 +91,47 @@ describe('Benutzer und Rollen', () => {
});
it('should activate loeschen checkbox and deactivate the other two checkboxes', () => {
benutzerPage.clickLoeschenCheckbox();
benutzerPage.getLoeschenCheckbox().click();
beChecked(benutzerPage.getLoeschenCheckbox());
notBeEnabled(benutzerPage.getUserCheckbox());
notBeEnabled(benutzerPage.getPostCheckbox());
benutzerPage.clickLoeschenCheckbox();
benutzerPage.getLoeschenCheckbox().click();
notBeChecked(benutzerPage.getLoeschenCheckbox());
beEnabled(benutzerPage.getUserCheckbox());
beEnabled(benutzerPage.getPostCheckbox());
});
it('should additionally activate and deactivate admin checkbox', () => {
benutzerPage.clickLoeschenCheckbox();
benutzerPage.clickAdminCheckbox();
benutzerPage.getLoeschenCheckbox().click();
benutzerPage.getAdminCheckbox().click();
beChecked(benutzerPage.getLoeschenCheckbox());
beChecked(benutzerPage.getAdminCheckbox());
benutzerPage.clickAdminCheckbox();
benutzerPage.getAdminCheckbox().click();
notBeChecked(benutzerPage.getAdminCheckbox());
});
it('should activate user checkbox and deactivate the other two checkboxes', () => {
benutzerPage.clickLoeschenCheckbox();
benutzerPage.clickUserCheckbox();
benutzerPage.getLoeschenCheckbox().click();
benutzerPage.getUserCheckbox().click();
beChecked(benutzerPage.getUserCheckbox());
notBeEnabled(benutzerPage.getLoeschenCheckbox());
notBeEnabled(benutzerPage.getPostCheckbox());
benutzerPage.clickUserCheckbox();
benutzerPage.getUserCheckbox().click();
notBeChecked(benutzerPage.getUserCheckbox());
beEnabled(benutzerPage.getLoeschenCheckbox());
beEnabled(benutzerPage.getPostCheckbox());
});
it('should activate post checkbox and deactivate the other two checkboxes', () => {
benutzerPage.clickPostCheckbox();
benutzerPage.getPostCheckbox().click();
beChecked(benutzerPage.getPostCheckbox());
notBeEnabled(benutzerPage.getLoeschenCheckbox());
notBeEnabled(benutzerPage.getUserCheckbox());
benutzerPage.clickPostCheckbox();
benutzerPage.getPostCheckbox().click();
notBeChecked(benutzerPage.getPostCheckbox());
beEnabled(benutzerPage.getLoeschenCheckbox());
beEnabled(benutzerPage.getUserCheckbox());
......
import { MainPage, waitForSpinnerToDisappear } from 'apps/admin-e2e/src/page-objects/main.po';
import { exist, notExist } from 'apps/admin-e2e/src/support/cypress.util';
import { exist, notExist, visible } from 'apps/admin-e2e/src/support/cypress.util';
import { loginAsDaria } from 'apps/admin-e2e/src/support/user-util';
import { StatistikE2EComponent } from '../../../components/statistik/statistik.e2e.component';
......@@ -37,7 +37,7 @@ describe('Navigation', () => {
});
it('should show header text', () => {
statistikPage.isHeaderTextVisible();
visible(statistikPage.getHeaderText());
});
});
});
......
import { MainPage, waitForSpinnerToDisappear } from 'apps/admin-e2e/src/page-objects/main.po';
import { exist } from 'apps/admin-e2e/src/support/cypress.util';
import { exist, visible } from 'apps/admin-e2e/src/support/cypress.util';
import { loginAsSafira } from 'apps/admin-e2e/src/support/user-util';
import { StatistikE2EComponent } from '../../../components/statistik/statistik.e2e.component';
......@@ -38,7 +38,7 @@ describe('Navigation', () => {
});
it('should show page on selection', () => {
statistikPage.isHeaderTextVisible();
visible(statistikPage.getHeaderText());
});
it('should mark navigation item as selected', () => {
......
import { convertToDataTestId } from 'apps/admin-e2e/src/support/tech-util';
import { OrganisationsEinheitenE2EComponent } from '../../../components/organisationseinheiten/organisationseinheiten.e2e.component';
import { ZustaendigeStelleDialogE2EComponent } from '../../../components/zustaendige-stelle/zustaendige-stelle-dialog.e2e.component';
import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
......@@ -27,7 +28,7 @@ describe('Organisationseinheiten', () => {
});
it('should show search Organisationseinheit dialog', () => {
organisationsEinheitenComponent.clickHinzufuegen();
organisationsEinheitenComponent.getOrganisationsEinheitHinzufuegenButton().click();
exist(zustaendigeStelleSearchComponent.getZustaendigeStelleForm());
});
......@@ -39,9 +40,9 @@ describe('Organisationseinheiten', () => {
});
it('should add first Organisationseinheit', () => {
zustaendigeStelleSearchComponent.getZustaendigeStelleTitle(0).then((title: string) => {
zustaendigeStelleSearchComponent.getZustaendigeStelleTitle(0).then((name: string) => {
zustaendigeStelleSearchComponent.clickFoundItem(0);
exist(organisationsEinheitenComponent.getListItemByName(title));
exist(organisationsEinheitenComponent.getListItem(convertToDataTestId(name)));
});
});
});
......@@ -24,52 +24,33 @@
import { OrganisationsEinheitenE2EComponent } from '../../../components/organisationseinheiten/organisationseinheiten.e2e.component';
import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
import { exist } from '../../../support/cypress.util';
import { OrganisationsEinheitSyncResultE2E } from '../../../support/organisationseinheit';
import {
createBauamtOrganisationsEinheit,
createDenkmalpflegeOrganisationsEinheit,
createFundstelleOrganisationsEinheit,
initOrganisationsEinheiten,
} from '../../../support/organisationseinheit-util';
import { loginAsAriane } from '../../../support/user-util';
describe.skip('TODO: activate after fix for OZG-7391: show Organisationsheiten', () => {
describe('Organisationsheiten list', () => {
const mainPage: MainPage = new MainPage();
const organisationsEinheitenTab: OrganisationsEinheitenE2EComponent = new OrganisationsEinheitenE2EComponent();
before(() => {
loginAsAriane();
initOrganisationsEinheiten([
createBauamtOrganisationsEinheit(),
{ ...createDenkmalpflegeOrganisationsEinheit(), syncResult: OrganisationsEinheitSyncResultE2E.NAME_MISMATCH },
{ ...createFundstelleOrganisationsEinheit(), syncResult: OrganisationsEinheitSyncResultE2E.NOT_FOUND_IN_PVOG },
]);
});
it('should show table of Organisationseinheiten', () => {
it('should show Organisationseinheiten list', () => {
waitForSpinnerToDisappear();
mainPage.clickOrganisationsEinheitenNavigationItem();
waitForSpinnerToDisappear();
exist(organisationsEinheitenTab.getOrganisationsEinheitList());
});
it('should show identical data in Keycloak and PVOG without error', () => {
organisationsEinheitenTab.getListItemByName('Bauamt');
organisationsEinheitenTab.organisationsEinheitContainsID('Bauamt', '248240886');
organisationsEinheitenTab.elementShowsNoError('Bauamt');
it('should show entry for Bauamt', () => {
exist(organisationsEinheitenTab.getListItem('Bauamt'));
});
it('should show data not found in PVOG in red color and with error icon and tooltip message', () => {
const organisationsEinheitName: string = 'Fundstelle';
organisationsEinheitenTab.organisationsEinheitContainsID(organisationsEinheitName, '10363455');
organisationsEinheitenTab.elementIsShownAsError(organisationsEinheitName);
organisationsEinheitenTab.getErrorIconInElement(organisationsEinheitName);
organisationsEinheitenTab.getErrorTooltip(organisationsEinheitName);
it('should show entry for Fundstelle', () => {
exist(organisationsEinheitenTab.getListItem('Fundstelle'));
});
it('should get name for OE from PVOG, if mismatch with Keycloak, but without error', () => {
organisationsEinheitenTab.organisationsEinheitContainsID('Landesamt für Denkmalpflege', '9093371');
organisationsEinheitenTab.elementShowsNoError('Landesamt für Denkmalpflege');
it('should show entry for Denkmalpflege', () => {
exist(organisationsEinheitenTab.getListItem('Denkmalpflege'));
});
});
/*
* 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 { OrganisationseinheitenSignaturE2EComponent } from '../../../components/organisationseinheiten/organisationseinheiten-signatur.e2e.component';
import { OrganisationsEinheitenE2EComponent } from '../../../components/organisationseinheiten/organisationseinheiten.e2e.component';
import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
import { haveText } from '../../../support/cypress.util';
import { loginAsAriane } from '../../../support/user-util';
describe.skip('TODO: activate after fix for OZG-7391: Signatur', () => {
const mainPage: MainPage = new MainPage();
const signaturePage: OrganisationseinheitenSignaturE2EComponent = new OrganisationseinheitenSignaturE2EComponent();
const organisationsEinheitenTab: OrganisationsEinheitenE2EComponent = new OrganisationsEinheitenE2EComponent();
const signatureText: string = 'Signatur\nmit\n\n\n\nZeilenumbruch\n\n';
before(() => {
loginAsAriane();
});
it('should open signature page for Bauamt on click', () => {
waitForSpinnerToDisappear();
mainPage.openOrganisationsEinheiten();
organisationsEinheitenTab.openOrganisationsEinheit('Bauamt');
haveText(signaturePage.getOrganisationsEinheitName(), 'Bauamt');
});
it('should show signature input with scrollbar', () => {
signaturePage.setSignature(signatureText);
signaturePage.saveSignature();
signaturePage.hasSignature(signatureText);
signaturePage.hasScrollbar();
});
it.skip('should enter and save empty signature', () => {
signaturePage.clearSignature();
signaturePage.saveSignature();
signaturePage.hasSignature('');
});
});
import { ROUTES } from '@admin-client/shared';
import { StatistikE2EComponent } from 'apps/admin-e2e/src/components/statistik/statistik.e2e.component';
import { StatistikFieldsFormE2EComponent } from '../../../components/statistik/statistik-fields-form.e2e.component';
import { StatistikE2EComponent } from '../../../components/statistik/statistik.e2e.component';
import { urlShouldEndsWith } from '../../../support/cypress-helper';
import { exist } from '../../../support/cypress.util';
import { exist, haveText, haveValue } from '../../../support/cypress.util';
import { loginAsDaria } from '../../../support/user-util';
describe('Felder in Statistik hinzufügen', () => {
const component: StatistikE2EComponent = new StatistikE2EComponent();
const fieldsFormComponent: StatistikFieldsFormE2EComponent = new StatistikFieldsFormE2EComponent();
const dataText1: string = 'Eingabe A';
const dataText2: string = 'Eingabe B';
before(() => {
loginAsDaria();
});
it('should be on statistik page', () => {
urlShouldEndsWith(ROUTES.STATISTIK);
});
it('should show statistik header', () => {
component.isHeaderTextVisible();
it('should show "Weitere Felder auswerten" button', () => {
exist(component.getWeitereFelderAuswertenButton());
});
it('should show "Weiter Felder auswerten" button', () => {
exist(component.getWeiterFelderAuswertenButton());
});
it('should navigate to route', () => {
component.getWeiterFelderAuswertenButton().click();
urlShouldEndsWith(ROUTES.STATISTIK_NEU);
});
it('should have all form elements after button click', () => {
component.getWeitereFelderAuswertenButton().click();
it('should have all form elements', () => {
exist(fieldsFormComponent.getFormEngineInput());
exist(fieldsFormComponent.getFormIdInput());
exist(fieldsFormComponent.getDataFieldInput(0));
exist(fieldsFormComponent.getDataFieldDeleteButton(0));
exist(fieldsFormComponent.getAddFieldButton());
exist(fieldsFormComponent.getSaveButton());
exist(fieldsFormComponent.getCancelButton());
......@@ -46,9 +36,22 @@ describe('Felder in Statistik hinzufügen', () => {
exist(fieldsFormComponent.getDataFieldInput(1));
});
it('should enter text in both data fields', () => {
fieldsFormComponent.enterDataFieldPath(dataText1, 0);
fieldsFormComponent.enterDataFieldPath(dataText2, 1);
haveValue(fieldsFormComponent.getDataFieldInput(0), dataText1);
haveValue(fieldsFormComponent.getDataFieldInput(1), dataText2);
});
it('should delete data fields', () => {
fieldsFormComponent.deleteDataField(0);
haveValue(fieldsFormComponent.getDataFieldInput(0), dataText2);
});
it('should navigate to statistik on cancel', () => {
fieldsFormComponent.cancel();
urlShouldEndsWith(ROUTES.STATISTIK);
exist(component.getWeitereFelderAuswertenButton());
});
});
import { BenutzerE2EComponent } from '../../components/benutzer/benutzer.e2e.component';
import { SnackBarE2EComponent } from '../../components/ui/snackbar.e2e.component';
import { OrganisationsEinheitE2E } from '../../model/organisations-einheit';
import { AdminUserE2E } from '../../model/util';
import { exist, notExist } from '../../support/cypress.util';
export class E2EBenutzerExecutor {
private benutzerPage: BenutzerE2EComponent = new BenutzerE2EComponent();
private snackBar: SnackBarE2EComponent = new SnackBarE2EComponent();
public modifyBenutzer(user: AdminUserE2E): void {
this.benutzerPage.getVornameInput().type(user.vorname);
this.benutzerPage.getNachnameInput().type(user.nachname);
this.benutzerPage.getBenutzernameInput().type(user.username);
this.benutzerPage.getMailInput().type(user.email);
if (user.isAdmin) {
this.benutzerPage.getAdminCheckbox().click();
}
if (user.isUser) {
this.benutzerPage.getUserCheckbox().click();
}
if (user.isLoeschen) {
this.benutzerPage.getLoeschenCheckbox().click();
}
if (user.isPoststelle) {
this.benutzerPage.getPostCheckbox().click();
}
this.modifyOrganisationsEinheiten(user.organisationseinheiten);
}
public modifyOrganisationsEinheiten(organisationseinheiten: OrganisationsEinheitE2E[]): void {
organisationseinheiten.forEach((name: string) => this.benutzerPage.getOrganisationsEinheitCheckbox(name).click());
}
public saveAndCloseSnackbar(): void {
this.saveBenutzer();
exist(this.snackBar.getMessage());
this.snackBar.getCloseButton().click();
notExist(this.snackBar.getMessage());
}
public saveBenutzer(): void {
this.benutzerPage.getSaveButton().click();
}
}
import { OrganisationsEinheitE2E } from '../../model/organisations-einheit';
import { AdminUserE2E } from '../../model/util';
import { E2EBenutzerExecutor } from './benutzer.executor';
import { E2EBenutzerNavigator } from './benutzer.navigator';
export class E2EBenutzerHelper {
private navigator: E2EBenutzerNavigator = new E2EBenutzerNavigator();
private executer: E2EBenutzerExecutor = new E2EBenutzerExecutor();
public openBenutzerListPage(): void {
this.navigator.openBenutzerListPage();
}
public openNewBenutzerPage(): void {
this.navigator.openNewBenutzerPage();
}
public addBenutzerAndSave(user: AdminUserE2E): void {
this.addBenutzer(user);
this.executer.saveAndCloseSnackbar();
}
public addBenutzer(user: AdminUserE2E): void {
this.executer.modifyBenutzer(user);
}
public openBenutzerPage(userName: string): void {
this.navigator.openBenutzerPage(userName);
}
public editBenutzerAndSave(user: AdminUserE2E): void {
this.editBenutzer(user);
this.executer.saveAndCloseSnackbar();
}
public editBenutzer(user: AdminUserE2E): void {
this.executer.modifyBenutzer(user);
}
public editOrganisationsEinheitenAndSave(organisationsEinheiten: OrganisationsEinheitE2E[]): void {
this.executer.modifyOrganisationsEinheiten(organisationsEinheiten);
this.executer.saveAndCloseSnackbar();
}
public saveBenutzer(): void {
this.executer.saveBenutzer();
}
}
import { BenutzerE2EComponent, BenutzerListE2EComponent } from '../../components/benutzer/benutzer.e2e.component';
import { MainPage } from '../../page-objects/main.po';
import { exist } from '../../support/cypress.util';
export class E2EBenutzerNavigator {
private mainPage: MainPage = new MainPage();
private benutzerListPage: BenutzerListE2EComponent = new BenutzerListE2EComponent();
private benutzerPage: BenutzerE2EComponent = new BenutzerE2EComponent();
public openNewBenutzerPage(): void {
this.openBenutzerListPage();
this.benutzerListPage.getHinzufuegenButton().click();
exist(this.benutzerPage.getHeadline());
}
public openBenutzerPage(userName: string) {
this.openBenutzerListPage();
this.benutzerListPage.getItem(userName).getRoot().click();
exist(this.benutzerPage.getHeadline());
}
public openBenutzerListPage(): void {
this.navigateToDomain();
this.mainPage.getBenutzerNavigationItem().click();
exist(this.benutzerListPage.getHeadline());
}
private navigateToDomain(): void {
this.mainPage.getHeader().getLogo().click();
}
}
import {
BenutzerE2EComponent,
BenutzerListE2EComponent,
BenutzerListItemE2EComponent,
} from '../../components/benutzer/benutzer.e2e.component';
import { AdminUserE2E } from '../../model/util';
import { contains, exist } from '../../support/cypress.util';
import { AlfaRollen } from '../../support/user-util';
export class E2EBenutzerVerifier {
private noOrganisationsEinheitAssignedText: string = 'keine zuständige Stelle zugewiesen';
private benutzerListPage: BenutzerListE2EComponent = new BenutzerListE2EComponent();
private benutzerPage: BenutzerE2EComponent = new BenutzerE2EComponent();
public verfiyOrganisationsEinheitInBenutzerList(organisationsEinheit: string, userName: string): void {
const benutzerItem: BenutzerListItemE2EComponent = this.getBenutzerItem(userName);
contains(benutzerItem.getOrganisationsEinheiten(), organisationsEinheit);
}
public verifyNoOrganisationsEinheitInBenutzerList(userName: string): void {
const benutzerItem: BenutzerListItemE2EComponent = this.getBenutzerItem(userName);
contains(benutzerItem.getNoOrganisationsEinheitText(), this.noOrganisationsEinheitAssignedText);
}
public verifyOrganisationsEinheitenInFormular(organisationsEinheiten: string[]): void {
organisationsEinheiten.forEach((organisationsEinheit) => {
exist(this.benutzerPage.getOrganisationsEinheitCheckbox(organisationsEinheit));
});
}
public verifyUserInList(user: AdminUserE2E): void {
const benutzer: BenutzerListItemE2EComponent = this.getBenutzerItem(user.username);
contains(benutzer.getUserName(), user.username);
contains(benutzer.getFullName(), user.vorname);
contains(benutzer.getFullName(), user.nachname);
if (user.isUser) contains(benutzer.getRoles(), AlfaRollen.USER);
if (user.isLoeschen) contains(benutzer.getRoles(), AlfaRollen.LOESCHEN);
if (user.isPoststelle) contains(benutzer.getRoles(), AlfaRollen.POSTSTELLE);
if (user.isAdmin) contains(benutzer.getRoles(), AlfaRollen.ADMIN);
}
private getBenutzerItem(userName: string): BenutzerListItemE2EComponent {
return this.benutzerListPage.getItem(userName);
}
}
export enum OrganisationsEinheitE2E {
ORDNUNGSAMT = 'Ordnungsamt',
DENKMALPFLEGE = 'Denkmalpflege',
WIRTSCHAFTSFOERDERUNG = 'Wirtschaftsförderung',
}
import { OrganisationsEinheitE2E } from './organisations-einheit';
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
......@@ -41,11 +43,11 @@ export enum HttpMethodE2E {
export interface AdminUserE2E {
vorname: string;
nachname: string;
benutzername: string;
username: string;
email: string;
isAdmin?: boolean;
isUser?: boolean;
isLoeschen?: boolean;
isPoststelle?: boolean;
organisationseinheiten?: string[];
organisationseinheiten: OrganisationsEinheitE2E[];
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment