dedup-model-prefs.spec.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { beforeEach, expect, test, vi } from "vitest"
  2. vi.mock("@/commands/fs", () => ({
  3. readFile: vi.fn(),
  4. writeFile: vi.fn(),
  5. fileExists: vi.fn(),
  6. }))
  7. import { readFile, writeFile, fileExists } from "@/commands/fs"
  8. import { loadDedupModelPrefs, saveDedupModelPrefs } from "./dedup-model-prefs"
  9. const mockedReadFile = vi.mocked(readFile)
  10. const mockedWriteFile = vi.mocked(writeFile)
  11. const mockedFileExists = vi.mocked(fileExists)
  12. beforeEach(() => {
  13. vi.clearAllMocks()
  14. })
  15. test("saveDedupModelPrefs writes detect and merge ids", async () => {
  16. await saveDedupModelPrefs("/Project", {
  17. detectModelId: "cheap/model",
  18. mergeModelId: "strong/model",
  19. })
  20. expect(mockedWriteFile).toHaveBeenCalledTimes(1)
  21. const written = JSON.parse(String(mockedWriteFile.mock.calls[0]?.[1]))
  22. expect(written).toEqual({
  23. detectModelId: "cheap/model",
  24. mergeModelId: "strong/model",
  25. })
  26. })
  27. test("loadDedupModelPrefs accepts legacy modelId as detect", async () => {
  28. mockedFileExists.mockResolvedValue(true)
  29. mockedReadFile.mockResolvedValue(
  30. JSON.stringify({ modelId: "legacy/detect-only" }),
  31. )
  32. const prefs = await loadDedupModelPrefs("/Project")
  33. expect(prefs).toEqual({
  34. detectModelId: "legacy/detect-only",
  35. mergeModelId: undefined,
  36. })
  37. })