Files
calculate-version/app/test/config.test.js
T
Jeffery 0977e66ff4
CI / AI Code Review (pull_request) Successful in 38s
test(calculate-version): 整併單元測試至 app/test 並移除無法被執行的重複測試目錄
app/package.json 的 npm test(node --test,cwd 為 app/)只會探索 app/test/,
repo 根目錄另一份 test/ 中的 main 整合測試(index.test.js)因此從未被執行。
將 config/index/releases/version 收斂至 app/test/(修正 require 路徑),
保留 output 測試,移除重複且無法執行的 repo 根 test/。現 app/test/ 共 34 筆測試皆可執行。
2026-06-26 11:18:53 +08:00

76 lines
2.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
'use strict';
const test = require('node:test');
const assert = require('node:assert/strict');
const {
isUnset,
requireEnv,
normalizeBetaFlag,
loadConfig,
} = require('../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 未設定/);
});
test('loadConfig 於 GITEA_SERVER_URL 非合法 URL 時拋錯', () => {
assert.throws(() => loadConfig({
GITEA_SERVER_URL: 'not-a-url',
GITEA_REPOSITORY: 'owner/repo',
}), /GITEA_SERVER_URL 格式錯誤/);
});
test('loadConfig 於 GITEA_SERVER_URL 使用非 http(s) 協定時拋錯', () => {
assert.throws(() => loadConfig({
GITEA_SERVER_URL: 'ftp://gitea.example.com',
GITEA_REPOSITORY: 'owner/repo',
}), /必須使用 http 或 https/);
});