37 lines
1.4 KiB
TypeScript
37 lines
1.4 KiB
TypeScript
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']);
|
|
});
|