import { describe, it, expect } from 'vitest'; import { renderMarkdown } from '../utils/markdown-lite'; describe('renderMarkdown', () => { it('returns empty string for empty input', () => { expect(renderMarkdown('')).toBe(''); }); it('wraps plain text in
', () => { expect(renderMarkdown('Hello world')).toBe('
Hello world
'); }); it('creates separate paragraphs on blank lines', () => { const result = renderMarkdown('First\n\nSecond'); expect(result).toContain('First
'); expect(result).toContain('Second
'); }); it('renders headings (level + 1, h1 reserved)', () => { expect(renderMarkdown('## Heading 2')).toContain('code');
});
it('renders markdown links', () => {
const result = renderMarkdown('[label](https://example.com)');
expect(result).toContain('label');
});
it('strips dangerous schemes from markdown links (XSS defense)', () => {
const out1 = renderMarkdown('[click](javascript:alert(1))');
expect(out1).not.toContain('javascript:');
expect(out1).not.toContain('alert(1))');
expect(out2).not.toContain('data:');
expect(out2).not.toContain('