import assert from 'node:assert/strict' import test from 'node:test' import { buildCollectMaterialLinkUrl, isCollectMaterialLinkPath, normalizeOrderNoInput, resolveCollectMaterialLinkCode, } from '../src/utils/collect-link.ts' test('补资料链接:/supplement/<订单号> 命中并解析 code', () => { assert.equal(isCollectMaterialLinkPath('/supplement/2630501851236676'), true) assert.equal(resolveCollectMaterialLinkCode('/supplement/2630501851236676'), '2630501851236676') }) test('补资料链接:入口页 /supplement 命中命名空间但没有 code', () => { assert.equal(isCollectMaterialLinkPath('/supplement'), true) assert.equal(isCollectMaterialLinkPath('/supplement/'), true) assert.equal(resolveCollectMaterialLinkCode('/supplement'), '') assert.equal(resolveCollectMaterialLinkCode('/supplement/'), '') }) test('补资料链接:容忍结尾斜杠、查询串与 hash', () => { assert.equal(resolveCollectMaterialLinkCode('/supplement/2630501851236676/'), '2630501851236676') assert.equal( resolveCollectMaterialLinkCode('/supplement/2630501851236676?from=chat'), '2630501851236676', ) assert.equal( resolveCollectMaterialLinkCode('/supplement/2630501851236676#top'), '2630501851236676', ) }) test('补资料链接:多段路径不解析 code', () => { assert.equal(resolveCollectMaterialLinkCode('/supplement/a/b'), '') }) test('补资料链接:其它路径不命中', () => { for (const pathname of ['/', '/claim/abc', '/collect', '/supplementx/abc', '']) { assert.equal(isCollectMaterialLinkPath(pathname), false, pathname) assert.equal(resolveCollectMaterialLinkCode(pathname), '', pathname) } }) test('补资料链接:URL 构建去掉 origin 结尾斜杠并编码', () => { assert.equal( buildCollectMaterialLinkUrl('https://ks.khhao.com/', '2630501851236676'), 'https://ks.khhao.com/supplement/2630501851236676', ) assert.equal( buildCollectMaterialLinkUrl('https://ks.khhao.com', 'abc/def'), 'https://ks.khhao.com/supplement/abc%2Fdef', ) assert.equal(buildCollectMaterialLinkUrl('', 'abc'), '') assert.equal(buildCollectMaterialLinkUrl('https://ks.khhao.com', ''), '') }) test('补资料入口:输入归一化支持订单号与完整链接', () => { assert.equal(normalizeOrderNoInput(' 2630501851236676 '), '2630501851236676') assert.equal( normalizeOrderNoInput('https://ks.khhao.com/supplement/2630501851236676?from=chat#top'), '2630501851236676', ) assert.equal(normalizeOrderNoInput(''), '') })