Skip to content
Snippets Groups Projects
Commit 354dc2c6 authored by Cord Westhoff's avatar Cord Westhoff
Browse files

OZG-8086 OZG-8172 add components and helper methods

parent cac83437
Branches
No related tags found
2 merge requests!144OZG-8086 Refactor tab handling; use existing components; inverse dependencies,!142Ozg 8086 statistik datenanfrage erstellen
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);
}
}
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);
}
}
import { Auswertung, FieldMapping } from '@admin-client/reporting-shared'; import { Auswertung, FieldMapping } from '@admin-client/reporting-shared';
import { AuswertungFormE2EComponent } from '../../../components/auswertung/auswertung-form.e2e.component'; import { DatenanfragenFormE2EComponent } from '../../../components/datenanfragen/datenanfragen-form.e2e.component';
import { AuswertungE2EComponent } from '../../../components/auswertung/auswertung.e2e.component'; import { DatenanfragenE2EComponent } from '../../../components/datenanfragen/datenanfragen.e2e.component';
import { E2EAuswertungHelper } from '../../../helper/auswertung/auswertung.helper'; import { E2EDatenanfragenHelper } from '../../../helper/datenanfragen/datenanfragen.helper';
import { E2EAuswertungVerifier } from '../../../helper/auswertung/auswertung.verifier'; import { E2EDatenanfragenVerifier } from '../../../helper/datenanfragen/datenanfragen.verifier';
import { dropCollections } from '../../../support/cypress-helper'; import { dropCollections } from '../../../support/cypress-helper';
import { exist, notExist } from '../../../support/cypress.util'; import { exist, notExist } from '../../../support/cypress.util';
import { loginAsDaria } from '../../../support/user-util'; import { loginAsDaria } from '../../../support/user-util';
describe('Datenanfrage erstellen', () => { describe('Datenanfrage erstellen', () => {
const page: AuswertungE2EComponent = new AuswertungE2EComponent(); const page: DatenanfragenE2EComponent = new DatenanfragenE2EComponent();
const form: AuswertungFormE2EComponent = new AuswertungFormE2EComponent(); const form: DatenanfragenFormE2EComponent = new DatenanfragenFormE2EComponent();
const helper: E2EAuswertungHelper = new E2EAuswertungHelper(); const helper: E2EDatenanfragenHelper = new E2EDatenanfragenHelper();
const verifier: E2EAuswertungVerifier = new E2EAuswertungVerifier(); const verifier: E2EDatenanfragenVerifier = new E2EDatenanfragenVerifier();
const fieldMapping0: FieldMapping = { const fieldMapping0: FieldMapping = {
sourcePath: '/path/to/source/a', sourcePath: '/path/to/source/a',
......
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);
}
}
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);
}
}
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());
}
}
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);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment