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('https://njump.me/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'); }); });