1
0
silverbullet/plugs/lib/tree.test.ts
2022-04-04 15:25:07 +02:00

53 lines
1.2 KiB
TypeScript

import {expect, test} from "@jest/globals";
import {parse} from "../../common/tree";
import {addParentPointers, collectNodesMatching, findParentMatching, nodeAtPos, renderMarkdown,} from "./tree";
const mdTest1 = `
# Heading
## Sub _heading_ cool
Hello, this is some **bold** text and *italic*. And [a link](http://zef.me).
%% My comment here
%% And second line
And an @mention
http://zef.plus
- This is a list [[PageLink]]
- With another item
- TODOs:
- [ ] A task that's not yet done
- [x] Hello
- And a _third_ one [[Wiki Page]] yo
`;
const mdTest2 = `
Hello
* Item 1
*
Sup`;
test("Run a Node sandbox", async () => {
let mdTree = parse(mdTest1);
addParentPointers(mdTree);
// console.log(JSON.stringify(mdTree, null, 2));
let wikiLink = nodeAtPos(mdTree, mdTest1.indexOf("Wiki Page"))!;
expect(wikiLink.type).toBe("WikiLink");
expect(
findParentMatching(wikiLink, (n) => n.type === "BulletList")
).toBeDefined();
let allTodos = collectNodesMatching(mdTree, (n) => n.type === "Task");
expect(allTodos.length).toBe(2);
// Render back into markdown should be equivalent
expect(renderMarkdown(mdTree)).toBe(mdTest1);
let mdTree2 = parse(mdTest2);
console.log(JSON.stringify(mdTree2, null, 2));
});