import { describe, it, expect } from "vitest";
import { parseBasicmarkup } from "../../src/lib/utils/markup/basicMarkupParser";
// Helper to strip whitespace for easier comparison
function stripWS(str: string) {
return str.replace(/\s+/g, " ").trim();
}
describe("Basic Markup Parser", () => {
it("parses ATX and Setext headers", async () => {
const input = "# H1\nText\n\nH2\n====\n";
const output = await parseBasicmarkup(input);
expect(stripWS(output)).toContain("H1");
expect(stripWS(output)).toContain("H2");
});
it("parses bold, italic, and strikethrough", async () => {
const input =
"*bold* **bold** _italic_ __italic__ ~strikethrough~ ~~strikethrough~~";
const output = await parseBasicmarkup(input);
expect(output).toContain("bold");
expect(output).toContain("italic");
expect(output).toContain('strikethrough');
});
it("parses blockquotes", async () => {
const input = "> quote";
const output = await parseBasicmarkup(input);
expect(output).toContain("
{ const input = "> quote\n> quote"; const output = await parseBasicmarkup(input); expect(output).toContain("{ const input = "* a\n* b"; const output = await parseBasicmarkup(input); expect(output).toContain("{ const input = "1. one\n2. two"; const output = await parseBasicmarkup(input); expect(output).toContain("
{ const input = "[link](https://example.com) "; const output = await parseBasicmarkup(input); expect(output).toContain(" { const input = "#hashtag"; const output = await parseBasicmarkup(input); expect(output).toContain("text-primary-600"); expect(output).toContain("#hashtag"); }); it("parses nostr identifiers", async () => { const input = "npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq"; const output = await parseBasicmarkup(input); expect(output).toContain( "./events?id=npub1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq", ); }); it("parses emoji shortcodes", async () => { const input = "hello :smile:"; const output = await parseBasicmarkup(input); expect(output).toMatch(/😄|:smile:/); }); it("parses wikilinks", async () => { const input = "[[Test Page|display]]"; const output = await parseBasicmarkup(input); expect(output).toContain("wikilink"); expect(output).toContain("display"); }); });