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 { 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); });