54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
|
|
import { filterDecomposeResultByTarget } from './ai-decompose-target';
|
|
import type { AgentDecomposeResult } from '@ftb/shared';
|
|
|
|
function makeResult(): AgentDecomposeResult {
|
|
return {
|
|
report: { matched: [], reqOnly: [], prototypeOnly: [], ambiguous: [] },
|
|
devTaskDrafts: [
|
|
{
|
|
title: '实现登录表单',
|
|
categoryCode: 'frontend_development',
|
|
priority: 'P2',
|
|
aiEstimateHours: 0.5,
|
|
references: [{ type: 'requirement', id: 'REQ001', label: 'REQ001 登录' }],
|
|
},
|
|
],
|
|
testCaseDrafts: [
|
|
{
|
|
title: '验证登录成功',
|
|
description: '输入正确账号密码后进入首页',
|
|
categoryCode: 'test_functional',
|
|
priority: 'P2',
|
|
aiEstimateHours: 0.2,
|
|
references: [{ type: 'requirement', id: 'REQ001', label: 'REQ001 登录' }],
|
|
},
|
|
],
|
|
};
|
|
}
|
|
|
|
test('keeps only dev task drafts for dev task decomposition target', () => {
|
|
const original = makeResult();
|
|
const filtered = filterDecomposeResultByTarget(original, 'dev_tasks');
|
|
|
|
assert.equal(filtered.devTaskDrafts.length, 1);
|
|
assert.equal(filtered.testCaseDrafts.length, 0);
|
|
assert.equal(original.testCaseDrafts.length, 1);
|
|
});
|
|
|
|
test('keeps only test case drafts for test case decomposition target', () => {
|
|
const filtered = filterDecomposeResultByTarget(makeResult(), 'test_cases');
|
|
|
|
assert.equal(filtered.devTaskDrafts.length, 0);
|
|
assert.equal(filtered.testCaseDrafts.length, 1);
|
|
});
|
|
|
|
test('keeps both draft groups for all decomposition target', () => {
|
|
const filtered = filterDecomposeResultByTarget(makeResult(), 'all');
|
|
|
|
assert.equal(filtered.devTaskDrafts.length, 1);
|
|
assert.equal(filtered.testCaseDrafts.length, 1);
|
|
});
|