Skip to content

Commit a5b9f1c

Browse files
committed
test: added tests for notice and page selector components
1 parent bfe1eec commit a5b9f1c

File tree

2 files changed

+112
-0
lines changed

2 files changed

+112
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { render, waitFor } from "@testing-library/react";
2+
import Notice from "./Notice";
3+
4+
describe("Notice component", () => {
5+
it("renders children correctly", async () => {
6+
const { getByText } = render(<Notice>Test Notice</Notice>);
7+
await waitFor(() => {
8+
expect(getByText("Test Notice")).toBeInTheDocument();
9+
});
10+
});
11+
});
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
import { render, screen, fireEvent, waitFor } from "@testing-library/react";
2+
import "@testing-library/jest-dom/extend-expect";
3+
import PageSelector from "./PageSelector";
4+
5+
const mockPages = [
6+
{ id: 1, title: "Page One" },
7+
{ id: 2, title: "Page Two" },
8+
{ id: 3, title: "" },
9+
];
10+
11+
describe("PageSelector Component", () => {
12+
it("renders without crashing", () => {
13+
render(
14+
<PageSelector
15+
currentPageId={1}
16+
onChangeHandler={jest.fn()}
17+
pages={mockPages}
18+
disabled={false}
19+
/>
20+
);
21+
});
22+
23+
it("displays the correct number of options", async () => {
24+
render(
25+
<PageSelector
26+
currentPageId={1}
27+
onChangeHandler={jest.fn()}
28+
pages={mockPages}
29+
disabled={false}
30+
/>
31+
);
32+
33+
const options = screen.getAllByRole("option");
34+
await waitFor(() => {
35+
expect(options).toHaveLength(mockPages.length);
36+
});
37+
});
38+
39+
it("displays the correct option text", async () => {
40+
render(
41+
<PageSelector
42+
currentPageId={1}
43+
onChangeHandler={jest.fn()}
44+
pages={mockPages}
45+
disabled={false}
46+
/>
47+
);
48+
await waitFor(() => {
49+
expect(screen.getByText("Page One")).toBeInTheDocument();
50+
expect(screen.getByText("Page Two")).toBeInTheDocument();
51+
expect(screen.getByText("Page ID: 3")).toBeInTheDocument();
52+
});
53+
});
54+
55+
it("calls onChangeHandler with the correct arguments", async () => {
56+
const mockOnChangeHandler = jest.fn();
57+
render(
58+
<PageSelector
59+
currentPageId={1}
60+
onChangeHandler={mockOnChangeHandler}
61+
pages={mockPages}
62+
disabled={false}
63+
/>
64+
);
65+
66+
fireEvent.change(screen.getByRole("combobox"), { target: { value: "2" } });
67+
await waitFor(() => {
68+
expect(mockOnChangeHandler).toHaveBeenCalledWith(mockPages, "2");
69+
});
70+
});
71+
72+
it("is disabled when the disabled prop is true", async () => {
73+
render(
74+
<PageSelector
75+
currentPageId={1}
76+
onChangeHandler={jest.fn()}
77+
pages={mockPages}
78+
disabled={true}
79+
/>
80+
);
81+
82+
await waitFor(() => {
83+
expect(screen.getByRole("combobox")).toBeDisabled();
84+
});
85+
});
86+
87+
it("is not disabled when the disabled prop is false", async () => {
88+
render(
89+
<PageSelector
90+
currentPageId={1}
91+
onChangeHandler={jest.fn()}
92+
pages={mockPages}
93+
disabled={false}
94+
/>
95+
);
96+
97+
await waitFor(() => {
98+
expect(screen.getByRole("combobox")).not.toBeDisabled();
99+
});
100+
});
101+
});

0 commit comments

Comments
 (0)