diff --git a/alfa-client/apps/admin-e2e/src/components/benutzer/benutzer.e2e.component.ts b/alfa-client/apps/admin-e2e/src/components/benutzer/benutzer.e2e.component.ts index 7b9027ffdc33f6f5cef1980aac392859a457237d..c8cf3fc22c09142dd1e042d14bbc5de485a9a724 100644 --- a/alfa-client/apps/admin-e2e/src/components/benutzer/benutzer.e2e.component.ts +++ b/alfa-client/apps/admin-e2e/src/components/benutzer/benutzer.e2e.component.ts @@ -26,12 +26,17 @@ import { convertToDataTestId } from '../../support/tech-util'; export class BenutzerListE2EComponent { private readonly headline: string = 'user-list-headline'; + private readonly root: string = 'user-list'; private readonly benutzerHinzufuegenButton: string = 'add-user-button'; public getHeadline(): Cypress.Chainable<Element> { return cy.getTestElement(this.headline); } + public getRoot(): Cypress.Chainable<Element> { + return cy.getTestElement(this.root); + } + public getHinzufuegenButton(): Cypress.Chainable<Element> { return cy.getTestElement(this.benutzerHinzufuegenButton); } @@ -98,10 +103,16 @@ export class BenutzerE2EComponent { private readonly loeschenCheckbox: string = 'Loschen-checkbox-editor'; private readonly userCheckbox: string = 'User-checkbox-editor'; private readonly postCheckbox: string = 'Poststelle-checkbox-editor'; + private readonly datenbeauftragungCheckbox: string = 'Datenbeauftragung-checkbox-editor'; 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); @@ -135,15 +146,32 @@ export class BenutzerE2EComponent { return cy.getTestElement(this.postCheckbox); } - public getSaveButton(): Cypress.Chainable<Element> { - return cy.getTestElement(this.saveButton); + public getDatenbeauftragungCheckbox(): Cypress.Chainable<Element> { + return cy.getTestElement(this.datenbeauftragungCheckbox); } public getOrganisationsEinheitCheckbox(einheit: string): Cypress.Chainable<Element> { return cy.getTestElement(einheit + this.organisationsEinheitCheckboxSuffix); } - public getHeadline(): Cypress.Chainable<Element> { - return cy.getTestElement(this.headline); + 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); } } diff --git a/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-loesche.cy.ts b/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-loesche.cy.ts new file mode 100644 index 0000000000000000000000000000000000000000..11c46e22406a51ae6a9589cb8b8dbd4d7718a305 --- /dev/null +++ b/alfa-client/apps/admin-e2e/src/e2e/main-tests/benutzer_rollen/benutzer-loesche.cy.ts @@ -0,0 +1,34 @@ +import { E2EBenutzerHelper } from 'apps/admin-e2e/src/helper/benutzer/benutzer.helper'; +import { E2EBenutzerVerifier } from 'apps/admin-e2e/src/helper/benutzer/benutzer.verifier'; +import { AdminUserE2E } from 'apps/admin-e2e/src/model/util'; +import { loginAsAriane } from 'apps/admin-e2e/src/support/user-util'; + +describe('Benutzer Löschen', () => { + const benutzerVerifier: E2EBenutzerVerifier = new E2EBenutzerVerifier(); + const benutzerHelper: E2EBenutzerHelper = new E2EBenutzerHelper(); + + const now1 = new Date(); + const userName: string = 'testtheo' + now1.getSeconds().toString() + now1.getMilliseconds().toString(); + const emailAddress: string = 'theo' + now1.getSeconds().toString() + now1.getMilliseconds().toString() + '@ozg-sh.de'; + const user: AdminUserE2E = { + vorname: 'Theo', + nachname: 'Testuser', + username: userName, + email: emailAddress, + isUser: true, + organisationseinheiten: [], + }; + + before(() => { + loginAsAriane(); + }); + + it('should delete user', () => { + benutzerHelper.openNewBenutzerPage(); + benutzerHelper.addBenutzerAndSave(user); + + benutzerHelper.deleteBenutzer(userName); + + benutzerVerifier.verifyUserNotInList(userName); + }); +}); diff --git a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.executor.ts b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.executor.ts index 9c8898bc0fcddef20b538919cc20bde8bc6e1993..81edc9afc775fc7dc28717d12c283062d4c79284 100644 --- a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.executor.ts +++ b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.executor.ts @@ -1,4 +1,8 @@ -import { BenutzerE2EComponent } from '../../components/benutzer/benutzer.e2e.component'; +import { + BenutzerDeleteDialogE2EComponent, + BenutzerE2EComponent, + BenutzerListE2EComponent, +} 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'; @@ -7,6 +11,8 @@ import { exist, notExist } from '../../support/cypress.util'; export class E2EBenutzerExecutor { private benutzerPage: BenutzerE2EComponent = new BenutzerE2EComponent(); private snackBar: SnackBarE2EComponent = new SnackBarE2EComponent(); + private benutzerDeleteDialog: BenutzerDeleteDialogE2EComponent = new BenutzerDeleteDialogE2EComponent(); + private benutzerListPage: BenutzerListE2EComponent = new BenutzerListE2EComponent(); public modifyBenutzer(user: AdminUserE2E): void { this.benutzerPage.getVornameInput().type(user.vorname); @@ -39,9 +45,17 @@ export class E2EBenutzerExecutor { exist(this.snackBar.getMessage()); this.snackBar.getCloseButton().click(); notExist(this.snackBar.getMessage()); + exist(this.benutzerListPage.getRoot()); } public saveBenutzer(): void { this.benutzerPage.getSaveButton().click(); } + + public deleteBenutzer(): void { + this.benutzerPage.getDeleteButton().click(); + exist(this.benutzerDeleteDialog.getDeleteButton()); + this.benutzerDeleteDialog.getDeleteButton().click(); + exist(this.benutzerListPage.getRoot()); + } } diff --git a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.helper.ts b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.helper.ts index 3f2b6be7847116296225a8c28d81fb86e37f9cf9..2b06766322f460cdb12f6ec065e19b9e79e756f0 100644 --- a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.helper.ts +++ b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.helper.ts @@ -17,32 +17,45 @@ export class E2EBenutzerHelper { public addBenutzerAndSave(user: AdminUserE2E): void { this.addBenutzer(user); - this.executer.saveAndCloseSnackbar(); + this.saveAndCloseSnackbar(); } public addBenutzer(user: AdminUserE2E): void { - this.executer.modifyBenutzer(user); - } - - public openBenutzerPage(userName: string): void { - this.navigator.openBenutzerPage(userName); + this.modifyBenutzer(user); } public editBenutzerAndSave(user: AdminUserE2E): void { this.editBenutzer(user); - this.executer.saveAndCloseSnackbar(); + this.saveAndCloseSnackbar(); } public editBenutzer(user: AdminUserE2E): void { + this.modifyBenutzer(user); + } + + private modifyBenutzer(user: AdminUserE2E): void { this.executer.modifyBenutzer(user); } public editOrganisationsEinheitenAndSave(organisationsEinheiten: OrganisationsEinheitE2E[]): void { this.executer.modifyOrganisationsEinheiten(organisationsEinheiten); + this.saveAndCloseSnackbar(); + } + + private saveAndCloseSnackbar(): void { this.executer.saveAndCloseSnackbar(); } public saveBenutzer(): void { this.executer.saveBenutzer(); } + + public deleteBenutzer(userName: string): void { + this.openBenutzerPage(userName); + this.executer.deleteBenutzer(); + } + + public openBenutzerPage(userName: string): void { + this.navigator.openBenutzerPage(userName); + } } diff --git a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.verifier.ts b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.verifier.ts index d0c33452341f51de81cefee2d0f7f0e610532c7b..be750e3dfbfe90c3821451932ecb475bd31cbbe5 100644 --- a/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.verifier.ts +++ b/alfa-client/apps/admin-e2e/src/helper/benutzer/benutzer.verifier.ts @@ -4,7 +4,7 @@ import { BenutzerListItemE2EComponent, } from '../../components/benutzer/benutzer.e2e.component'; import { AdminUserE2E } from '../../model/util'; -import { contains, exist } from '../../support/cypress.util'; +import { contains, exist, notExist } from '../../support/cypress.util'; import { AlfaRollen } from '../../support/user-util'; export class E2EBenutzerVerifier { @@ -41,6 +41,10 @@ export class E2EBenutzerVerifier { if (user.isAdmin) contains(benutzer.getRoles(), AlfaRollen.ADMIN); } + public verifyUserNotInList(userName: string): void { + notExist(this.getBenutzerItem(userName).getRoot()); + } + private getBenutzerItem(userName: string): BenutzerListItemE2EComponent { return this.benutzerListPage.getItem(userName); }