| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- import { describe, expect, it } from "vitest"
- import {
- classifyContextSourcePath,
- getDataSourceKinds,
- sortContextSourcePaths,
- } from "./source-paths"
- const projectPath = "E:/Novel"
- describe("context source paths", () => {
- it.each([
- ["E:/Novel/wiki/chapters/chapter-001.md", "chapter"],
- ["E:/Novel/wiki/outlines/main.md", "outline"],
- ["E:/Novel/wiki/memory/伏笔.md", "memory"],
- ["E:/Novel/wiki/entities/林默.md", "entity"],
- ["E:/Novel/wiki/settings/world.md", "setting"],
- ["E:/Novel/.novel/snapshots/001.snapshot.json", "snapshot"],
- ["E:/Novel/.novel/cognition-state.json", "entity"],
- ["E:/Novel/.novel/revision-feedback.json", "snapshot"],
- ["E:/Novel/.novel/timeline.json", "memory"],
- ["E:/Novel/.qmai/writing-style.json", "setting"],
- ["E:/Novel/.qmai/book-analysis-context.json", "book-analysis"],
- ["E:/Novel/.qmai/character-aura.json", "entity"],
- ["E:/Novel/.qmai/simulations/latest.json", "deduction"],
- ["E:/Novel/.qmai/context-cache/v1/manifest.json", "ignored"],
- ] as const)("classifies %s as %s", (path, expected) => {
- expect(classifyContextSourcePath(projectPath, path)).toBe(expected)
- })
- it("normalizes separators before deterministic sorting", () => {
- expect(sortContextSourcePaths([
- "E:\\Novel\\wiki\\outlines\\z.md",
- "E:/Novel/wiki/outlines/a.md",
- ])).toEqual([
- "E:/Novel/wiki/outlines/a.md",
- "E:/Novel/wiki/outlines/z.md",
- ])
- })
- it("maps data sources to only their relevant source kinds", () => {
- expect(getDataSourceKinds("outline")).toEqual(["outline"])
- expect(getDataSourceKinds("relatedSettings")).toEqual(["entity", "setting"])
- expect(getDataSourceKinds("recentChapterContents")).toEqual(["chapter"])
- expect(getDataSourceKinds("storyFrameworkBinding")).toEqual(["outline", "setting", "deduction"])
- expect(getDataSourceKinds("bookAnalysisReferences")).toEqual(["book-analysis"])
- })
- })
|