diff --git a/goofy-client/apps/goofy-e2e/src/components/user-profile/user-profile-icon.component.e2e.ts b/goofy-client/apps/goofy-e2e/src/components/user-profile/user-profile-icon.component.e2e.ts index 0a7e990359fdefef128035043c8ca697bf360aa1..22d633cbd6ef3df66655d92a562b329515b18465 100644 --- a/goofy-client/apps/goofy-e2e/src/components/user-profile/user-profile-icon.component.e2e.ts +++ b/goofy-client/apps/goofy-e2e/src/components/user-profile/user-profile-icon.component.e2e.ts @@ -30,6 +30,8 @@ export class UserProfileIconE2EComponent { private readonly locatorErrorNotFoundIcon: string = 'user-profile-user-not-found'; private readonly locatorErrorServiceUnavailableIcon: string = 'user-profile-service-unavailable'; + private readonly locatorUserProfileButton: string = 'user-profile-button-container'; + constructor(private root: string) { } public getRoot() { @@ -51,4 +53,8 @@ export class UserProfileIconE2EComponent { public getErrorServiceUnavailableIcon() { return this.getRoot().findTestElementWithClass(this.locatorErrorServiceUnavailableIcon); } + + public getButton() { + return this.getRoot().getTestElement(this.locatorUserProfileButton); + } } \ No newline at end of file diff --git a/goofy-client/apps/goofy-e2e/src/components/vorgang/vorgang-views.e2e.component.ts b/goofy-client/apps/goofy-e2e/src/components/vorgang/vorgang-views.e2e.component.ts index b01c90c5bce28fd9bc70fed3576cb421904df7f7..67c59701fbdfae208d5c698dc08900eb0a4b79fa 100644 --- a/goofy-client/apps/goofy-e2e/src/components/vorgang/vorgang-views.e2e.component.ts +++ b/goofy-client/apps/goofy-e2e/src/components/vorgang/vorgang-views.e2e.component.ts @@ -6,6 +6,7 @@ export class VorgangViewsE2EComponent { private readonly beschiedenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Beschieden'); private readonly abgeschlossenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Abgeschlossen'); private readonly verworfenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Verworfen'); + private readonly zuLoeschenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Zu_Loschen'); private readonly wiedervorlagenViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Wiedervorlagen'); private readonly vorgangListViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Vorgangsliste'); private readonly searchViewItem: VorgangViewE2EComponent = new VorgangViewE2EComponent('Suche'); @@ -34,6 +35,10 @@ export class VorgangViewsE2EComponent { return this.verworfenViewItem; } + public getZuLoeschen(): VorgangViewE2EComponent { + return this.zuLoeschenViewItem; + } + public getWiedervorlagen(): VorgangViewE2EComponent { return this.wiedervorlagenViewItem; } diff --git a/goofy-client/apps/goofy-e2e/src/components/wiedervorlage/wiedervorlagen-in-vorgang.e2e.component.ts b/goofy-client/apps/goofy-e2e/src/components/wiedervorlage/wiedervorlagen-in-vorgang.e2e.component.ts index 584bca9578117e6d7bf653a04c54047bdbd5de89..d9497489f12cee13adfac06b7b4840f5ac798c2a 100644 --- a/goofy-client/apps/goofy-e2e/src/components/wiedervorlage/wiedervorlagen-in-vorgang.e2e.component.ts +++ b/goofy-client/apps/goofy-e2e/src/components/wiedervorlage/wiedervorlagen-in-vorgang.e2e.component.ts @@ -41,6 +41,6 @@ export class WiedervorlagenInVorgangE2EComponent { } public getCreateWiedervorlageButton() { - return this.buttonWithSpinnerComponent.findButton(cy.getTestElement(this.locatorCreateWiedervorlageButton)); + return cy.getTestElement(this.locatorCreateWiedervorlageButton); } } \ No newline at end of file diff --git a/goofy-client/apps/goofy-e2e/src/integration/main-tests/accessibility/vorgang-list.spec-e2e.ts b/goofy-client/apps/goofy-e2e/src/integration/main-tests/accessibility/vorgang-list.spec-e2e.ts index f4ec1684bcca26763b8fb09b92538c5b1fc329ee..f59859fd43c2327673eff21241393784e9ee9439 100644 --- a/goofy-client/apps/goofy-e2e/src/integration/main-tests/accessibility/vorgang-list.spec-e2e.ts +++ b/goofy-client/apps/goofy-e2e/src/integration/main-tests/accessibility/vorgang-list.spec-e2e.ts @@ -9,7 +9,7 @@ import { dropCollections, pressTab } from 'apps/goofy-e2e/src/support/cypress-he import { exist } from 'apps/goofy-e2e/src/support/cypress.util'; import { getUserManagerUserSabine, initUsermanagerUsers, loginAsSabine } from 'apps/goofy-e2e/src/support/user-util'; -describe.skip('VorgangList Page', () => { +describe('VorgangList Page', () => { const mainPage: MainPage = new MainPage(); const header: HeaderE2EComponent = mainPage.getHeader(); const vorgangSearch: VorgangSearchE2EComponent = header.getVorgangSearch(); @@ -136,6 +136,12 @@ describe.skip('VorgangList Page', () => { isKeyboardFocused(views.getVerworfen().getButton()); }) + it('should focus Zu Löschen view', () => { + pressTab(); + + isKeyboardFocused(views.getZuLoeschen().getButton()); + }) + it('should focus Wiedervorlagen view', () => { pressTab(); diff --git a/goofy-client/apps/goofy-e2e/src/integration/main-tests/vorgang-detailansicht/vorgang-loeschen-anfordern.e2e-spec.ts b/goofy-client/apps/goofy-e2e/src/integration/main-tests/vorgang-detailansicht/vorgang-loeschen-anfordern.e2e-spec.ts index 44d79b877c0f52e9570319693d681dde10e60d1c..44a8b653b7f10fb9aa39dbc9cd3f0d90172f1e9c 100644 --- a/goofy-client/apps/goofy-e2e/src/integration/main-tests/vorgang-detailansicht/vorgang-loeschen-anfordern.e2e-spec.ts +++ b/goofy-client/apps/goofy-e2e/src/integration/main-tests/vorgang-detailansicht/vorgang-loeschen-anfordern.e2e-spec.ts @@ -21,7 +21,17 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +import { registerLocaleData } from '@angular/common'; +import localeDe from '@angular/common/locales/de'; +import localeDeExtra from '@angular/common/locales/extra/de'; +import { KommentareInVorgangE2EComponent } from 'apps/goofy-e2e/src/components/kommentar/kommentar-list.e2e.component'; +import { PostfachMailE2EComponent } from 'apps/goofy-e2e/src/components/postfach/postfach-mail.e2e.component'; +import { UserProfileE2EComponent } from 'apps/goofy-e2e/src/components/user-profile/user-profile.component.e2e'; import { VorgangFormularButtonsE2EComponent } from 'apps/goofy-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components'; +import { WiedervorlageInVorgangE2EComponent } from 'apps/goofy-e2e/src/components/wiedervorlage/wiedervorlage-in-vorgang.e2e.component'; +import { WiedervorlageE2EComponent } from 'apps/goofy-e2e/src/components/wiedervorlage/wiedervorlage-page.e2e.component'; +import { WiedervorlagePage } from 'apps/goofy-e2e/src/page-objects/wiedervorlage.po'; +import { formatDateLocal } from 'apps/goofy-e2e/src/support/tech.util'; import { SnackBarE2EComponent } from '../../../components/ui/snackbar.e2e.component'; import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component'; import { VorgangE2E, VorgangMessagesE2E, VorgangStatusE2E, vorgangStatusLabelE2E } from '../../../model/vorgang'; @@ -32,6 +42,8 @@ import { contains, exist, haveText, notExist } from '../../../support/cypress.ut import { loginAsSabine } from '../../../support/user-util'; import { buildVorgang, initVorgaenge, objectIds } from '../../../support/vorgang-util'; +registerLocaleData(localeDe, 'de', localeDeExtra); + describe('Vorgang löschen anfordern', () => { const mainPage: MainPage = new MainPage(); const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList(); @@ -45,6 +57,12 @@ describe('Vorgang löschen anfordern', () => { const vorgangVerworfenLoeschenAnfordern: VorgangE2E = { ...buildVorgang(objectIds[2], 'DoVerworfenLoeschenAnfordern'), status: VorgangStatusE2E.VERWORFEN }; const vorgangVerworfenLoeschenAnfordernRevoke: VorgangE2E = { ...buildVorgang(objectIds[3], 'DoVerworfenRevokeLoeschenAnfordern'), status: VorgangStatusE2E.VERWORFEN }; + const wiedervorlagePage: WiedervorlagePage = new WiedervorlagePage(); + const wiedervorlageContainer: WiedervorlageE2EComponent = wiedervorlagePage.getWiedervorlageContainer(); + const wiedervorlageBetreff: string = 'TestWiedervorlage'; + const wiedervorlageBeschreibung: string = 'Beschreibung einer Wiedervorlage'; + const wiedervorlageFrist: string = formatDateLocal(new Date(), 'dd.MM.yyyy'); + before(() => { initVorgaenge([vorgangAbgeschlossenLoeschenAnfordern, vorgangAbgeschlossenLoeschenAnfordernRevoke, vorgangVerworfenLoeschenAnfordern, vorgangVerworfenLoeschenAnfordernRevoke]); @@ -69,6 +87,24 @@ describe('Vorgang löschen anfordern', () => { describe('by button', () => { + it('should create Wiedervorlage', () => { + vorgangPage.getWiedervorlagenContainer().getCreateWiedervorlageButton().click(); + waitForSpinnerToDisappear(); + + exist(wiedervorlagePage.getSubnavigation().getRoot()); + + wiedervorlageContainer.getBetreff().clear().type(wiedervorlageBetreff); + wiedervorlageContainer.getBeschreibung().clear().type(wiedervorlageBeschreibung); + wiedervorlageContainer.getFrist().clear().type(wiedervorlageFrist); + + wiedervorlageContainer.getSpeichernButton().click(); + waitForSpinnerToDisappear(); + + const wiedervorlageInVorgang: WiedervorlageInVorgangE2EComponent = vorgangPage.getWiedervorlagenContainer().getWiedervorlage(wiedervorlageBetreff); + + exist(wiedervorlageInVorgang.getLink()); + }) + it('should have status Abgeschlossen', () => { haveText(vorgangPage.getVorgangDetailHeader().getStatus(), vorgangStatusLabelE2E[vorgangAbgeschlossenLoeschenAnfordern.status]); }) @@ -104,6 +140,61 @@ describe('Vorgang löschen anfordern', () => { }) }) + describe('Disable functions', () => { + + it('Open Vorgang-Detail-Page', () => { + vorgangList.getListItem(vorgangAbgeschlossenLoeschenAnfordern.name).getRoot().click(); + waitForSpinnerToDisappear(); + + exist(vorgangPage.getVorgangDetailHeader().getRoot()); + }) + + it('should not have add comment button', () => { + const kommentarContainer: KommentareInVorgangE2EComponent = vorgangPage.getKommentarContainer(); + + notExist(kommentarContainer.getHinzufuegenButton()); + }) + + it('should disable edit comment', () => { + const kommentarContainer: KommentareInVorgangE2EComponent = vorgangPage.getKommentarContainer(); + + notExist(kommentarContainer.getFormular()); + }) + + it('should not have create postfach mail buttons', () => { + const postfachMailContainer: PostfachMailE2EComponent = vorgangPage.getPostfachMailcontainer(); + + notExist(postfachMailContainer.getCreateButtonWithoutText()); + notExist(postfachMailContainer.getCreateButtonWithText()); + }) + + it('should not have add wiedervorlage button', () => { + const createWiedervorlageButton = vorgangPage.getWiedervorlagenContainer().getCreateWiedervorlageButton(); + + notExist(createWiedervorlageButton); + }) + + it('should disable open Wiedervorlage-Page link ', () => { + const wiedervorlageInVorgang: WiedervorlageInVorgangE2EComponent = vorgangPage.getWiedervorlagenContainer().getWiedervorlage(wiedervorlageBetreff); + + notExist(wiedervorlageInVorgang.getLink()); + }) + + it('should not have user assign button', () => { + const userProfileContainer: UserProfileE2EComponent = vorgangPage.getVorgangDetailHeader().getUserContainer(); + + notExist(userProfileContainer.getIconContainer().getButton()); + }) + + it('back to vorgang list', () => { + vorgangPage.getSubnavigation().clickBackButton(); + waitForSpinnerToDisappear(); + + exist(vorgangList.getRoot()); + }) + + }) + describe('Abgeschlossen: löschen anfordern und rückgängig machen', () => { it('Open Vorgang-Detail-Page', () => { diff --git a/goofy-client/apps/goofy-e2e/src/integration/main-tests/vorgang-list/vorgang-views-filter.spec-e2e.ts b/goofy-client/apps/goofy-e2e/src/integration/main-tests/vorgang-list/vorgang-views-filter.spec-e2e.ts index 0252f365c41602fcecb2f23a9c5a94e4cb0074c2..c8ca509faf965cedd1ea872910c5574240019368 100644 --- a/goofy-client/apps/goofy-e2e/src/integration/main-tests/vorgang-list/vorgang-views-filter.spec-e2e.ts +++ b/goofy-client/apps/goofy-e2e/src/integration/main-tests/vorgang-list/vorgang-views-filter.spec-e2e.ts @@ -33,6 +33,7 @@ describe('Vorgang views and filter', () => { const beschiedenView: VorgangViewE2EComponent = views.getBeschieden(); const abgeschlossenView: VorgangViewE2EComponent = views.getAbgeschlossen(); const verworfenView: VorgangViewE2EComponent = views.getVerworfen(); + const zuLoeschenView: VorgangViewE2EComponent = views.getZuLoeschen(); const wiedervorlagenView: VorgangViewE2EComponent = views.getWiedervorlagen(); const vorgangListView: VorgangViewE2EComponent = views.getVorgangList(); const sucheView: VorgangViewE2EComponent = views.getSuche(); @@ -60,7 +61,8 @@ describe('Vorgang views and filter', () => { const vorgangVerworfenAssigned: VorgangE2E = { ...buildVorgang(objectIds[9], 'VorgangVerworfenAssigned'), status: VorgangStatusE2E.VERWORFEN, assignedTo: getUserSabineInternalId() }; const vorgangVerworfenUnassigned: VorgangE2E = { ...buildVorgang(objectIds[10], 'VorgangVerworfenUnassigned'), status: VorgangStatusE2E.VERWORFEN }; - + const vorgangZuLoeschenAssigned: VorgangE2E = { ...buildVorgang(objectIds[11], 'VorgangZuLoeschenAssigned'), status: VorgangStatusE2E.ZU_LOESCHEN, assignedTo: getUserSabineInternalId() }; + const vorgangZuLoeschenUnassigned: VorgangE2E = { ...buildVorgang(objectIds[12], 'VorgangZuLoeschenUnassigned'), status: VorgangStatusE2E.ZU_LOESCHEN }; const vorgangNeuAssignedInList: VorgangListItemE2EComponent = vorgangList.getListItem(vorgangNeuAssigned.name); const vorgangNeuUnassignedInList: VorgangListItemE2EComponent = vorgangList.getListItem(vorgangNeuUnassigned.name); @@ -80,7 +82,10 @@ describe('Vorgang views and filter', () => { const vorgangVerworfenAssignedInList: VorgangListItemE2EComponent = vorgangList.getListItem(vorgangVerworfenAssigned.name); const vorgangVerworfenUnassignedInList: VorgangListItemE2EComponent = vorgangList.getListItem(vorgangVerworfenUnassigned.name); - const LIST_SIZE: number = 12; + const vorgangZuLoeschenAssignedInList: VorgangListItemE2EComponent = vorgangList.getListItem(vorgangZuLoeschenAssigned.name); + const vorgangZuLoeschenUnassignedInList: VorgangListItemE2EComponent = vorgangList.getListItem(vorgangZuLoeschenUnassigned.name); + + const LIST_SIZE: number = 14; before(() => { const vorgaenge: VorgangE2E[] = [vorgangNeuAssigned, vorgangNeuUnassigned, @@ -88,7 +93,9 @@ describe('Vorgang views and filter', () => { vorgangInBearbeitungAssigned, vorgangInBearbeitungUnassigned, vorgangBeschiedenAssigned, vorgangBeschiedenUnassigned, vorgangAbgeschlossenAssigned, vorgangAbgeschlossenUnassigned, - vorgangVerworfenAssigned, vorgangVerworfenUnassigned]; + vorgangVerworfenAssigned, vorgangVerworfenUnassigned, + vorgangZuLoeschenAssigned, vorgangZuLoeschenUnassigned + ]; initVorgaenge(vorgaenge); initSearchIndex(vorgaenge); @@ -143,6 +150,7 @@ describe('Vorgang views and filter', () => { isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(sucheView.getRoot()); }) @@ -172,6 +180,10 @@ describe('Vorgang views and filter', () => { contains(verworfenView.getCount(), '2'); }) + it('zu löschen', () => { + contains(zuLoeschenView.getCount(), '2'); + }) + it('wiedervorlagen', () => { contains(wiedervorlagenView.getCount(), '2'); }) @@ -196,6 +208,7 @@ describe('Vorgang views and filter', () => { isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); isNotSelected(sucheView.getRoot()); }) @@ -222,12 +235,13 @@ describe('Vorgang views and filter', () => { isSelected(angenommenView.getRoot()); }) - it.skip('should unselect other views', () => { + it('should unselect other views', () => { isNotSelected(neuView.getRoot()); isNotSelected(inBearbeitungView.getRoot()); isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); isNotSelected(sucheView.getRoot()); }) @@ -260,6 +274,7 @@ describe('Vorgang views and filter', () => { isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); isNotSelected(sucheView.getRoot()); }) @@ -271,7 +286,7 @@ describe('Vorgang views and filter', () => { }) it('should filter List', () => { - haveLength(vorgangList.getItems(), LIST_SIZE - 10); + haveLength(vorgangList.getItems(), LIST_SIZE - 12); exist(vorgangInBearbeitungAssignedInList.getRoot()); exist(vorgangInBearbeitungUnassignedInList.getRoot()); }) @@ -292,6 +307,7 @@ describe('Vorgang views and filter', () => { isNotSelected(inBearbeitungView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); isNotSelected(sucheView.getRoot()); }) @@ -303,7 +319,7 @@ describe('Vorgang views and filter', () => { }) it('should filter List', () => { - haveLength(vorgangList.getItems(), LIST_SIZE - 10); + haveLength(vorgangList.getItems(), LIST_SIZE - 12); exist(vorgangBeschiedenAssignedInList.getRoot()); exist(vorgangBeschiedenUnassignedInList.getRoot()); }) @@ -324,6 +340,7 @@ describe('Vorgang views and filter', () => { isNotSelected(inBearbeitungView.getRoot()); isNotSelected(beschiedenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); isNotSelected(sucheView.getRoot()); }) @@ -335,7 +352,7 @@ describe('Vorgang views and filter', () => { }) it('should filter List', () => { - haveLength(vorgangList.getItems(), LIST_SIZE - 10); + haveLength(vorgangList.getItems(), LIST_SIZE - 12); exist(vorgangAbgeschlossenAssignedInList.getRoot()); exist(vorgangAbgeschlossenUnassignedInList.getRoot()); }) @@ -356,6 +373,7 @@ describe('Vorgang views and filter', () => { isNotSelected(inBearbeitungView.getRoot()); isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); isNotSelected(sucheView.getRoot()); }) @@ -367,12 +385,45 @@ describe('Vorgang views and filter', () => { }) it('should filter List', () => { - haveLength(vorgangList.getItems(), LIST_SIZE - 10); + haveLength(vorgangList.getItems(), LIST_SIZE - 12); exist(vorgangVerworfenAssignedInList.getRoot()); exist(vorgangVerworfenUnassignedInList.getRoot()); }) }) + describe('Zu Löschen', () => { + + it('should set selected after click', () => { + zuLoeschenView.getRoot().click(); + waitForSpinnerToDisappear(); + + isSelected(zuLoeschenView.getRoot()); + }) + + it('should unselect other views', () => { + isNotSelected(neuView.getRoot()); + isNotSelected(angenommenView.getRoot()); + isNotSelected(inBearbeitungView.getRoot()); + isNotSelected(beschiedenView.getRoot()); + isNotSelected(abgeschlossenView.getRoot()); + isNotSelected(verworfenView.getRoot()); + isNotSelected(vorgangListView.getRoot()); + isNotSelected(sucheView.getRoot()); + }) + + it('should keep filter selection', () => { + isButtonToggleChecked(navigation.getAlleFilter()); + isButtonToggleNotChecked(navigation.getMeineVorgaengeFilter()); + isButtonToggleNotChecked(navigation.getNichtZugewiesenFilter()); + }) + + it('should filter List', () => { + haveLength(vorgangList.getItems(), LIST_SIZE - 12); + exist(vorgangZuLoeschenAssignedInList.getRoot()); + exist(vorgangZuLoeschenUnassignedInList.getRoot()); + }) + }) + describe('Wiedervorlagen', () => { it('should set selected after click', () => { @@ -389,6 +440,7 @@ describe('Vorgang views and filter', () => { isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); isNotSelected(sucheView.getRoot()); }) @@ -422,6 +474,7 @@ describe('Vorgang views and filter', () => { isNotSelected(inBearbeitungView.getRoot()); isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(verworfenView.getRoot()); isNotSelected(sucheView.getRoot()); }) @@ -452,6 +505,7 @@ describe('Vorgang views and filter', () => { isNotSelected(inBearbeitungView.getRoot()); isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(verworfenView.getRoot()); isNotSelected(vorgangListView.getRoot()); }) @@ -496,6 +550,7 @@ describe('Vorgang views and filter', () => { isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); }) @@ -526,6 +581,7 @@ describe('Vorgang views and filter', () => { isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); }) @@ -562,6 +618,7 @@ describe('Vorgang views and filter', () => { isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); }) }) @@ -594,6 +651,7 @@ describe('Vorgang views and filter', () => { isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); }) }) @@ -629,6 +687,7 @@ describe('Vorgang views and filter', () => { isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); }) }) @@ -667,6 +726,7 @@ describe('Vorgang views and filter', () => { isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); }) }) @@ -699,6 +759,7 @@ describe('Vorgang views and filter', () => { isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); }) }) @@ -735,6 +796,7 @@ describe('Vorgang views and filter', () => { isNotSelected(beschiedenView.getRoot()); isNotSelected(abgeschlossenView.getRoot()); isNotSelected(verworfenView.getRoot()); + isNotSelected(zuLoeschenView.getRoot()); isNotSelected(vorgangListView.getRoot()); }) }) diff --git a/goofy-client/apps/goofy-e2e/src/support/tech.util.ts b/goofy-client/apps/goofy-e2e/src/support/tech.util.ts index eb018fbd50b9e2a7367e4e5c3d1741696d1f28bb..fb41b54279a6218940dd985f5600cce9566dd0bb 100644 --- a/goofy-client/apps/goofy-e2e/src/support/tech.util.ts +++ b/goofy-client/apps/goofy-e2e/src/support/tech.util.ts @@ -65,13 +65,21 @@ export function buildUrl(id: string, pathPrefix: string) { } export function convertToDataTestId(value: string): string { - return value == null || value == undefined ? null : replaceAllWhitespaces(value, '_'); + if (value == null || value == undefined) { + return null; + } + value = replaceAllWhitespaces(value, '_'); + return simpleTransliteration(value); } export function replaceAllWhitespaces(value: string, replaceWith: string): string { return value.replace(/ /g, replaceWith); } +export function simpleTransliteration(value: string) { + return value.normalize('NFKD').replace(/[^-_\w]/g, ''); +} + export function createDateToday(): string { return formatDateLocal(new Date(), 'yyyy-MM-dd'); } diff --git a/goofy-client/libs/tech-shared/src/lib/tech.util.spec.ts b/goofy-client/libs/tech-shared/src/lib/tech.util.spec.ts index 415adf209a665ed5d1fd3152832cd7e082d4e452..f775e7687b5587a488d9672ee2c895c455257af7 100644 --- a/goofy-client/libs/tech-shared/src/lib/tech.util.spec.ts +++ b/goofy-client/libs/tech-shared/src/lib/tech.util.spec.ts @@ -22,7 +22,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ import { faker } from '@faker-js/faker'; -import { allEmpty, convertForDataTest, decodeUrlFromEmbedding, EMPTY_STRING, encodeUrlForEmbedding, getFirstLetter, getStringValue, hasMinLength, isNotEmpty, isNotNil, isNotNull, replaceAllWhitespaces, replacePlaceholder, replacePlaceholders } from './tech.util'; +import { allEmpty, convertForDataTest, decodeUrlFromEmbedding, EMPTY_STRING, encodeUrlForEmbedding, getFirstLetter, getStringValue, hasMinLength, isNotEmpty, isNotNil, isNotNull, replaceAllWhitespaces, replacePlaceholder, replacePlaceholders, simpleTransliteration } from './tech.util'; describe('TechUtil', () => { @@ -37,6 +37,17 @@ describe('TechUtil', () => { }) }) + describe('simpleTransliteration', () => { + + it('should replace whitespaces in value', () => { + const value: string = 'áàâäãéèëêíìïîóòöôõúùüûñçăşţ-_'; + + const result: string = simpleTransliteration(value); + + expect(result).toBe('aaaaaeeeeiiiiooooouuuuncast-_'); + }) + }) + describe('replace placeholder', () => { it('should replace with value', () => { @@ -222,12 +233,12 @@ describe('TechUtil', () => { describe('convertForDataTest', () => { - it('should replace whitespaces in value', () => { - const value: string = 'value to replace whitespaces'; + it('should replace whitespaces and transliterate Umlauts in value', () => { + const value: string = 'value to replace whitespaces and Ümläuts with Öös'; const result: string = convertForDataTest(value); - expect(result).toBe('value_to_replace_whitespaces'); + expect(result).toBe('value_to_replace_whitespaces_and_Umlauts_with_Oos'); }) }) diff --git a/goofy-client/libs/tech-shared/src/lib/tech.util.ts b/goofy-client/libs/tech-shared/src/lib/tech.util.ts index 79f5c796f438b6962752ce32989b5906dc7c3265..3263b7d98e04227d1434af9888e843785374a6c5 100644 --- a/goofy-client/libs/tech-shared/src/lib/tech.util.ts +++ b/goofy-client/libs/tech-shared/src/lib/tech.util.ts @@ -43,6 +43,10 @@ export function replaceAllWhitespaces(value: string, replaceWith: string) { return value.replace(/ /g, replaceWith); } +export function simpleTransliteration(value: string) { + return value.normalize('NFKD').replace(/[^-_\w]/g, ''); +} + export function replacePlaceholders(text: string, placeholders: { [key: string]: string }): string { let replaced = text; Object.keys(placeholders).forEach(key => replaced = replacePlaceholder(replaced, key, placeholders[key])); @@ -88,7 +92,8 @@ export function hasMinLength(value: any, length: number): boolean { } export function convertForDataTest(value: string): string { - return replaceAllWhitespaces(value, '_'); + value = replaceAllWhitespaces(value, '_'); + return simpleTransliteration(value); } export function getStringValue(value: null | undefined | string): string {