import { test } from 'node:test' import assert from 'node:assert/strict' import { TASK_PROGRESS_TIMEOUT_MS, getTaskProgressTimeoutMs, configureTaskPolling, resetTaskPollingConfig, } from '../src/shared/task-progress-config.ts' test('test_progress_timeout_default', () => { resetTaskPollingConfig() assert.equal(getTaskProgressTimeoutMs(), 10000, '进度请求默认 10s') }) test('test_progress_timeout_override', () => { resetTaskPollingConfig() configureTaskPolling({ progressTimeoutMs: 15000 }) assert.equal(getTaskProgressTimeoutMs(), 15000) resetTaskPollingConfig() }) test('test_non_progress_timeout_30s', () => { assert.equal(TASK_PROGRESS_TIMEOUT_MS, 10000, '进度超时常量应为 10s') // 非进度请求默认超时由 http.ts 的 30000 保持,此处断言常量存在 assert.ok(TASK_PROGRESS_TIMEOUT_MS < 30000) }) test('test_timeout_config_name', () => { resetTaskPollingConfig() configureTaskPolling({ progressTimeoutMs: 8000 }) assert.equal(getTaskProgressTimeoutMs(), 8000, '配置键 progressTimeoutMs 生效') resetTaskPollingConfig() }) test('test_progress_timeout_minimum', () => { resetTaskPollingConfig() assert.throws( () => configureTaskPolling({ progressTimeoutMs: -1 }), /超时.*正数|不能为负|progressTimeoutMs/, '非法配置应抛错并保持原值', ) assert.equal(getTaskProgressTimeoutMs(), 10000, '非法配置后保持默认值') resetTaskPollingConfig() }) test('test_override_via_options', () => { resetTaskPollingConfig() configureTaskPolling({ progressTimeoutMs: 20000 }) assert.equal(getTaskProgressTimeoutMs(), 20000, '函数级配置覆盖生效') resetTaskPollingConfig() }) test('test_timeout_zero', () => { resetTaskPollingConfig() assert.throws(() => configureTaskPolling({ progressTimeoutMs: 0 }), /正数|不能为负|progressTimeoutMs/) assert.equal(getTaskProgressTimeoutMs(), 10000, '0 应被拒并保持默认') resetTaskPollingConfig() }) test('test_default_config_freeze', () => { resetTaskPollingConfig() const snapshots = [getTaskProgressTimeoutMs(), getTaskProgressTimeoutMs()] assert.deepEqual(snapshots, [10000, 10000], '默认值快照稳定') })