test(calculate-version): 新增 version/config/releases 單元測試
以 node:test 為 app/ 模組補上 24 個單元測試,涵蓋版本計算、設定載入與 release 分頁抓取。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
bd6b6017ab
commit
923c94d198
@@ -0,0 +1,61 @@
|
||||
'use strict';
|
||||
|
||||
const test = require('node:test');
|
||||
const assert = require('node:assert/strict');
|
||||
|
||||
const {
|
||||
isUnset,
|
||||
requireEnv,
|
||||
normalizeBetaFlag,
|
||||
loadConfig,
|
||||
} = require('../app/config');
|
||||
|
||||
test('isUnset 將 undefined/空字串/null 字面值視為未設定', () => {
|
||||
assert.equal(isUnset(undefined), true);
|
||||
assert.equal(isUnset(''), true);
|
||||
assert.equal(isUnset('null'), true);
|
||||
assert.equal(isUnset('value'), false);
|
||||
});
|
||||
|
||||
test('requireEnv 未設定時拋錯,有值時回傳原值', () => {
|
||||
assert.throws(() => requireEnv('FOO', ''), /FOO 未設定/);
|
||||
assert.equal(requireEnv('FOO', 'bar'), 'bar');
|
||||
});
|
||||
|
||||
test('normalizeBetaFlag 僅 "true" 視為啟用', () => {
|
||||
assert.equal(normalizeBetaFlag('true'), true);
|
||||
assert.equal(normalizeBetaFlag('false'), false);
|
||||
assert.equal(normalizeBetaFlag(undefined), false);
|
||||
assert.equal(normalizeBetaFlag('TRUE'), false);
|
||||
});
|
||||
|
||||
test('loadConfig 解析完整設定', () => {
|
||||
const config = loadConfig({
|
||||
GITEA_SERVER_URL: 'https://gitea.example.com',
|
||||
GITEA_REPOSITORY: 'owner/repo',
|
||||
GITEA_TOKEN: 'secret',
|
||||
IS_BETA: 'true',
|
||||
});
|
||||
|
||||
assert.deepEqual(config, {
|
||||
serverUrl: 'https://gitea.example.com',
|
||||
repository: 'owner/repo',
|
||||
token: 'secret',
|
||||
isBeta: true,
|
||||
});
|
||||
});
|
||||
|
||||
test('loadConfig 缺少 token 視為匿名(null)', () => {
|
||||
const config = loadConfig({
|
||||
GITEA_SERVER_URL: 'https://gitea.example.com',
|
||||
GITEA_REPOSITORY: 'owner/repo',
|
||||
GITEA_TOKEN: 'null',
|
||||
});
|
||||
|
||||
assert.equal(config.token, null);
|
||||
assert.equal(config.isBeta, false);
|
||||
});
|
||||
|
||||
test('loadConfig 缺少必填項目時拋錯', () => {
|
||||
assert.throws(() => loadConfig({ GITEA_REPOSITORY: 'owner/repo' }), /GITEA_SERVER_URL 未設定/);
|
||||
});
|
||||
Reference in New Issue
Block a user