Skip to content

Commit f6ccf45

Browse files
committed
add tests and improve coverage
1 parent 80fd27d commit f6ccf45

File tree

3 files changed

+56
-12
lines changed

3 files changed

+56
-12
lines changed

chartlets.js/packages/lib/src/plugins/mui/Table.test.tsx

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,30 @@ describe("Table", () => {
7373
},
7474
});
7575
});
76+
77+
it("should not render the Table component when no id provided", () => {
78+
render(<Table type={"Table"} rows={rows} onChange={() => {}} />);
79+
80+
const table = screen.queryByRole("table");
81+
expect(table).toBeNull();
82+
});
83+
84+
it(
85+
"should render the Table component with skeleton when skeletonProps are" +
86+
" provided",
87+
() => {
88+
render(
89+
<Table
90+
id="table"
91+
type={"Table"}
92+
rows={rows}
93+
onChange={() => {}}
94+
skeletonProps={{ variant: "rectangular" }}
95+
/>,
96+
);
97+
98+
const table = screen.queryByRole("table");
99+
expect(table).toBeNull();
100+
},
101+
);
76102
});

chartlets.js/packages/lib/src/plugins/vega/VegaChart.test.tsx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { describe, expect, it } from "vitest";
2-
import { render } from "@testing-library/react";
2+
import { render, screen, waitFor } from "@testing-library/react";
33
// import { render, screen, fireEvent } from "@testing-library/react";
44
import type { TopLevelSpec } from "vega-lite";
55
import { createChangeHandler } from "@/plugins/mui/common.test";
@@ -21,7 +21,7 @@ describe("VegaChart", () => {
2121
expect(document.querySelector("#vc")).not.toBeUndefined();
2222
});
2323

24-
it("should render if chart is given", () => {
24+
it("should render if chart is given", async () => {
2525
const { recordedEvents, onChange } = createChangeHandler();
2626
render(
2727
<VegaChart
@@ -35,12 +35,25 @@ describe("VegaChart", () => {
3535
// expect(document.body).toEqual({});
3636
expect(recordedEvents.length).toBe(0);
3737

38+
const test_chart = screen.queryByTestId("vega-test-id");
39+
expect(test_chart).toBeDefined();
40+
const canvas = await waitFor(() => screen.getByRole("graphics-document"));
41+
expect(canvas).toBeInTheDocument();
42+
3843
// TODO: all of the following doesn't work!
3944
// expect(document.querySelector("canvas")).toEqual({});
4045
// expect(screen.getByRole("canvas")).not.toBeUndefined();
4146
// fireEvent.click(screen.getByRole("canvas"));
4247
// expect(recordedEvents.length).toBe(1);
4348
});
49+
50+
it("should not render if id is not given", () => {
51+
const { recordedEvents, onChange } = createChangeHandler();
52+
render(<VegaChart type={"VegaChart"} chart={chart} onChange={onChange} />);
53+
expect(recordedEvents.length).toBe(0);
54+
const test_chart = screen.queryByTestId("vega-test-id");
55+
expect(test_chart).toBeNull();
56+
});
4457
});
4558

4659
const chart: TopLevelSpec = {

chartlets.js/packages/lib/src/plugins/vega/VegaChart.tsx

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,26 @@ export function VegaChart({
4242
}
4343

4444
const chart: ReactElement | null = initialChart ? (
45-
<div id="chart-container" ref={containerCallbackRef} style={style}>
46-
<VegaLite
47-
key={containerSizeKey}
48-
theme={vegaTheme}
49-
spec={initialChart}
50-
signalListeners={signalListeners}
51-
actions={false}
45+
<div
46+
id="chart-container"
47+
ref={containerCallbackRef}
48+
style={style}
49+
data-testid={"vega-test-id"} // For testing purposes
50+
>
51+
<VegaLite
52+
key={containerSizeKey}
53+
theme={vegaTheme}
54+
spec={initialChart}
55+
signalListeners={signalListeners}
56+
actions={false}
5257
/>
53-
</div>
58+
</div>
5459
) : (
55-
<div id={id}/>
60+
<div id={id} />
5661
);
5762
const isSkeletonRequired = skeletonProps !== undefined;
5863
if (!isSkeletonRequired) {
59-
return chart;
64+
return chart;
6065
}
6166
const skeletonId = id + "-skeleton";
6267
return (

0 commit comments

Comments
 (0)