Files
order_site/apps/frontend/tests/collect-link.test.ts
T

33 lines
1.4 KiB
TypeScript

import assert from 'node:assert/strict'
import test from 'node:test'
import {
isCollectMaterialLinkPath,
resolveCollectMaterialLinkToken,
} from '../src/utils/collect-link.ts'
test('补资料链接:/supplement/<token> 命中并解析 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)
}
})