PromucFlow_constructor/app/client/src/entities/Widget/utils.test.ts

157 lines
4.8 KiB
TypeScript
Raw Normal View History

import { getAllPathsFromPropertyConfig } from "./utils";
import { RenderModes, WidgetTypes } from "../../constants/WidgetConstants";
import tablePropertyPaneConfig from "widgets/TableWidget/TablePropertyPaneConfig";
describe("getAllPathsFromPropertyConfig", () => {
it("works as expected", () => {
const widget = {
renderMode: RenderModes.CANVAS,
derivedColumns: [],
widgetName: "Table1",
rightColumn: 8,
textSize: "PARAGRAPH",
columnOrder: ["name", "createdAt", "status"],
dynamicPropertyPathList: [
{
key: "primaryColumns.name.verticalAlignment",
},
],
widgetId: "19ye491zn1",
topRow: 7,
bottomRow: 14,
parentRowSpace: 40,
tableData: "{{getUsers.data}}",
isVisible: true,
label: "Data",
searchKey: "",
type: WidgetTypes.TABLE_WIDGET,
parentId: "0",
isLoading: false,
horizontalAlignment: "LEFT",
parentColumnSpace: 74,
version: 1,
dynamicTriggerPathList: [
{
key: "primaryColumns.status.onClick",
},
],
leftColumn: 0,
dynamicBindingPathList: [
{
key: "primaryColumns.name.computedValue",
},
{
key: "primaryColumns.createdAt.computedValue",
},
{
key: "primaryColumns.status.buttonLabel",
},
{
key: "tableData",
},
],
primaryColumns: {
name: {
index: 1,
width: 150,
id: "name",
horizontalAlignment: "LEFT",
verticalAlignment: "CENTER",
columnType: "text",
textSize: "PARAGRAPH",
enableFilter: true,
enableSort: true,
isVisible: true,
isDerived: false,
label: "name",
computedValue:
"{{Table1.tableData.map((currentRow) => (currentRow.name))}}",
},
createdAt: {
index: 2,
width: 150,
id: "createdAt",
horizontalAlignment: "LEFT",
verticalAlignment: "CENTER",
columnType: "date",
textSize: "PARAGRAPH",
enableFilter: true,
enableSort: true,
isVisible: true,
isDerived: false,
label: "createdAt",
computedValue:
"{{Table1.tableData.map((currentRow) => (currentRow.createdAt))}}",
inputFormat: "YYYY-MM-DDTHH:mm:ss",
outputFormat: "DD-MM-YYYY",
},
status: {
index: 4,
width: 150,
id: "status",
horizontalAlignment: "LEFT",
verticalAlignment: "CENTER",
columnType: "button",
textSize: "PARAGRAPH",
enableFilter: true,
enableSort: true,
isVisible: true,
isDerived: false,
label: "status",
computedValue:
"{{Table1.tableData.map((currentRow) => (currentRow.status))}}",
buttonLabel:
"{{Table1.tableData.map((currentRow) => (currentRow.status))}}",
onClick: "{{showAlert(currentRow.status)}}",
},
},
verticalAlignment: "CENTER",
};
const config = tablePropertyPaneConfig;
const expected = {
bindingPaths: {
selectedRow: true,
selectedRows: true,
tableData: true,
defaultSearchText: true,
defaultSelectedRow: true,
isVisible: true,
"primaryColumns.name.computedValue": true,
"primaryColumns.name.horizontalAlignment": true,
"primaryColumns.name.verticalAlignment": true,
"primaryColumns.name.textSize": true,
"primaryColumns.name.fontStyle": true,
"primaryColumns.name.textColor": true,
"primaryColumns.name.cellBackground": true,
"primaryColumns.createdAt.inputFormat": true,
"primaryColumns.createdAt.outputFormat": true,
"primaryColumns.createdAt.computedValue": true,
"primaryColumns.createdAt.horizontalAlignment": true,
"primaryColumns.createdAt.verticalAlignment": true,
"primaryColumns.createdAt.textSize": true,
"primaryColumns.createdAt.fontStyle": true,
"primaryColumns.createdAt.textColor": true,
"primaryColumns.createdAt.cellBackground": true,
"primaryColumns.status.buttonLabel": true,
"primaryColumns.status.buttonStyle": true,
"primaryColumns.status.buttonLabelColor": true,
},
triggerPaths: {
onRowSelected: true,
onPageChange: true,
onSearchTextChanged: true,
onPageSizeChange: true,
"primaryColumns.status.onClick": true,
},
};
const result = getAllPathsFromPropertyConfig(widget, config, {
selectedRow: true,
selectedRows: true,
});
expect(result).toStrictEqual(expected);
});
});