mindnet_obsidian/src/tests/interview/extractTargetFromAnchor.test.ts
Lars 90eafb62f4
Some checks are pending
Node.js build / build (20.x) (push) Waiting to run
Node.js build / build (22.x) (push) Waiting to run
Implement unresolved link handling and note adoption features
- Added functionality to intercept unresolved link clicks in both Reading View and Live Preview, allowing users to create notes directly from unresolved links.
- Introduced settings for auto-starting interviews on unresolved link clicks, bypass modifiers for link interception, and options for adopting newly created notes in the editor.
- Enhanced the settings interface with new options for managing unresolved link behavior and note adoption criteria.
- Implemented a file create handler to automatically adopt new notes based on content length and user confirmation.
- Improved error handling and user notifications throughout the new features for a better user experience.
2026-01-17 10:07:07 +01:00

118 lines
3.9 KiB
TypeScript

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