import { describe, it, expect } from "vitest"; import { extractTargetFromData, extractBasenameFromTarget, } from "../../interview/extractTargetFromAnchor"; describe("extractBasenameFromTarget", () => { it("preserves simple basename", () => { expect(extractBasenameFromTarget("test-note")).toBe("test-note"); }); it("preserves spaces and case", () => { expect(extractBasenameFromTarget("My Note")).toBe("My Note"); expect(extractBasenameFromTarget("My Test Note")).toBe("My Test Note"); }); it("removes alias separator", () => { expect(extractBasenameFromTarget("test-note|Alias Text")).toBe("test-note"); expect(extractBasenameFromTarget("My Note|Display Name")).toBe("My Note"); }); it("removes heading separator", () => { expect(extractBasenameFromTarget("test-note#Section")).toBe("test-note"); expect(extractBasenameFromTarget("My Note#Section")).toBe("My Note"); }); it("removes alias and heading", () => { expect(extractBasenameFromTarget("test-note#Section|Alias")).toBe("test-note"); expect(extractBasenameFromTarget("My Note#Section|Alias")).toBe("My Note"); }); it("handles alias before heading", () => { expect(extractBasenameFromTarget("test-note|Alias#Section")).toBe("test-note"); }); it("trims whitespace", () => { expect(extractBasenameFromTarget(" test-note ")).toBe("test-note"); expect(extractBasenameFromTarget(" My Note ")).toBe("My Note"); }); }); describe("extractTargetFromData", () => { it("extracts from data-href attribute", () => { const result = extractTargetFromData("test-note", null); expect(result).toBe("test-note"); }); it("extracts from data-href with alias", () => { const result = extractTargetFromData("test-note|Alias Text", null); expect(result).toBe("test-note"); }); it("extracts from data-href with heading", () => { const result = extractTargetFromData("test-note#Section", null); expect(result).toBe("test-note"); }); it("extracts from data-href with alias and heading", () => { const result = extractTargetFromData("test-note#Section|Alias", null); expect(result).toBe("test-note"); }); it("preserves spaces from data-href", () => { const result = extractTargetFromData("My Note", null); expect(result).toBe("My Note"); }); it("preserves spaces from data-href with alias", () => { const result = extractTargetFromData("My Note|Display", null); expect(result).toBe("My Note"); }); it("falls back to text content if data-href missing", () => { const result = extractTargetFromData(null, "test-note"); expect(result).toBe("test-note"); }); it("falls back to text content with alias", () => { const result = extractTargetFromData(null, "test-note|Alias Text"); expect(result).toBe("test-note"); }); it("preserves spaces from text content", () => { const result = extractTargetFromData(null, "My Note"); expect(result).toBe("My Note"); }); it("returns null if neither data-href nor text content", () => { const result = extractTargetFromData(null, null); expect(result).toBe(null); }); it("prefers data-href over text content", () => { const result = extractTargetFromData("data-href-note", "text-note"); expect(result).toBe("data-href-note"); }); it("trims whitespace from text content", () => { const result = extractTargetFromData(null, " test-note "); expect(result).toBe("test-note"); }); it("handles Live Preview format (data-href with spaces)", () => { const result = extractTargetFromData("My Live Preview Note", null); expect(result).toBe("My Live Preview Note"); }); it("handles Live Preview format with alias", () => { const result = extractTargetFromData("My Note|Display Text", null); expect(result).toBe("My Note"); }); it("handles Live Preview format with heading", () => { const result = extractTargetFromData("My Note#Section", null); expect(result).toBe("My Note"); }); });