UNPKG

umbraco-cypress-testhelpers

Version:

Test helpers for making Cypress tests for Umbraco solutions

66 lines (64 loc) 2.44 kB
import { FormPickerDataTypeBuilder, TextBoxDataTypeBuilder, DropDownDataTypeBuilder, TextBoxProperty, FormPickerProperty, DropDownProperty, } from '../../..'; export class DataTypesBuilderHelper { public buildDataType(dataTypePrefix: string) { return new FormPickerDataTypeBuilder().withName(dataTypePrefix).withSaveNewAction().build(); } public buildFormPickerDataType(name: string, allowedFormIds?: string[]) { return new FormPickerDataTypeBuilder().withName(name).withAllowedForms(allowedFormIds).withSaveNewAction().build(); } public buildTextBoxDataType(name: string, maxChars?: number) { return new TextBoxDataTypeBuilder().withName(name).withSaveNewAction().withMaxChars(maxChars).build(); } public buildDropDownDataType(name: string, values: string[], multiselect?: boolean) { return new DropDownDataTypeBuilder().withName(name).withSaveNewAction().withPrevalues(values, multiselect).build(); } public insert( textBoxProperties?: TextBoxProperty[], dropDownProperties?: DropDownProperty[], formPickerProperty?: FormPickerProperty, ) { const promises = []; textBoxProperties?.map((textBoxProperty) => { const dataType = this.buildTextBoxDataType(textBoxProperty.name, textBoxProperty.maxChars); promises.push( new Cypress.Promise((resolve) => cy.saveDataType(dataType).then((dataTypeBody) => { return resolve({ dataType: dataTypeBody, property: textBoxProperty }); }), ), ); }); dropDownProperties?.map((dropDownProperty) => { const dataType = this.buildDropDownDataType( dropDownProperty.name, dropDownProperty.values, dropDownProperty.multiSelect, ); promises.push( new Cypress.Promise((resolve) => cy.saveDataType(dataType).then((dataTypeBody) => { return resolve({ dataType: dataTypeBody, property: dropDownProperty }); }), ), ); }); if (formPickerProperty) { const dataType = this.buildFormPickerDataType(formPickerProperty.name, formPickerProperty.allowedFormIds); promises.push( new Cypress.Promise((resolve) => cy.saveDataType(dataType).then((dataTypeBody) => { return resolve({ dataType: dataTypeBody, property: formPickerProperty }); }), ), ); } return Cypress.Promise.all(promises).then((r) => r); } }