import { AggregationMapping, FieldMapping } from '@admin-client/reporting-shared'; import { AggregationMappingFormE2EComponent } from '../../components/aggregation-mapping/aggregation-mapping-form.e2e.component'; import { AggregationMappingE2EComponent } from '../../components/aggregation-mapping/aggregation-mapping.e2e.component'; import { enterWith, haveText, haveValue } from '../../support/cypress.util'; export class E2EAggregationMappingHelper { private component: AggregationMappingE2EComponent = new AggregationMappingE2EComponent(); private formComponent: AggregationMappingFormE2EComponent = new AggregationMappingFormE2EComponent(); public enterName(text: string): void { enterWith(this.formComponent.getNameInput(), text); } public enterFormEngine(text: string): void { enterWith(this.formComponent.getFormEngineInput(), text); } public enterFormId(text: string): void { enterWith(this.formComponent.getFormIdInput(), text); } public enterSourcePath(text: string, index: number): void { enterWith(this.formComponent.getSourceMappingFieldInput(index), text); } public enterTargetPath(text: string, index: number): void { enterWith(this.formComponent.getTargetMappingFieldInput(index), text); } public enterFieldMapping(fieldMapping: FieldMapping, index: number): void { this.enterSourcePath(fieldMapping.sourcePath, index); this.enterTargetPath(fieldMapping.targetPath, index); } public enterForm(aggregationMapping: AggregationMapping): void { this.enterName(aggregationMapping.name); this.enterFormEngine(aggregationMapping.formIdentifier.formEngineName); this.enterFormId(aggregationMapping.formIdentifier.formId); aggregationMapping.mappings.forEach((fieldMapping, index) => { this.enterFieldMapping(fieldMapping, index); }); } public verifyFieldMapping(fieldMapping: FieldMapping, index: number): void { haveValue(this.formComponent.getSourceMappingFieldInput(index), fieldMapping.sourcePath); haveValue(this.formComponent.getTargetMappingFieldInput(index), fieldMapping.targetPath); } public verifyForm(aggregationMapping: AggregationMapping): void { haveValue(this.formComponent.getNameInput(), aggregationMapping.name); haveValue(this.formComponent.getFormEngineInput(), aggregationMapping.formIdentifier.formEngineName); haveValue(this.formComponent.getFormIdInput(), aggregationMapping.formIdentifier.formId); aggregationMapping.mappings.forEach((fieldMapping, index) => { this.verifyFieldMapping(fieldMapping, index); }); } public verifyAggregationMappingInList(aggregationMapping: AggregationMapping): void { haveText(this.component.getListItemName(), aggregationMapping.name); haveText(this.component.getListItemFormEngineName(), aggregationMapping.formIdentifier.formEngineName); haveText(this.component.getListItemFormId(), aggregationMapping.formIdentifier.formId); } }