feat(版本详情): 优化任务统计与测试轮次
This commit is contained in:
36
apps/web/lib/requirement-grouping.test.ts
Normal file
36
apps/web/lib/requirement-grouping.test.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
|
||||
import { orderByRequirementForGrouping } from './requirement-grouping';
|
||||
|
||||
interface GroupableItem {
|
||||
id: string;
|
||||
requirementId?: string;
|
||||
title?: string;
|
||||
}
|
||||
|
||||
test('keeps later-created dev tasks beside existing tasks of the same requirement before pagination', () => {
|
||||
const tasks: GroupableItem[] = [
|
||||
{ id: 'task-1', requirementId: 'req-1', title: 'existing req 1' },
|
||||
{ id: 'task-2', requirementId: 'req-2', title: 'existing req 2' },
|
||||
{ id: 'task-3', requirementId: 'req-3', title: 'existing req 3' },
|
||||
{ id: 'task-4', requirementId: 'req-1', title: 'new req 1' },
|
||||
];
|
||||
|
||||
const ordered = orderByRequirementForGrouping(tasks, ['req-1', 'req-2', 'req-3'], (task: GroupableItem) => task.requirementId);
|
||||
|
||||
assert.deepEqual(ordered.map((task: GroupableItem) => task.id), ['task-1', 'task-4', 'task-2', 'task-3']);
|
||||
});
|
||||
|
||||
test('keeps unlinked test cases in a stable trailing group', () => {
|
||||
const cases: GroupableItem[] = [
|
||||
{ id: 'tc-1', requirementId: 'req-2' },
|
||||
{ id: 'tc-2', requirementId: undefined },
|
||||
{ id: 'tc-3', requirementId: 'req-1' },
|
||||
{ id: 'tc-4', requirementId: undefined },
|
||||
];
|
||||
|
||||
const ordered = orderByRequirementForGrouping(cases, ['req-1', 'req-2'], (testCase: GroupableItem) => testCase.requirementId);
|
||||
|
||||
assert.deepEqual(ordered.map((testCase: GroupableItem) => testCase.id), ['tc-3', 'tc-1', 'tc-2', 'tc-4']);
|
||||
});
|
||||
Reference in New Issue
Block a user