关键改动: - 增加版本表单、发布校验和调研方向进度规则 - 扩展小宝预警已读状态、风险签名和今日证据 - 补充组长权限、加班查看范围、活动记录与相关测试 Co-Authored-By: Codex GPT-5 <codex@openai.com>
71 lines
2.3 KiB
TypeScript
71 lines
2.3 KiB
TypeScript
import assert from 'node:assert/strict';
|
|
import test from 'node:test';
|
|
import {
|
|
VERSION_DEVELOPMENT_TYPE_OPTIONS,
|
|
canSubmitNewVersionForm,
|
|
getRecommendedExpectedReleaseDate,
|
|
getVersionDevelopmentTypeOption,
|
|
} from './version-form';
|
|
|
|
test('canSubmitNewVersionForm requires expected release date', () => {
|
|
assert.equal(canSubmitNewVersionForm({
|
|
productId: 'prod-1',
|
|
projectId: 'proj-1',
|
|
versionNumber: '1.0',
|
|
developmentType: 'agile',
|
|
expectedReleaseDate: '',
|
|
submitting: false,
|
|
}), false);
|
|
|
|
assert.equal(canSubmitNewVersionForm({
|
|
productId: 'prod-1',
|
|
projectId: 'proj-1',
|
|
versionNumber: '1.0',
|
|
developmentType: 'agile',
|
|
expectedReleaseDate: '2026-07-15',
|
|
submitting: false,
|
|
}), true);
|
|
});
|
|
|
|
test('canSubmitNewVersionForm requires project development type', () => {
|
|
assert.equal(canSubmitNewVersionForm({
|
|
productId: 'prod-1',
|
|
projectId: 'proj-1',
|
|
versionNumber: '1.0',
|
|
developmentType: '',
|
|
expectedReleaseDate: '2026-07-15',
|
|
submitting: false,
|
|
}), false);
|
|
});
|
|
|
|
test('canSubmitNewVersionForm blocks duplicate submits', () => {
|
|
assert.equal(canSubmitNewVersionForm({
|
|
productId: 'prod-1',
|
|
projectId: 'proj-1',
|
|
versionNumber: '1.0',
|
|
developmentType: 'agile',
|
|
expectedReleaseDate: '2026-07-15',
|
|
submitting: true,
|
|
}), false);
|
|
});
|
|
|
|
test('version development type estimates include product design development and testing', () => {
|
|
const agile = getVersionDevelopmentTypeOption('agile');
|
|
|
|
assert.deepEqual(agile?.stages.map((stage) => stage.label), ['产品设计', '开发', '测试']);
|
|
assert.equal(agile?.totalWorkDays, 13);
|
|
assert.ok(VERSION_DEVELOPMENT_TYPE_OPTIONS.some((option) => option.key === 'waterfall'));
|
|
});
|
|
|
|
test('getRecommendedExpectedReleaseDate skips non-workdays from the stage total', () => {
|
|
assert.equal(getRecommendedExpectedReleaseDate('hotfix', new Date('2026-06-30T09:00:00')), '2026-07-02');
|
|
assert.equal(getRecommendedExpectedReleaseDate('agile', new Date('2026-06-30T09:00:00')), '2026-07-16');
|
|
});
|
|
|
|
test('getRecommendedExpectedReleaseDate excludes product design when it is already completed', () => {
|
|
assert.equal(
|
|
getRecommendedExpectedReleaseDate('agile', new Date('2026-06-30T09:00:00'), { productDesignCompleted: true }),
|
|
'2026-07-14',
|
|
);
|
|
});
|