123 lines
2.8 KiB
TypeScript
123 lines
2.8 KiB
TypeScript
|
|
import { VALIDATORS } from "workers/validations";
|
||
|
|
import { WidgetProps } from "widgets/BaseWidget";
|
||
|
|
import { RenderModes, WidgetTypes } from "constants/WidgetConstants";
|
||
|
|
|
||
|
|
const DUMMY_WIDGET: WidgetProps = {
|
||
|
|
bottomRow: 0,
|
||
|
|
isLoading: false,
|
||
|
|
leftColumn: 0,
|
||
|
|
parentColumnSpace: 0,
|
||
|
|
parentRowSpace: 0,
|
||
|
|
renderMode: RenderModes.CANVAS,
|
||
|
|
rightColumn: 0,
|
||
|
|
topRow: 0,
|
||
|
|
type: WidgetTypes.SKELETON_WIDGET,
|
||
|
|
version: 0,
|
||
|
|
widgetId: "",
|
||
|
|
widgetName: "",
|
||
|
|
};
|
||
|
|
|
||
|
|
describe("Chart data validator", () => {
|
||
|
|
const validator = VALIDATORS.CHART_DATA;
|
||
|
|
it("correctly validates ", () => {
|
||
|
|
const cases = [
|
||
|
|
{
|
||
|
|
input: [
|
||
|
|
{
|
||
|
|
seriesName: "Sales",
|
||
|
|
data: [{ x: "Jan", y: 1000 }],
|
||
|
|
},
|
||
|
|
],
|
||
|
|
output: {
|
||
|
|
isValid: true,
|
||
|
|
parsed: [
|
||
|
|
{
|
||
|
|
seriesName: "Sales",
|
||
|
|
data: [{ x: "Jan", y: 1000 }],
|
||
|
|
},
|
||
|
|
],
|
||
|
|
transformed: [
|
||
|
|
{
|
||
|
|
seriesName: "Sales",
|
||
|
|
data: [{ x: "Jan", y: 1000 }],
|
||
|
|
},
|
||
|
|
],
|
||
|
|
},
|
||
|
|
},
|
||
|
|
{
|
||
|
|
input: [
|
||
|
|
{
|
||
|
|
seriesName: "Sales",
|
||
|
|
data: [{ x: "Jan", y: 1000 }, { x: "Feb" }],
|
||
|
|
},
|
||
|
|
],
|
||
|
|
output: {
|
||
|
|
isValid: false,
|
||
|
|
message: '0##Value does not match type: [{ "x": "val", "y": "val" }]',
|
||
|
|
parsed: [
|
||
|
|
{
|
||
|
|
seriesName: "Sales",
|
||
|
|
data: [],
|
||
|
|
},
|
||
|
|
],
|
||
|
|
transformed: [
|
||
|
|
{
|
||
|
|
seriesName: "Sales",
|
||
|
|
data: [{ x: "Jan", y: 1000 }, { x: "Feb" }],
|
||
|
|
},
|
||
|
|
],
|
||
|
|
},
|
||
|
|
},
|
||
|
|
{
|
||
|
|
input: [
|
||
|
|
{
|
||
|
|
seriesName: "Sales",
|
||
|
|
data: undefined,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
seriesName: "Expenses",
|
||
|
|
data: [
|
||
|
|
{ x: "Jan", y: 1000 },
|
||
|
|
{ x: "Feb", y: 2000 },
|
||
|
|
],
|
||
|
|
},
|
||
|
|
],
|
||
|
|
output: {
|
||
|
|
isValid: false,
|
||
|
|
message: '0##Value does not match type: [{ "x": "val", "y": "val" }]',
|
||
|
|
parsed: [
|
||
|
|
{
|
||
|
|
seriesName: "Sales",
|
||
|
|
data: [],
|
||
|
|
},
|
||
|
|
{
|
||
|
|
seriesName: "Expenses",
|
||
|
|
data: [
|
||
|
|
{ x: "Jan", y: 1000 },
|
||
|
|
{ x: "Feb", y: 2000 },
|
||
|
|
],
|
||
|
|
},
|
||
|
|
],
|
||
|
|
transformed: [
|
||
|
|
{
|
||
|
|
seriesName: "Sales",
|
||
|
|
data: undefined,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
seriesName: "Expenses",
|
||
|
|
data: [
|
||
|
|
{ x: "Jan", y: 1000 },
|
||
|
|
{ x: "Feb", y: 2000 },
|
||
|
|
],
|
||
|
|
},
|
||
|
|
],
|
||
|
|
},
|
||
|
|
},
|
||
|
|
];
|
||
|
|
for (const testCase of cases) {
|
||
|
|
const response = validator(testCase.input, DUMMY_WIDGET, {});
|
||
|
|
expect(response).toStrictEqual(testCase.output);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
});
|