diff --git a/apps/web/src/components/review/DiffViewer.test.tsx b/apps/web/src/components/review/DiffViewer.test.tsx new file mode 100644 index 0000000..062de65 --- /dev/null +++ b/apps/web/src/components/review/DiffViewer.test.tsx @@ -0,0 +1,192 @@ +// @vitest-environment happy-dom +import "@testing-library/jest-dom/vitest"; +import { render, screen, act } from "@testing-library/react"; +import { vi, describe, it, expect, beforeEach, afterEach } from "vitest"; +import { DiffViewer } from "./DiffViewer"; +import type { FileDiff } from "./types"; + +// ── Module mocks ────────────────────────────────────────────────────────────── + +vi.mock("./FileCard", () => ({ + FileCard: ({ file }: { file: FileDiff }) => ( +
+ ), +})); + +// Hoist the fetch mock so it can be referenced inside vi.mock factories +const { mockGetFileDiffFetch } = vi.hoisted(() => ({ + mockGetFileDiffFetch: vi.fn().mockResolvedValue({ rawDiff: "" }), +})); + +vi.mock("@/lib/trpc", () => ({ + trpc: { + useUtils: () => ({ + getFileDiff: { fetch: mockGetFileDiffFetch }, + }), + }, +})); + +// DiffViewer calls useQueryClient() (even though the return value is unused). +// Provide a minimal mock so the hook doesn't throw outside a QueryClientProvider. +vi.mock("@tanstack/react-query", async (importOriginal) => { + const actual = + await importOriginal