Skip to content

Commit 2002d81

Browse files
chore: create setupBasicSeries function to reuse throughout chart widgets unit tests
1 parent 06e1c28 commit 2002d81

File tree

4 files changed

+2452
-331
lines changed

4 files changed

+2452
-331
lines changed

packages/pluggableWidgets/area-chart-web/src/__tests__/AreaChart.spec.tsx

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,10 @@ jest.mock("@mendix/shared-charts/main", () => {
66
};
77
});
88

9-
import { ChartWidget } from "@mendix/shared-charts/main";
10-
import {
11-
EditableValueBuilder,
12-
list,
13-
ListAttributeValueBuilder,
14-
listExpression
15-
} from "@mendix/widget-plugin-test-utils";
9+
import { ChartWidget, setupBasicSeries } from "@mendix/shared-charts/main";
10+
import { listExpression } from "@mendix/widget-plugin-test-utils";
1611
import "@testing-library/jest-dom";
1712
import { render, RenderResult } from "@testing-library/react";
18-
import Big from "big.js";
1913
import { createElement } from "react";
2014
import { SeriesType } from "../../typings/AreaChartProps";
2115
import { AreaChart } from "../AreaChart";
@@ -28,7 +22,7 @@ describe("The AreaChart widget", () => {
2822
<AreaChart
2923
name="line-chart-test"
3024
class="line-chart-class"
31-
series={configs.map(setupBasicSeries)}
25+
series={configs.map(setupBasicAreaSeries)}
3226
showLegend={false}
3327
widthUnit="percentage"
3428
width={0}
@@ -159,30 +153,15 @@ describe("The AreaChart widget", () => {
159153
});
160154
});
161155

162-
function setupBasicSeries(overwriteConfig: Partial<SeriesType>): SeriesType {
163-
const xAttribute = new ListAttributeValueBuilder<Big>().build();
164-
const getXAttributeMock = jest.fn();
165-
getXAttributeMock.mockReturnValueOnce(new EditableValueBuilder<Big>().withValue(new Big(1)).build());
166-
getXAttributeMock.mockReturnValueOnce(new EditableValueBuilder<Big>().withValue(new Big(2)).build());
167-
xAttribute.get = getXAttributeMock;
168-
169-
const yAttribute = new ListAttributeValueBuilder<Big>().build();
170-
const getYAttributeMock = jest.fn();
171-
getYAttributeMock.mockReturnValueOnce(new EditableValueBuilder<Big>().withValue(new Big(3)).build());
172-
getYAttributeMock.mockReturnValueOnce(new EditableValueBuilder<Big>().withValue(new Big(6)).build());
173-
yAttribute.get = getYAttributeMock;
156+
function setupBasicAreaSeries(overwriteConfig: Partial<SeriesType>): SeriesType {
157+
const basicSeries = setupBasicSeries(overwriteConfig) as SeriesType;
174158

175159
return {
176-
dataSet: "static",
177-
customSeriesOptions: overwriteConfig.customSeriesOptions ?? "",
178-
aggregationType: overwriteConfig.aggregationType ?? "avg",
160+
...basicSeries,
179161
interpolation: overwriteConfig.interpolation ?? "linear",
180162
lineStyle: overwriteConfig.lineStyle ?? "line",
181163
staticLineColor: overwriteConfig.staticLineColor ?? undefined,
182164
staticMarkerColor: overwriteConfig.staticMarkerColor ?? undefined,
183-
staticFillColor: overwriteConfig.staticFillColor ?? undefined,
184-
staticDataSource: list(2),
185-
staticXAttribute: xAttribute,
186-
staticYAttribute: yAttribute
165+
staticFillColor: overwriteConfig.staticFillColor ?? undefined
187166
};
188167
}

packages/shared/charts/src/main.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ export * from "./utils/configs";
88
export * from "./utils/chartStyles";
99
export * from "./utils/equality";
1010
export { fallback, pprint } from "./utils/json";
11+
export { setupBasicSeries } from "./utils/setupBasicSeries";
1112
export { getPlaygroundContext, usePlaygroundContext };
1213
import { getPlaygroundContext, usePlaygroundContext } from "./helpers/playground-context";
1314
export * from "./helpers/useEditorStore";
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { EditableValueBuilder, ListAttributeValueBuilder, list } from "@mendix/widget-plugin-test-utils";
2+
import Big from "big.js";
3+
import { ListAttributeValue } from "mendix";
4+
5+
interface BaseChartSeries {
6+
aggregationType: string;
7+
customSeriesOptions: string;
8+
dataSet: string;
9+
staticDataSource: ReturnType<typeof list>;
10+
staticXAttribute: ListAttributeValue<string | Date | Big>;
11+
staticYAttribute: ListAttributeValue<string | Date | Big>;
12+
}
13+
14+
export function setupBasicSeries(overwriteConfig: Partial<BaseChartSeries>): BaseChartSeries {
15+
const xAttribute = new ListAttributeValueBuilder<Big>().build();
16+
const getXAttributeMock = jest.fn();
17+
getXAttributeMock.mockReturnValueOnce(new EditableValueBuilder<Big>().withValue(new Big(1)).build());
18+
getXAttributeMock.mockReturnValueOnce(new EditableValueBuilder<Big>().withValue(new Big(2)).build());
19+
xAttribute.get = getXAttributeMock;
20+
21+
const yAttribute = new ListAttributeValueBuilder<Big>().build();
22+
const getYAttributeMock = jest.fn();
23+
getYAttributeMock.mockReturnValueOnce(new EditableValueBuilder<Big>().withValue(new Big(3)).build());
24+
getYAttributeMock.mockReturnValueOnce(new EditableValueBuilder<Big>().withValue(new Big(6)).build());
25+
yAttribute.get = getYAttributeMock;
26+
27+
return {
28+
dataSet: "static",
29+
customSeriesOptions: overwriteConfig.customSeriesOptions ?? "",
30+
aggregationType: overwriteConfig.aggregationType ?? "avg",
31+
staticDataSource: list(2),
32+
staticXAttribute: xAttribute,
33+
staticYAttribute: yAttribute
34+
};
35+
}

0 commit comments

Comments
 (0)