UNPKG

umbraco-cypress-testhelpers

Version:

Test helpers for making Cypress tests for Umbraco solutions

183 lines (154 loc) 4.69 kB
import { DataTypeBuilder } from './dataTypeBuilder'; import { GridDataType } from '../../models/dataTypes/gridDataType'; import { GridLayoutBuilder, GridRowConfigBuilder, GridRteBuilder, GridSettingsbuilder, GridStylesBuilder, } from './gridBuilders'; export class GridDataTypeBuilder extends DataTypeBuilder { preValues = []; layoutBuilders; templateBuilders; settingsBuilders; styleBuilders; rteBuilder; columns = 12; ignoreUserStartNodes; imageUploadFolder; constructor(private gridDataType: GridDataType = new GridDataType()) { super(gridDataType); this.templateBuilders = []; this.layoutBuilders = []; this.settingsBuilders = []; this.styleBuilders = []; } withColumns(columns: number) { this.columns = columns; return this; } withIgnoreUserStartNodes(ignore: boolean) { this.ignoreUserStartNodes = ignore; return this; } withImageUploadFolder(folderPath: string) { this.imageUploadFolder = folderPath; return this; } addRowConfiguration(gridRowConfigBuilder?: GridRowConfigBuilder) { const builder = gridRowConfigBuilder === null || gridRowConfigBuilder === undefined ? new GridRowConfigBuilder(this) : gridRowConfigBuilder; this.layoutBuilders.push(builder); return builder; } addLayout(templateBuilder?: GridLayoutBuilder) { const builder = templateBuilder === null || templateBuilder === undefined ? new GridLayoutBuilder(this) : templateBuilder; this.templateBuilders.push(builder); return builder; } addRte(rteBuilder?: GridRteBuilder) { const builder = rteBuilder === null || rteBuilder === undefined ? new GridRteBuilder(this) : rteBuilder; this.rteBuilder = builder; return builder; } addSetting(settingsBuilder?: GridSettingsbuilder) { const builder = settingsBuilder === null || settingsBuilder === undefined ? new GridSettingsbuilder(this) : settingsBuilder; this.settingsBuilders.push(builder); return builder; } addStyle(styleBuilder?: GridStylesBuilder) { const builder = styleBuilder === null || styleBuilder === undefined ? new GridStylesBuilder(this) : styleBuilder; this.styleBuilders.push(builder); return builder; } withDefaultGrid() { this.addSetting() .withDescription('Set a css class') .withKey('class') .withLabel('Class') .withView('textstring') .done(); this.addRowConfiguration() .withLabel('Headline') .withName('Headline') .addArea() .withGridSize(12) .withEditor('headline') .done(); this.addRowConfiguration().withName('Article').withLabel('Article').withSimpleArea(4).withSimpleArea(8).done(); this.addStyle() .withDescription('Set a row background') .withKey('background-image') .withLabel('Set a background image') .withModifier('url({0})') .withView('imagepicker') .done(); this.addLayout().withName('1 column layout').withSimpleSection(12).done(); this.addLayout().withName('2 column layout').withSimpleSection(4).withSimpleSection(8).done(); this.addRte() .withMaxImageSize(500) .withClassicMode() .addToolBarOptions() .withSourceCodeEditor() .withStyleSelect() .withBold() .withItalic() .withJustifyLeft() .withJustifyCenter() .withJustifyRight() .withBulletList() .withNumberedList() .withDecreaseIndent() .withIncreaseIndent() .withInsertLink() .withImage() .withMacro() .withEmbed() .done() .done(); return this; } build() { const items = { key: 'items', value: { columns: this.columns || 12, config: this.settingsBuilders.map((builder) => { return builder.build(); }), layouts: this.layoutBuilders.map((builder) => { return builder.build(); }), styles: this.styleBuilders.map((builder) => { return builder.build(); }), templates: this.templateBuilders.map((builder) => { return builder.build(); }), }, }; this.preValues.push(items); // Add RTE const rtePrevalue = { key: 'rte', value: this.rteBuilder.build(), }; this.preValues.push(rtePrevalue); this.preValues.push({ key: 'ignoreUserStartNodes', value: this.ignoreUserStartNodes || false, }); // Add Image upload folder this.preValues.push({ key: 'mediaParentId', value: this.imageUploadFolder || null, }); this.dataType.addPrevalues(this.preValues); return super.build(); } }