umbraco-cypress-testhelpers
Version:
Test helpers for making Cypress tests for Umbraco solutions
66 lines (64 loc) • 2.44 kB
text/typescript
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);
}
}