test(ai-review): 補 comment 只標註新問題與對話收斂 duplicate 分支測試
This commit is contained in:
@@ -171,6 +171,23 @@ describe('reconcileConversations', () => {
|
||||
assert.deepEqual(result.carriedFindings.map(f => f.suggestion), ['fix two']);
|
||||
});
|
||||
|
||||
it('resolves (not carries) an unresolved conversation already present in old findings', async () => {
|
||||
const resolvedIds = [];
|
||||
const deps = baseDeps();
|
||||
deps.judge = async (items) => items.map(it => ({ idx: it.idx, resolved: false })); // 全部未修復
|
||||
deps.resolveComment = async (id) => { resolvedIds.push(id); return { ok: true }; };
|
||||
// b.js 的問題已存在於舊問題(檔案+建議簽章相符,行號不同不影響)→ 應解決對話、不加回
|
||||
deps.oldFindings = [{ location: 'b.js:99', suggestion: 'fix two' }];
|
||||
|
||||
const result = await reconcileConversations(deps);
|
||||
|
||||
assert.deepEqual(resolvedIds, [2]); // 僅 b.js(id=2) 因已存在舊問題而被 resolve
|
||||
assert.equal(result.duplicateCount, 1);
|
||||
assert.equal(result.resolvedCount, 0);
|
||||
assert.deepEqual(result.carriedFindings.map(f => f.suggestion), ['fix one']); // a.js 不在舊問題 → 加回
|
||||
assert.deepEqual(result.resolvedFindings, []); // duplicate 不從舊問題移除
|
||||
});
|
||||
|
||||
it('carries the conversation back when the resolve API call fails', async () => {
|
||||
const deps = baseDeps();
|
||||
deps.judge = async (items) => items.map(it => ({ idx: it.idx, resolved: true }));
|
||||
|
||||
Reference in New Issue
Block a user