import assert from 'node:assert/strict'; import test from 'node:test'; import { MINDSPACE_PAGE_CONTENT_MESSAGE, buildEditablePreviewDocument, } from './src/utils/mindspaceVisualEditor.ts'; test('buildEditablePreviewDocument injects visual editor into body', () => { const html = '

Hi

'; const result = buildEditablePreviewDocument(html); assert.match(result, /mindspace-visual-editor-style/); assert.match(result, /mindspace-visual-editor-script/); assert.match(result, /data-mindspace-editing/); assert.match(result, /

Hi<\/p>/); assert.match(result, new RegExp(MINDSPACE_PAGE_CONTENT_MESSAGE.replace(':', '\\:'))); assert.match(result, /data-collapsed/); assert.match(result, /5000/); assert.match(result, /点击展开/); assert.match(result, /isProtectedNode/); }); test('buildEditablePreviewDocument normalizes platform brand line', () => { const html = '

📧 contact@tkmind.ai

'; const result = buildEditablePreviewDocument(html); assert.match(result, /TKMind · 智趣/); assert.match(result, /data-mindspace-page-tag="platform-brand"/); assert.doesNotMatch(result, /contact@tkmind\.cn/i); assert.doesNotMatch(result, /tkmind\.ai/i); }); test('buildEditablePreviewDocument wraps fragment html', () => { const result = buildEditablePreviewDocument('
'); assert.match(result, /
块<\/section>/); assert.match(result, /<\/body>/); }); test('buildEditablePreviewDocument provides blank fallback', () => { const result = buildEditablePreviewDocument(''); assert.match(result, /空白页面/); }); test('buildEditablePreviewDocument strips CSP meta so editor script can run', () => { const html = `

探索世界

`; const result = buildEditablePreviewDocument(html); assert.doesNotMatch(result, /Content-Security-Policy/); assert.match(result, /mindspace-visual-editor-script/); assert.match(result, /

探索世界<\/h1>/); });