55 lines
1.6 KiB
TypeScript
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);
|
|
}
|