test: 整併測試至 app/test 並解決 AI 審查 findings #8

Closed
jiantw83 wants to merge 23 commits from test/consolidate-app-test-20260626-111823 into develop
Showing only changes of commit a18802d465 - Show all commits
+18
View File
1
@@ -77,6 +77,24 @@ test('fetchReleases 對無法解析的 JSON 回應拋錯', async () => {
);
});
test('fetchReleases 解析失敗時截斷過長的回應片段', async () => {
Ghost marked this conversation as resolved Outdated
Outdated
Review

嚴重等級🟡 警告
審查員:Maya
問題:新增的 JSON 解析錯誤處理邏輯中,對於回應內容片段(contentSnippet)的生成與截斷行為並未進行驗證。目前的測試僅檢查錯誤訊息是否包含特定字串,未確保截斷邏輯在邊界條件(如超長回應、包含特殊字元)下是否正確。
建議:建議在 app/test/releases.test.js 中增加針對無法解析 JSON 的測試案例,並具體斷言錯誤訊息中包含預期的片段內容,特別是需要測試超長字串截斷是否符合預期。

**嚴重等級**:🟡 警告 **審查員**:Maya **問題**:新增的 JSON 解析錯誤處理邏輯中,對於回應內容片段(contentSnippet)的生成與截斷行為並未進行驗證。目前的測試僅檢查錯誤訊息是否包含特定字串,未確保截斷邏輯在邊界條件(如超長回應、包含特殊字元)下是否正確。 **建議**:建議在 `app/test/releases.test.js` 中增加針對無法解析 JSON 的測試案例,並具體斷言錯誤訊息中包含預期的片段內容,特別是需要測試超長字串截斷是否符合預期。
const huge = `{${'x'.repeat(5000)}`;
await withFetch(
async () => jsonResponse(huge, true),
async () => {
await assert.rejects(
() => fetchReleases('https://gitea.example.com/api'),
(err) => {
const match = err.message.match(/片段:「([\s\S]*)」$/);
assert.ok(match, '錯誤訊息應包含回應內容片段');
assert.ok(Array.from(match[1]).length <= 200, '片段應截斷至 200 字元內');
return true;
},
);
},
);
});
test('fetchReleases 對非陣列回應拋錯', async () => {
await withFetch(
async () => jsonResponse({ message: 'oops' }),