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 .',
'',
'- 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('preserves raw HTML while removing Markdown presentation markup', () => {
const block = [
'',
'Command: pnpm test',
'Exit code: 0',
'',
].join('\n')
expect(extractMarkdownPlainText(block)).toBe(block)
expect(extractMarkdownPlainText('**Status:** ready'))
.toBe('Status: ready')
expect(extractMarkdownPlainText(block, { mode: 'first-paragraph' }))
.toBe('')
})
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'))
})
})