test(KB-120): add search filter tests for Header and Board

- Add Header search tests for filter functionality (48 lines)

- Add Board search filter tests for task filtering (203 lines)

- Remove unused code from TaskDetailModal component

- Cover search input rendering and filter behavior for both components
This commit is contained in:
gsxdsm
2026-03-30 09:17:29 -07:00
parent 2e163a37df
commit 519c792e00
2 changed files with 248 additions and 3 deletions

View File

@@ -190,4 +190,52 @@ describe("Header", () => {
expect(screen.getByTestId("planning-btn")).toBeDefined();
});
});
describe("search functionality", () => {
it("does not render search input when onSearchChange is not provided", () => {
renderHeader({ view: "board" });
expect(screen.queryByPlaceholderText("Search tasks...")).toBeNull();
});
it("renders search input when onSearchChange and view='board' are provided", () => {
renderHeader({ onSearchChange: vi.fn(), view: "board" });
expect(screen.getByPlaceholderText("Search tasks...")).toBeDefined();
});
it("does not render search input when view is 'list'", () => {
renderHeader({ onSearchChange: vi.fn(), view: "list" });
expect(screen.queryByPlaceholderText("Search tasks...")).toBeNull();
});
it("calls onSearchChange when typing in search input", () => {
const onSearchChange = vi.fn();
renderHeader({ onSearchChange, view: "board" });
const input = screen.getByPlaceholderText("Search tasks...");
fireEvent.change(input, { target: { value: "test query" } });
expect(onSearchChange).toHaveBeenCalledWith("test query");
});
it("shows clear button when search query is not empty", () => {
renderHeader({ onSearchChange: vi.fn(), view: "board", searchQuery: "test" });
expect(screen.getByLabelText("Clear search")).toBeDefined();
});
it("does not show clear button when search query is empty", () => {
renderHeader({ onSearchChange: vi.fn(), view: "board", searchQuery: "" });
expect(screen.queryByLabelText("Clear search")).toBeNull();
});
it("calls onSearchChange with empty string when clear button is clicked", () => {
const onSearchChange = vi.fn();
renderHeader({ onSearchChange, view: "board", searchQuery: "test" });
fireEvent.click(screen.getByLabelText("Clear search"));
expect(onSearchChange).toHaveBeenCalledWith("");
});
it("search input has correct placeholder text", () => {
renderHeader({ onSearchChange: vi.fn(), view: "board" });
const input = screen.getByPlaceholderText("Search tasks...");
expect(input).toBeDefined();
});
});
});