import { render, screen } from "@testing-library/react"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { CodexOAuthSection } from "@/components/providers/forms/CodexOAuthSection"; import { AuthCenterPanel } from "@/components/settings/AuthCenterPanel"; const mocks = vi.hoisted(() => ({ useCodexOauth: vi.fn(), renderAccountQuota: vi.fn(), })); vi.mock("@/components/providers/forms/hooks/useCodexOauth", () => ({ useCodexOauth: mocks.useCodexOauth, })); vi.mock("@/components/CodexOauthAccountQuota", () => ({ default: ({ accountId }: { accountId: string }) => { mocks.renderAccountQuota(accountId); return
{accountId}
; }, })); vi.mock("@/components/providers/forms/CopilotAuthSection", () => ({ CopilotAuthSection: () =>
, })); describe("CodexOAuthSection", () => { beforeEach(() => { mocks.useCodexOauth.mockReturnValue({ accounts: [ { id: "account-1", provider: "codex_oauth", login: "user@example.com", avatar_url: null, authenticated_at: 0, is_default: true, github_domain: "", }, ], defaultAccountId: "account-1", hasAnyAccount: true, pollingState: "idle", deviceCode: null, error: null, isPolling: false, isAddingAccount: false, isRemovingAccount: false, isSettingDefaultAccount: false, addAccount: vi.fn(), removeAccount: vi.fn(), setDefaultAccount: vi.fn(), cancelAuth: vi.fn(), logout: vi.fn(), }); }); it("does not render account quota by default", () => { render(); expect(mocks.renderAccountQuota).not.toHaveBeenCalled(); expect(screen.queryByTestId("account-quota")).not.toBeInTheDocument(); }); it("renders account quota in Auth Center", () => { render(); expect(mocks.renderAccountQuota).toHaveBeenCalledWith("account-1"); expect(screen.getByTestId("account-quota")).toHaveTextContent("account-1"); }); });