import { describe, expect, it } from 'vitest' import { extractMarkdownPlainText } from '@deepseek-ai/dsh-client-ui-primitives' const MARKDOWN = [ '# Release notes', '', 'First **paragraph** with [a link](https://example.com) and ![diagram](diagram.png).', '', '- shipped', '- `verified`', '', '```ts', 'const ready = true', '```', ].join('\n') describe('extractMarkdownPlainText', () => { it('projects the complete GFM document without presentation syntax', () => { expect(extractMarkdownPlainText(MARKDOWN)).toBe([ 'Release notes', '', 'First paragraph with a link and diagram.', '', 'shipped', 'verified', '', 'const ready = true', ].join('\n')) }) it('selects the first visible line or first semantic paragraph', () => { expect(extractMarkdownPlainText(MARKDOWN, { mode: 'first-line' })).toBe('Release notes') expect(extractMarkdownPlainText(MARKDOWN, { mode: 'first-paragraph' })) .toBe('First paragraph with a link and diagram.') }) it('omits raw HTML and returns a useful fallback when no paragraph exists', () => { const markdown = '\n\n## Safe heading' expect(extractMarkdownPlainText(markdown)).toBe('Safe heading') expect(extractMarkdownPlainText(markdown, { mode: 'first-paragraph' })).toBe('Safe heading') }) it('projects GFM tables, references, hard breaks, and block structure', () => { const markdown = [ '> first\\', '> second with ![diagram][asset] and visible', '', '---', '', '| Name | Value |', '| --- | --- |', '| alpha | `1` |', '', '[asset]: diagram.png', ].join('\n') expect(extractMarkdownPlainText(markdown)).toBe([ 'first second with diagram and visible', '', 'Name\tValue', 'alpha\t1', ].join('\n')) }) })