MiniSearch / client /components /Settings /HistorySettings.test.tsx
github-actions[bot]
Sync from https://github.com/felladrin/MiniSearch
9692fe7
import { MantineProvider } from "@mantine/core";
import { render, screen } from "@testing-library/react";
import { vi } from "vitest";
import HistorySettings from "./HistorySettings";
vi.mock("create-pubsub/react", () => ({
usePubSub: vi.fn(() => [
{
enableHistory: true,
historyMaxEntries: 500,
historyAutoCleanup: true,
historyRetentionDays: 30,
},
vi.fn(),
]),
}));
vi.mock("../../hooks/useSearchHistory", () => ({
useSearchHistory: vi.fn(() => ({
recentSearches: [],
clearAll: vi.fn(),
})),
}));
vi.mock("@mantine/notifications", () => ({
notifications: {
show: vi.fn(),
},
}));
describe("HistorySettings component", () => {
it("renders enable history switch", () => {
render(
<MantineProvider>
<HistorySettings />
</MantineProvider>,
);
const switches = screen.getAllByRole("switch");
expect(switches.length).toBeGreaterThanOrEqual(1);
const enableSwitch = switches[0];
expect(enableSwitch).toBeInTheDocument();
expect(enableSwitch).toBeChecked();
});
it("renders switch label text", () => {
render(
<MantineProvider>
<HistorySettings />
</MantineProvider>,
);
expect(screen.getByText("Enable Search History")).toBeInTheDocument();
});
it("renders maximum entries input when history is enabled", () => {
render(
<MantineProvider>
<HistorySettings />
</MantineProvider>,
);
expect(screen.getByText("Maximum Entries")).toBeInTheDocument();
});
it("renders automatic cleanup switch when history is enabled", () => {
render(
<MantineProvider>
<HistorySettings />
</MantineProvider>,
);
expect(screen.getByText("Automatic Cleanup")).toBeInTheDocument();
});
it("renders clear history button", () => {
render(
<MantineProvider>
<HistorySettings />
</MantineProvider>,
);
expect(
screen.getByRole("button", { name: "Clear all history" }),
).toBeInTheDocument();
});
});