diff --git a/alfa-client/apps/admin-e2e/src/components/datenanfragen/datenanfragen-form.e2e.component.ts b/alfa-client/apps/admin-e2e/src/components/datenanfragen/datenanfragen-form.e2e.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..c8c7deab280b9dda7550166fd3e53695a174c51c --- /dev/null +++ b/alfa-client/apps/admin-e2e/src/components/datenanfragen/datenanfragen-form.e2e.component.ts @@ -0,0 +1,58 @@ +export class DatenanfragenFormE2EComponent { + private readonly root: string = 'auswertung-form'; + + private readonly nameInput: string = 'auswertung-name-text-input'; + private readonly formEngineInput: string = 'form-engine-name-text-input'; + private readonly formIdInput: string = 'form-id-text-input'; + private readonly dataFieldInputPrefix: string = 'auswertung-field-mapping-form-'; + private readonly sourceMappingFieldInputPrefix: string = 'source-mapping-field-'; + private readonly targetMappingFieldInputPrefix: string = 'target-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 getRoot(): Cypress.Chainable<Element> { + return cy.getTestElement(this.root); + } + + public getNameInput(): Cypress.Chainable<Element> { + return cy.getTestElement(this.nameInput); + } + + public getFormEngineInput(): Cypress.Chainable<Element> { + return cy.getTestElement(this.formEngineInput); + } + + public getFormIdInput(): Cypress.Chainable<Element> { + return cy.getTestElement(this.formIdInput); + } + + public getDataFieldInput(index: number): Cypress.Chainable<Element> { + return cy.getTestElement(`${this.dataFieldInputPrefix}${index}`); + } + + public getAddFieldButton(): Cypress.Chainable<Element> { + return cy.getTestElement(this.addDataFieldButton); + } + + public getSourceMappingFieldInput(index: number): Cypress.Chainable<Element> { + return cy.getTestElement(`${this.sourceMappingFieldInputPrefix}${index}-text-input`); + } + + public getTargetMappingFieldInput(index: number): Cypress.Chainable<Element> { + return cy.getTestElement(`${this.targetMappingFieldInputPrefix}${index}-text-input`); + } + + public getDataFieldDeleteButton(index: number): Cypress.Chainable<Element> { + return cy.getTestElement(this.deleteDataFieldButtonPrefix + index); + } + + public getSaveButton(): Cypress.Chainable<Element> { + return cy.getTestElement(this.saveButton); + } + + public getCancelButton(): Cypress.Chainable<Element> { + return cy.getTestElement(this.cancelButton); + } +} diff --git a/alfa-client/apps/admin-e2e/src/components/datenanfragen/datenanfragen.e2e.component.ts b/alfa-client/apps/admin-e2e/src/components/datenanfragen/datenanfragen.e2e.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..ee8426c061a319ffe93107b62ded9c5f9950287c --- /dev/null +++ b/alfa-client/apps/admin-e2e/src/components/datenanfragen/datenanfragen.e2e.component.ts @@ -0,0 +1,47 @@ +import { getTestElement } from '../../support/cypress-helper'; +import { convertToDataTestId } from '../../support/tech-util'; + +export class DatenanfragenE2EComponent { + private readonly headerText: string = 'auswertung-header-text'; + private readonly weitereFelderAuswertenButton = 'weitere-felder-auswerten-button'; + + public getHeaderText(): Cypress.Chainable<Element> { + return cy.getTestElement(this.headerText); + } + + public getWeitereFelderAuswertenButton(): Cypress.Chainable<Element> { + return cy.getTestElement(this.weitereFelderAuswertenButton); + } + + public getListItem(name: string): DatenanfragenListItemE2EComponent { + return new DatenanfragenListItemE2EComponent(name); + } +} + +export class DatenanfragenListItemE2EComponent { + private root: string; + + private readonly listItemName: string = 'list-item-name'; + private readonly listItemFormEngineName: string = 'list-item-form-engine-name'; + private readonly listItemFormId: string = 'list-item-form-id'; + + constructor(root: string) { + this.root = convertToDataTestId(root); + } + + public getRoot(): Cypress.Chainable<Element> { + return getTestElement(this.root); + } + + public getName(): Cypress.Chainable<Element> { + return this.getRoot().findTestElementWithClass(this.listItemName); + } + + public getFormEngineName(): Cypress.Chainable<Element> { + return this.getRoot().findTestElementWithClass(this.listItemFormEngineName); + } + + public getFormId(): Cypress.Chainable<Element> { + return this.getRoot().findTestElementWithClass(this.listItemFormId); + } +} diff --git a/alfa-client/apps/admin-e2e/src/e2e/main-tests/datenanfragen/auswertung-erstellen.cy.ts b/alfa-client/apps/admin-e2e/src/e2e/main-tests/datenanfragen/auswertung-erstellen.cy.ts index 9f702fb6d43dc936313e52ce4960f7b321576c5a..98002db9dd8dc980a75b54627e01ded12ddaed0e 100644 --- a/alfa-client/apps/admin-e2e/src/e2e/main-tests/datenanfragen/auswertung-erstellen.cy.ts +++ b/alfa-client/apps/admin-e2e/src/e2e/main-tests/datenanfragen/auswertung-erstellen.cy.ts @@ -1,18 +1,18 @@ import { Auswertung, FieldMapping } from '@admin-client/reporting-shared'; -import { AuswertungFormE2EComponent } from '../../../components/auswertung/auswertung-form.e2e.component'; -import { AuswertungE2EComponent } from '../../../components/auswertung/auswertung.e2e.component'; -import { E2EAuswertungHelper } from '../../../helper/auswertung/auswertung.helper'; -import { E2EAuswertungVerifier } from '../../../helper/auswertung/auswertung.verifier'; +import { DatenanfragenFormE2EComponent } from '../../../components/datenanfragen/datenanfragen-form.e2e.component'; +import { DatenanfragenE2EComponent } from '../../../components/datenanfragen/datenanfragen.e2e.component'; +import { E2EDatenanfragenHelper } from '../../../helper/datenanfragen/datenanfragen.helper'; +import { E2EDatenanfragenVerifier } from '../../../helper/datenanfragen/datenanfragen.verifier'; import { dropCollections } from '../../../support/cypress-helper'; import { exist, notExist } from '../../../support/cypress.util'; import { loginAsDaria } from '../../../support/user-util'; describe('Datenanfrage erstellen', () => { - const page: AuswertungE2EComponent = new AuswertungE2EComponent(); - const form: AuswertungFormE2EComponent = new AuswertungFormE2EComponent(); + const page: DatenanfragenE2EComponent = new DatenanfragenE2EComponent(); + const form: DatenanfragenFormE2EComponent = new DatenanfragenFormE2EComponent(); - const helper: E2EAuswertungHelper = new E2EAuswertungHelper(); - const verifier: E2EAuswertungVerifier = new E2EAuswertungVerifier(); + const helper: E2EDatenanfragenHelper = new E2EDatenanfragenHelper(); + const verifier: E2EDatenanfragenVerifier = new E2EDatenanfragenVerifier(); const fieldMapping0: FieldMapping = { sourcePath: '/path/to/source/a', diff --git a/alfa-client/apps/admin-e2e/src/helper/datenanfragen/datenanfragen.executor.ts b/alfa-client/apps/admin-e2e/src/helper/datenanfragen/datenanfragen.executor.ts new file mode 100644 index 0000000000000000000000000000000000000000..f3c1d934cc04f203b5ca09038d045b900f739f98 --- /dev/null +++ b/alfa-client/apps/admin-e2e/src/helper/datenanfragen/datenanfragen.executor.ts @@ -0,0 +1,22 @@ +import { Auswertung, FieldMapping } from '@admin-client/reporting-shared'; +import { AuswertungFormE2EComponent } from '../../components/auswertung/auswertung-form.e2e.component'; +import { enterWith } from '../../support/cypress.util'; + +export class E2EDatenanfragenExecutor { + private formComponent: AuswertungFormE2EComponent = new AuswertungFormE2EComponent(); + + public fillFormular(Auswertung: Auswertung): void { + enterWith(this.formComponent.getNameInput(), Auswertung.name); + enterWith(this.formComponent.getFormEngineInput(), Auswertung.formIdentifier.formEngineName); + enterWith(this.formComponent.getFormIdInput(), Auswertung.formIdentifier.formId); + + Auswertung.mappings.forEach((fieldMapping, index) => { + this.enterFieldMapping(fieldMapping, index); + }); + } + + private enterFieldMapping(fieldMapping: FieldMapping, index: number): void { + enterWith(this.formComponent.getSourceMappingFieldInput(index), fieldMapping.sourcePath); + enterWith(this.formComponent.getTargetMappingFieldInput(index), fieldMapping.targetPath); + } +} diff --git a/alfa-client/apps/admin-e2e/src/helper/datenanfragen/datenanfragen.helper.ts b/alfa-client/apps/admin-e2e/src/helper/datenanfragen/datenanfragen.helper.ts new file mode 100644 index 0000000000000000000000000000000000000000..7026d7d27f3af4f3633ae2f2edeba2fa38b1371b --- /dev/null +++ b/alfa-client/apps/admin-e2e/src/helper/datenanfragen/datenanfragen.helper.ts @@ -0,0 +1,16 @@ +import { Auswertung } from '@admin-client/reporting-shared'; +import { E2EDatenanfragenExecutor } from './datenanfragen.executor'; +import { E2EDatenanfragenNavigator } from './datenanfragen.navigator'; + +export class E2EDatenanfragenHelper { + private readonly navigator: E2EDatenanfragenNavigator = new E2EDatenanfragenNavigator(); + private readonly executor: E2EDatenanfragenExecutor = new E2EDatenanfragenExecutor(); + + public openDatenanfragen(): void { + this.navigator.openDatenanfragen(); + } + + public fillFormular(Auswertung: Auswertung): void { + this.executor.fillFormular(Auswertung); + } +} diff --git a/alfa-client/apps/admin-e2e/src/helper/datenanfragen/datenanfragen.navigator.ts b/alfa-client/apps/admin-e2e/src/helper/datenanfragen/datenanfragen.navigator.ts new file mode 100644 index 0000000000000000000000000000000000000000..832db3fd9d54a1f897932ca0efc21ae906690bfb --- /dev/null +++ b/alfa-client/apps/admin-e2e/src/helper/datenanfragen/datenanfragen.navigator.ts @@ -0,0 +1,18 @@ +import { DatenanfragenE2EComponent } from '../../components/datenanfragen/datenanfragen.e2e.component'; +import { MainPage } from '../../page-objects/main.po'; +import { exist } from '../../support/cypress.util'; +import { E2EAppHelper } from '../app.helper'; + +export class E2EDatenanfragenNavigator { + private readonly appHelper: E2EAppHelper = new E2EAppHelper(); + + private readonly mainPage: MainPage = new MainPage(); + + private readonly AuswertungPage: DatenanfragenE2EComponent = new DatenanfragenE2EComponent(); + + public openDatenanfragen(): void { + this.appHelper.navigateToDomain(); + this.mainPage.getDatenAnfragenNavigationItem().getRoot().click(); + exist(this.AuswertungPage.getHeaderText()); + } +} diff --git a/alfa-client/apps/admin-e2e/src/helper/datenanfragen/datenanfragen.verifier.ts b/alfa-client/apps/admin-e2e/src/helper/datenanfragen/datenanfragen.verifier.ts new file mode 100644 index 0000000000000000000000000000000000000000..eef9bf1475bc7bd1eddbe280e654f742ab667711 --- /dev/null +++ b/alfa-client/apps/admin-e2e/src/helper/datenanfragen/datenanfragen.verifier.ts @@ -0,0 +1,34 @@ +import { Auswertung, FieldMapping } from '@admin-client/reporting-shared'; +import { DatenanfragenFormE2EComponent } from '../../components/datenanfragen/datenanfragen-form.e2e.component'; +import { + DatenanfragenE2EComponent, + DatenanfragenListItemE2EComponent, +} from '../../components/datenanfragen/datenanfragen.e2e.component'; +import { haveText, haveValue } from '../../support/cypress.util'; + +export class E2EDatenanfragenVerifier { + private component: DatenanfragenE2EComponent = new DatenanfragenE2EComponent(); + private formComponent: DatenanfragenFormE2EComponent = new DatenanfragenFormE2EComponent(); + + public verifyFieldMapping(fieldMapping: FieldMapping, index: number): void { + haveValue(this.formComponent.getSourceMappingFieldInput(index), fieldMapping.sourcePath); + haveValue(this.formComponent.getTargetMappingFieldInput(index), fieldMapping.targetPath); + } + + public verifyForm(Auswertung: Auswertung): void { + haveValue(this.formComponent.getNameInput(), Auswertung.name); + haveValue(this.formComponent.getFormEngineInput(), Auswertung.formIdentifier.formEngineName); + haveValue(this.formComponent.getFormIdInput(), Auswertung.formIdentifier.formId); + + Auswertung.mappings.forEach((fieldMapping, index) => { + this.verifyFieldMapping(fieldMapping, index); + }); + } + + public verifyAuswertungInList(Auswertung: Auswertung): void { + const listItem: DatenanfragenListItemE2EComponent = this.component.getListItem(Auswertung.name); + haveText(listItem.getName(), Auswertung.name); + haveText(listItem.getFormEngineName(), Auswertung.formIdentifier.formEngineName); + haveText(listItem.getFormId(), Auswertung.formIdentifier.formId); + } +}