50 lines
1.2 KiB
TypeScript
50 lines
1.2 KiB
TypeScript
import "$sb/lib/syscall_mock.ts";
|
|
import { parse } from "../../common/markdown_parser/parse_tree.ts";
|
|
import buildMarkdown from "../../common/markdown_parser/parser.ts";
|
|
import { assertEquals } from "../../test_deps.ts";
|
|
import { extractFeedItems } from "$sb/lib/feed.ts";
|
|
import { nodeDefToMDExt } from "../../common/markdown_parser/markdown_ext.ts";
|
|
|
|
const feedSample1 = `---
|
|
test: ignore me
|
|
---
|
|
# My first item
|
|
$myid
|
|
Some text
|
|
|
|
---
|
|
|
|
# My second item
|
|
[id: myid2][otherAttribute: 42]
|
|
And some text
|
|
|
|
---
|
|
|
|
Completely free form
|
|
`;
|
|
|
|
Deno.test("Test feed parsing", async () => {
|
|
// Ad hoc added the NamedAnchor extension from the core plug-in inline here
|
|
const lang = buildMarkdown([nodeDefToMDExt("NamedAnchor", {
|
|
firstCharacters: ["$"],
|
|
regex: "\\$[a-zA-Z\\.\\-\\/]+[\\w\\.\\-\\/]*",
|
|
})]);
|
|
const tree = parse(lang, feedSample1);
|
|
const items = await extractFeedItems(tree);
|
|
assertEquals(items.length, 3);
|
|
assertEquals(items[0], {
|
|
id: "myid",
|
|
text: "Some text",
|
|
title: "My first item",
|
|
});
|
|
assertEquals(items[1], {
|
|
id: "myid2",
|
|
attributes: {
|
|
otherAttribute: 42,
|
|
},
|
|
title: "My second item",
|
|
text: "And some text",
|
|
});
|
|
assertEquals(items[2].text, "Completely free form");
|
|
});
|