feat(需求池): 调整需求池布局与详情展示
This commit is contained in:
39
apps/web/lib/linkage-engine.test.ts
Normal file
39
apps/web/lib/linkage-engine.test.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
|
||||
import type { DevTask } from './dev-task';
|
||||
import { canEditRequirement } from './linkage-engine';
|
||||
import * as linkageEngine from './linkage-engine';
|
||||
|
||||
function task(patch: Partial<DevTask> = {}): DevTask {
|
||||
return {
|
||||
id: 'task-1',
|
||||
taskNo: 'DEV-001',
|
||||
requirementId: 'req-1',
|
||||
title: 'Implement requirement',
|
||||
categoryId: 'cat-frontend',
|
||||
assigneeId: 'Alice',
|
||||
priority: 'P2',
|
||||
expectedStartAt: '2026-06-25T01:00:00.000Z',
|
||||
expectedEndAt: '2026-06-25T02:00:00.000Z',
|
||||
status: 'todo',
|
||||
isBlocked: false,
|
||||
createdBy: 'PM',
|
||||
createdAt: '2026-06-25T00:00:00.000Z',
|
||||
updatedAt: '2026-06-25T00:00:00.000Z',
|
||||
...patch,
|
||||
};
|
||||
}
|
||||
|
||||
test('completed requirement development status cannot be edited', () => {
|
||||
assert.equal(canEditRequirement('req-1', [task({ status: 'submitted' })]), false);
|
||||
});
|
||||
|
||||
test('active or completed requirement development status cannot be closed', () => {
|
||||
const canCloseRequirement = (linkageEngine as any).canCloseRequirement;
|
||||
|
||||
assert.equal(typeof canCloseRequirement, 'function');
|
||||
assert.equal(canCloseRequirement('req-1', [task({ status: 'in_progress' })]), false);
|
||||
assert.equal(canCloseRequirement('req-1', [task({ status: 'testing' })]), false);
|
||||
assert.equal(canCloseRequirement('req-1', [task({ status: 'submitted' })]), false);
|
||||
});
|
||||
Reference in New Issue
Block a user