- 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.
118 lines
3.9 KiB
TypeScript
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");
|
|
});
|
|
});
|