// frontend/tests/connectors/ConnectorCard.test.tsx — on/off 액션 + 동기화 콜백 import { render, screen, fireEvent } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; import { ConnectorCard } from "@/components/connectors/ConnectorCard"; import type { ConnectorStatus } from "@/lib/types"; const base: ConnectorStatus = { id: "ca-mail-work", domain: "mail", provider: "google_workspace", name: "회사", kind: "Lumi Workspace", tone: "coral", mode: "mock", env_mode: "mock", state: "connected", on: true, last: "방금 동기화", last_synced_at: null, error_detail: "", email: "", }; const noop = () => {}; describe("ConnectorCard", () => { it("on 커넥터는 [동기화]+[해제] 노출", () => { render(); expect(screen.getByText("동기화")).toBeInTheDocument(); expect(screen.getByText("해제")).toBeInTheDocument(); expect(screen.queryByText("연결")).toBeNull(); }); it("off 커넥터는 [연결] 노출", () => { render( , ); expect(screen.getByText("연결")).toBeInTheDocument(); expect(screen.queryByText("동기화")).toBeNull(); expect(screen.queryByText("해제")).toBeNull(); }); it("동기화 클릭 시 onSync(id) 호출", () => { const onSync = vi.fn(); render(); fireEvent.click(screen.getByText("동기화")); expect(onSync).toHaveBeenCalledWith("ca-mail-work"); }); });