Add tests for micromark helpers filterByPredicate, filterByTypes, and getMicromarkEvents.

This commit is contained in:
David Anson 2023-02-10 20:37:32 -08:00
parent a87f40efd8
commit 5302ee45de
3 changed files with 68 additions and 8 deletions

View file

@ -3,11 +3,41 @@
import fs from "node:fs/promises";
import test from "ava";
import { newLineRe } from "../helpers/helpers.js";
import { parse } from "../helpers/micromark.cjs";
import { filterByPredicate, filterByTypes, getMicromarkEvents, parse }
from "../helpers/micromark.cjs";
test("parse", async(t) => {
t.plan(1);
const content = await fs.readFile("./test/every-markdown-syntax.md", "utf8");
const document = parse(content.split(newLineRe).join("\n"));
const normalizedContent = content.split(newLineRe).join("\n");
const document = parse(normalizedContent);
t.snapshot(document, "Unexpected tokens");
});
test("getMicromarkEvents/filterByPredicate", async(t) => {
t.plan(1);
const content = await fs.readFile("./test/every-markdown-syntax.md", "utf8");
const normalizedContent = content.split(newLineRe).join("\n");
const events = getMicromarkEvents(normalizedContent);
const eventTypes = events
.filter((event) => event[0] === "enter")
.map((event) => event[1].type);
const document = parse(normalizedContent);
const tokens = filterByPredicate(document, () => true);
const tokenTypes = tokens.map((token) => token.type);
t.deepEqual(tokenTypes, eventTypes);
});
test("filterByTypes", async(t) => {
t.plan(6);
const content = await fs.readFile("./test/every-markdown-syntax.md", "utf8");
const normalizedContent = content.split(newLineRe).join("\n");
const document = parse(normalizedContent);
const tokens = filterByTypes(
document,
[ "atxHeadingText", "codeText", "htmlText", "setextHeadingText" ]
);
for (const token of tokens) {
t.true(token.type.endsWith("Text"));
}
});