Files
ftb-project-management/apps/web/lib/domain-contract.test.ts
2026-07-08 11:53:07 +08:00

49 lines
1.8 KiB
TypeScript

import assert from 'node:assert/strict';
import test from 'node:test';
import {
BugStatus,
DevTaskStatus,
RequirementStatus,
TestCaseStatus,
VersionPlanStatus,
VersionStatus,
} from '@ftb/shared';
import type { BugStatus as WebBugStatus } from './bug';
import type { DevTaskStatus as WebDevTaskStatus } from './dev-task';
import type { RequirementStatus as WebRequirementStatus } from './requirement';
import type { TestCaseStatus as WebTestCaseStatus } from './test-case';
import type { PlanTaskStatus } from './version-plan';
import type { VersionStatus as WebVersionStatus } from './version-status';
test('shared requirement statuses match the current requirement workflow', () => {
const shared = Object.values(RequirementStatus);
const expected: WebRequirementStatus[] = [
'pending_review',
'adopted',
'rejected',
'planned',
'developing',
'testing',
'released',
'closed',
];
assert.deepEqual(shared, expected);
});
test('shared execution entity statuses match frontend domain workflows', () => {
const planStatuses: PlanTaskStatus[] = ['pending', 'in_progress', 'completed'];
const devTaskStatuses: WebDevTaskStatus[] = ['todo', 'in_progress', 'testing', 'submitted'];
const testCaseStatuses: WebTestCaseStatus[] = ['pending', 'running', 'passed', 'failed', 'blocked'];
const bugStatuses: WebBugStatus[] = ['open', 'fixing', 'fixed', 'verifying', 'closed', 'rejected'];
const versionStatuses: WebVersionStatus[] = ['developing', 'planned', 'released', 'paused', 'closed'];
assert.deepEqual(Object.values(VersionPlanStatus), planStatuses);
assert.deepEqual(Object.values(DevTaskStatus), devTaskStatuses);
assert.deepEqual(Object.values(TestCaseStatus), testCaseStatuses);
assert.deepEqual(Object.values(BugStatus), bugStatuses);
assert.deepEqual(Object.values(VersionStatus), versionStatuses);
});