// frontend/tests/inbox/RouteChips.test.tsx import { render, screen } from "@testing-library/react"; import { describe, expect, it } from "vitest"; import RouteChips from "@/components/inbox/RouteChips"; import type { Classification } from "@/lib/types"; const base: Classification = { id: "c1", inbox_item_id: "s1", type: "task", sphere: "life", project_id: "p", proj_label: "개인 › 여행 — 한국", tone: "coral", due_text: "출발 전", when_text: "오늘 21:00", extra: "가격 추적 알림 켜둠", reason: "r", confidence: 0.9, model: "heuristic", created_at: "", }; describe("RouteChips", () => { it("task 칩: 작업 + sphere(개인) + proj + extra", () => { render( {}} />); expect(screen.getByText("작업")).toBeInTheDocument(); expect(screen.getByText("개인")).toBeInTheDocument(); expect(screen.getByText("개인 › 여행 — 한국")).toBeInTheDocument(); expect(screen.getByText("가격 추적 알림 켜둠")).toBeInTheDocument(); }); it("event 칩: type 클래스에 event 포함", () => { const { container } = render( {}} />, ); expect(container.querySelector(".r-chip.type.event")).toBeTruthy(); expect(screen.getByText("일정")).toBeInTheDocument(); }); it("due/when/extra 없으면 칩 미표시", () => { render( {}} />, ); expect(screen.queryByText("출발 전")).toBeNull(); expect(screen.getByText("아이디어")).toBeInTheDocument(); }); it("editable=false면 타입 칩 disabled", () => { render( {}} />); expect(screen.getByRole("button", { name: /타입: 작업/ })).toBeDisabled(); }); });