1
0

source-paths.spec.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { describe, expect, it } from "vitest"
  2. import {
  3. classifyContextSourcePath,
  4. getDataSourceKinds,
  5. sortContextSourcePaths,
  6. } from "./source-paths"
  7. const projectPath = "E:/Novel"
  8. describe("context source paths", () => {
  9. it.each([
  10. ["E:/Novel/wiki/chapters/chapter-001.md", "chapter"],
  11. ["E:/Novel/wiki/outlines/main.md", "outline"],
  12. ["E:/Novel/wiki/memory/伏笔.md", "memory"],
  13. ["E:/Novel/wiki/entities/林默.md", "entity"],
  14. ["E:/Novel/wiki/settings/world.md", "setting"],
  15. ["E:/Novel/.novel/snapshots/001.snapshot.json", "snapshot"],
  16. ["E:/Novel/.novel/cognition-state.json", "entity"],
  17. ["E:/Novel/.novel/revision-feedback.json", "snapshot"],
  18. ["E:/Novel/.novel/timeline.json", "memory"],
  19. ["E:/Novel/.qmai/writing-style.json", "setting"],
  20. ["E:/Novel/.qmai/book-analysis-context.json", "book-analysis"],
  21. ["E:/Novel/.qmai/character-aura.json", "entity"],
  22. ["E:/Novel/.qmai/simulations/latest.json", "deduction"],
  23. ["E:/Novel/.qmai/context-cache/v1/manifest.json", "ignored"],
  24. ] as const)("classifies %s as %s", (path, expected) => {
  25. expect(classifyContextSourcePath(projectPath, path)).toBe(expected)
  26. })
  27. it("normalizes separators before deterministic sorting", () => {
  28. expect(sortContextSourcePaths([
  29. "E:\\Novel\\wiki\\outlines\\z.md",
  30. "E:/Novel/wiki/outlines/a.md",
  31. ])).toEqual([
  32. "E:/Novel/wiki/outlines/a.md",
  33. "E:/Novel/wiki/outlines/z.md",
  34. ])
  35. })
  36. it("maps data sources to only their relevant source kinds", () => {
  37. expect(getDataSourceKinds("outline")).toEqual(["outline"])
  38. expect(getDataSourceKinds("relatedSettings")).toEqual(["entity", "setting"])
  39. expect(getDataSourceKinds("recentChapterContents")).toEqual(["chapter"])
  40. expect(getDataSourceKinds("storyFrameworkBinding")).toEqual(["outline", "setting", "deduction"])
  41. expect(getDataSourceKinds("bookAnalysisReferences")).toEqual(["book-analysis"])
  42. })
  43. })