import { describe, it, expect, beforeEach, vi } from "vitest"; import { render, screen, waitFor } from "@testing-library/react"; import { configureJsonApi } from "../../../../client/config"; import { HelpProvider } from "../../contexts/HelpContext"; import { HelpHint } from "../HelpHint"; import { HowToService } from "../../../how-to/data/HowToService"; vi.mock("../../../how-to/data/HowToService", () => ({ HowToService: { findPublished: vi.fn() }, })); const article = { id: "1", slug: "x", howToType: "how-to", name: "X", summary: "S", contextualKeys: ["npc.editor"], draft: false, } as any; beforeEach(() => { vi.clearAllMocks(); vi.mocked(HowToService.findPublished).mockResolvedValue([article]); configureJsonApi({ apiUrl: "http://localhost", helpContent: { brand: { label: "narr8" } }, }); }); describe("HelpHint", () => { it("renders null when no published article matches the contextKey", async () => { const { container } = render( , ); await waitFor(() => expect(HowToService.findPublished).toHaveBeenCalled()); expect(container.querySelector("button")).toBeNull(); }); it("renders the trigger when at least one published article matches", async () => { render( , ); expect(await screen.findByLabelText(/help on this|hint/i)).toBeTruthy(); }); });