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