import { describe, test, expect } from 'vitest' import { tiptapHTMLToMarkdown, markdownToHTML, looksLikeMarkdown, extractMarkdownTitle, } from '../../lib/editor/markdown-export' describe('looksLikeMarkdown', () => { test('detects H1 heading', () => { expect(looksLikeMarkdown('# Hello World')).toBe(true) }) test('detects unordered list', () => { expect(looksLikeMarkdown('- Item one\n- Item two')).toBe(true) expect(looksLikeMarkdown('* Item one')).toBe(true) }) test('detects ordered list', () => { expect(looksLikeMarkdown('1. First\n2. Second')).toBe(true) }) test('detects blockquote', () => { expect(looksLikeMarkdown('> This is a quote')).toBe(true) }) test('detects code fence', () => { expect(looksLikeMarkdown('```\nconst x = 1\n```')).toBe(true) }) test('detects inline code', () => { expect(looksLikeMarkdown('Use `console.log()` for debugging')).toBe(true) }) test('detects bold', () => { expect(looksLikeMarkdown('This is **bold** text')).toBe(true) }) test('detects italic', () => { expect(looksLikeMarkdown('This is *italic* text')).toBe(true) }) test('detects table', () => { expect(looksLikeMarkdown('| Col1 | Col2 |\n|------|------|')).toBe(true) }) test('detects link', () => { expect(looksLikeMarkdown('See [TipTap docs](https://tiptap.dev)')).toBe(true) }) test('does NOT flag plain prose as Markdown', () => { expect(looksLikeMarkdown('This is a normal sentence without any markdown.')).toBe(false) expect(looksLikeMarkdown('Hello world, this is plain text.')).toBe(false) }) test('does NOT flag very short text', () => { expect(looksLikeMarkdown('Hi')).toBe(false) expect(looksLikeMarkdown('')).toBe(false) }) }) describe('tiptapHTMLToMarkdown', () => { test('converts H1 to # heading', () => { const md = tiptapHTMLToMarkdown('
This is bold text.
') expect(md).toContain('**bold**') }) test('converts italic text', () => { const md = tiptapHTMLToMarkdown('This is italic text.
') expect(md).toContain('_italic_') }) test('converts unordered list', () => { const md = tiptapHTMLToMarkdown('const x = 1;')
expect(md).toContain('```')
expect(md).toContain('const x = 1;')
})
test('converts blockquote', () => {
const md = tiptapHTMLToMarkdown('') expect(md).toContain('> Quote text') }) test('converts inline code', () => { const md = tiptapHTMLToMarkdown('Quote text
Use console.log() here.