Skip to content

Commit 971863e

Browse files
committed
adds unit tests
1 parent 4cc1a64 commit 971863e

2 files changed

Lines changed: 70 additions & 0 deletions

File tree

client/src/components/layout/HeaderProfileMenu.test.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,25 @@ describe("HeaderProfileMenu", () => {
8686

8787
expect(localStorage.getItem("theme-preference")).toBe("dark");
8888
});
89+
90+
it("supports switching back to light mode", async () => {
91+
const user = userEvent.setup();
92+
localStorage.setItem("theme-preference", "dark");
93+
renderMenu();
94+
95+
await user.click(screen.getByRole("button", { name: "Bobo Example" }));
96+
await user.click(screen.getByRole("button", { name: "Light mode" }));
97+
98+
expect(localStorage.getItem("theme-preference")).toBe("light");
99+
});
100+
101+
it("supports switching to system theme", async () => {
102+
const user = userEvent.setup();
103+
renderMenu();
104+
105+
await user.click(screen.getByRole("button", { name: "Bobo Example" }));
106+
await user.click(screen.getByRole("button", { name: "System theme" }));
107+
108+
expect(localStorage.getItem("theme-preference")).toBe("system");
109+
});
89110
});

client/src/components/layout/HeaderQuickNav.test.tsx

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,53 @@ describe("HeaderQuickNav", () => {
9999
expect(input).toHaveFocus();
100100
expect(input).toHaveAttribute("data-expanded", "true");
101101
});
102+
103+
it("stays expanded after blur when the query has content", async () => {
104+
const user = userEvent.setup();
105+
106+
render(
107+
<I18nProvider>
108+
<HeaderQuickNav />
109+
</I18nProvider>,
110+
);
111+
112+
const input = screen.getByRole("searchbox", { name: "Search" });
113+
await user.type(input, "servers");
114+
fireEvent.blur(input);
115+
116+
expect(input).toHaveAttribute("data-expanded", "true");
117+
});
118+
119+
it("collapses again on blur when the query is empty", async () => {
120+
const user = userEvent.setup();
121+
122+
render(
123+
<I18nProvider>
124+
<HeaderQuickNav />
125+
</I18nProvider>,
126+
);
127+
128+
const input = screen.getByRole("searchbox", { name: "Search" });
129+
await user.click(input);
130+
fireEvent.blur(input);
131+
132+
expect(input).toHaveAttribute("data-expanded", "false");
133+
});
134+
135+
it("prevents the form from submitting", () => {
136+
render(
137+
<I18nProvider>
138+
<HeaderQuickNav />
139+
</I18nProvider>,
140+
);
141+
142+
const input = screen.getByRole("searchbox", { name: "Search" });
143+
const form = input.closest("form");
144+
expect(form).not.toBeNull();
145+
146+
const submitEvent = new Event("submit", { bubbles: true, cancelable: true });
147+
form!.dispatchEvent(submitEvent);
148+
149+
expect(submitEvent.defaultPrevented).toBe(true);
150+
});
102151
});

0 commit comments

Comments
 (0)