task-7: buildDownloadUrl()/resolveDownloadUrl() 下载 URL 统一构造(user_id 追加与去重、fresh 优先)
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import { test } from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
import { buildDownloadUrl, resolveDownloadUrl } from '../src/shared/api/download.ts'
|
||||
|
||||
test('test_download_url_user_id', () => {
|
||||
assert.equal(
|
||||
buildDownloadUrl('/api/dedupe/results/5/download', 42),
|
||||
'/api/dedupe/results/5/download?user_id=42',
|
||||
)
|
||||
})
|
||||
|
||||
test('test_download_url_no_user_id', () => {
|
||||
assert.equal(buildDownloadUrl('/api/dedupe/results/5/download'), '/api/dedupe/results/5/download')
|
||||
})
|
||||
|
||||
test('test_download_url_existing_user_id', () => {
|
||||
assert.equal(
|
||||
buildDownloadUrl('/api/dedupe/results/5/download?user_id=99', 42),
|
||||
'/api/dedupe/results/5/download?user_id=99',
|
||||
'已有 user_id 时不重复追加',
|
||||
)
|
||||
})
|
||||
|
||||
test('test_resolve_download_fresh_priority', () => {
|
||||
const item = { freshDownloadUrl: '/newApi/api/fresh-url', downloadUrl: '/old-url' }
|
||||
assert.equal(resolveDownloadUrl(item), '/newApi/api/fresh-url')
|
||||
})
|
||||
|
||||
test('test_resolve_download_fallback', () => {
|
||||
const item = { downloadUrl: '/newApi/api/old-url' }
|
||||
assert.equal(resolveDownloadUrl(item), '/newApi/api/old-url')
|
||||
})
|
||||
|
||||
test('test_resolve_download_both_blank', () => {
|
||||
assert.equal(resolveDownloadUrl({}), '')
|
||||
assert.equal(resolveDownloadUrl({ freshDownloadUrl: '', downloadUrl: '' }), '')
|
||||
})
|
||||
|
||||
test('test_download_url_query_merge', () => {
|
||||
assert.equal(
|
||||
buildDownloadUrl('/api/x/download?token=abc', 7),
|
||||
'/api/x/download?token=abc&user_id=7',
|
||||
'已有 query 应合并追加 user_id',
|
||||
)
|
||||
})
|
||||
|
||||
test('test_resolve_download_null_safe', () => {
|
||||
assert.equal(resolveDownloadUrl(null as never), '')
|
||||
assert.equal(resolveDownloadUrl(undefined as never), '')
|
||||
})
|
||||
Reference in New Issue
Block a user