import { describe, expect, it, vi } from "vitest"; import { render, screen } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { AdminTailscaleSection } from "../../src/frontend/AdminTailscaleSection"; vi.mock("react-i18next", () => ({ useTranslation: () => ({ t: (key: string) => key }), })); describe("AdminTailscaleSection", () => { it("renders the API key and base URL fields and saves on click", async () => { const user = userEvent.setup(); const handleSave = vi.fn(); render( , ); expect( ( screen.getByPlaceholderText( "tskey-api-... / hskey-api-...", ) as HTMLInputElement ).value, ).toBe("tskey-api-abc"); expect( ( screen.getByPlaceholderText( "https://api.tailscale.com/api/v2", ) as HTMLInputElement ).value, ).toBe("https://api.tailscale.com/api/v2"); await user.click(screen.getByText("common.save")); expect(handleSave).toHaveBeenCalledOnce(); }); it("does not render its content when closed", () => { render( , ); expect( screen.queryByPlaceholderText("tskey-api-... / hskey-api-..."), ).toBeNull(); }); });