import assert from 'node:assert/strict' import test from 'node:test' import { isCollectMaterialLinkPath, resolveCollectMaterialLinkToken, } from '../src/utils/collect-link.ts' test('补资料链接:/supplement/ 命中并解析 token', () => { assert.equal(isCollectMaterialLinkPath('/supplement/abc123'), true) assert.equal(resolveCollectMaterialLinkToken('/supplement/abc123'), 'abc123') }) test('补资料链接:容忍结尾斜杠、查询串与 hash', () => { assert.equal(resolveCollectMaterialLinkToken('/supplement/abc123/'), 'abc123') assert.equal(resolveCollectMaterialLinkToken('/supplement/abc123?from=chat'), 'abc123') assert.equal(resolveCollectMaterialLinkToken('/supplement/abc123#top'), 'abc123') }) test('补资料链接:命名空间命中但缺少 token 时返回空串', () => { assert.equal(isCollectMaterialLinkPath('/supplement'), true) assert.equal(isCollectMaterialLinkPath('/supplement/'), true) assert.equal(resolveCollectMaterialLinkToken('/supplement'), '') assert.equal(resolveCollectMaterialLinkToken('/supplement/a/b'), '') }) test('补资料链接:其它路径不命中', () => { for (const pathname of ['/', '/claim/abc', '/collect', '/supplementx/abc', '']) { assert.equal(isCollectMaterialLinkPath(pathname), false, pathname) assert.equal(resolveCollectMaterialLinkToken(pathname), '', pathname) } })