mindnet_obsidian/src/tests/interview/extractTargetFromAnchor.test.ts

103 lines
3.4 KiB
TypeScript
Raw Normal View History

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");
});
});