38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
|
|
import * as versionPlan from './version-plan';
|
|
import type { VersionPlan } from './version-plan';
|
|
|
|
function plan(patch: Partial<VersionPlan>): VersionPlan {
|
|
return {
|
|
id: 'plan-1',
|
|
versionId: 'version-1',
|
|
type: 'product',
|
|
title: '产品方案',
|
|
owner: 'PM',
|
|
startTime: '2026-06-25T09:00',
|
|
endTime: '2026-06-25T18:00',
|
|
status: 'pending',
|
|
createdAt: '2026-06-25',
|
|
addedBy: 'PM',
|
|
...patch,
|
|
};
|
|
}
|
|
|
|
test('sortPlansNewestFirst places newly created plans before older plans', () => {
|
|
const sortPlansNewestFirst = (versionPlan as any).sortPlansNewestFirst as undefined | ((plans: VersionPlan[]) => VersionPlan[]);
|
|
assert.equal(typeof sortPlansNewestFirst, 'function');
|
|
|
|
const plans = [
|
|
plan({ id: 'plan-100', createdAt: '2026-06-26' }),
|
|
plan({ id: 'manual-old', createdAt: '2026-06-25' }),
|
|
plan({ id: 'plan-300', createdAt: '2026-06-26' }),
|
|
];
|
|
|
|
const sorted = (sortPlansNewestFirst as (items: VersionPlan[]) => VersionPlan[])(plans);
|
|
|
|
assert.deepEqual(sorted.map((item) => item.id), ['plan-300', 'plan-100', 'manual-old']);
|
|
assert.deepEqual(plans.map((item) => item.id), ['plan-100', 'manual-old', 'plan-300']);
|
|
});
|