33 lines
1.4 KiB
TypeScript
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)
|
|
}
|
|
})
|