Files
plainleaf/plug-api/lib/resolve.test.ts
T

55 lines
1.6 KiB
TypeScript

import {
cleanPageRef,
resolvePath,
rewritePageRefs,
} from "@silverbulletmd/silverbullet/lib/resolve";
import { assertEquals } from "@std/assert";
import { type ParseTree, renderToText } from "./tree.ts";
import { parse } from "$common/markdown_parser/parse_tree.ts";
import { extendedMarkdownLanguage } from "$common/markdown_parser/parser.ts";
Deno.test("Test URL resolver", () => {
// Absolute paths
assertEquals("some page", resolvePath("test", "/some page"));
assertEquals("some page", resolvePath("/folder/test", "/some page"));
assertEquals("bla@123", resolvePath("somewhere", "/bla@123"));
assertEquals("test.jpg", resolvePath("folder/test", "/test.jpg"));
// Relative paths
assertEquals("test.jpg", resolvePath("test", "test.jpg"));
assertEquals("folder/test.jpg", resolvePath("folder/test", "test.jpg"));
assertEquals(cleanPageRef("hello"), "hello");
assertEquals(cleanPageRef("[[hello]]"), "hello");
});
Deno.test("Test rewritePageRefs", () => {
let tree = parseMarkdown(`
This is a [[local link]] and [[local link|with alias]].
\`\`\`query
page render [[template/page]]
\`\`\`
\`\`\`template
page: "[[template/use-template]]"
\`\`\`
`);
let rewrittenText = renderToText(tree);
tree = parseMarkdown(
`This is a [[local link]] and [[local link|with alias]].`,
);
// Now test the default case without federated links
rewritePageRefs(tree, "index");
rewrittenText = renderToText(tree);
assertEquals(
rewrittenText,
`This is a [[local link]] and [[local link|with alias]].`,
);
});
function parseMarkdown(text: string): ParseTree {
return parse(extendedMarkdownLanguage, text);
}