import assert from 'node:assert/strict'; import test from 'node:test'; import { analyzeChatMessageForSave, extractStaticPageLinks, } from './mindspace-chat-save.mjs'; test('extractStaticPageLinks finds user-owned MindSpace html links', () => { const content = ` 页面已完成! https://goo.tkmind.cn/MindSpace/john/mapo-tofu.html `; const links = extractStaticPageLinks(content, { username: 'john' }); assert.equal(links.length, 1); assert.equal(links[0].filename, 'mapo-tofu.html'); assert.equal(links[0].relativePath, 'mapo-tofu.html'); }); test('extractStaticPageLinks ignores other users', () => { const content = 'https://goo.tkmind.cn/MindSpace/other/report.html'; const links = extractStaticPageLinks(content, { username: 'john' }); assert.equal(links.length, 0); }); test('analyzeChatMessageForSave prefers static html mode', () => { const analysis = analyzeChatMessageForSave({ content: '链接 https://goo.tkmind.cn/MindSpace/john/report.html', username: 'john', h5Root: '/tmp/h5', }); assert.equal(analysis.contentMode, 'static_html'); assert.equal(analysis.filename, 'report.html'); assert.match(analysis.suggestedTitle, /report/i); }); test('analyzeChatMessageForSave falls back to markdown article', () => { const analysis = analyzeChatMessageForSave({ content: '这是一段普通 AI 回答,没有页面链接。', username: 'john', h5Root: '/tmp/h5', }); assert.equal(analysis.contentMode, 'markdown'); assert.equal(analysis.links.length, 0); assert.match(analysis.suggestedTitle, /普通 AI 回答/); });