fix(data): 清理旧数据并保护服务端写入
This commit is contained in:
@@ -4,6 +4,7 @@ import assert from 'node:assert/strict';
|
||||
import type { Requirement } from './requirement';
|
||||
import {
|
||||
buildRequirementScopeTree,
|
||||
filterRequirementScopeTreeByKeyword,
|
||||
filterRequirementsByScope,
|
||||
type RequirementScopeSelection,
|
||||
} from './requirement-scope';
|
||||
@@ -84,3 +85,21 @@ test('builds product and project tree counts from requirements', () => {
|
||||
assert.equal(tree[0].projects[1].count.total, 1);
|
||||
assert.equal(tree[1].count.total, 1);
|
||||
});
|
||||
|
||||
test('filters requirement scope tree by product or project keyword', () => {
|
||||
const tree = buildRequirementScopeTree(overview, [
|
||||
req('req-1', 'product-1', 'project-1', 'pending_review'),
|
||||
req('req-2', 'product-1', 'project-2', 'developing'),
|
||||
req('req-3', 'product-2', 'project-3', 'closed'),
|
||||
]);
|
||||
|
||||
const productMatched = filterRequirementScopeTreeByKeyword(tree, 'crm');
|
||||
assert.deepEqual(productMatched.map((product) => product.id), ['product-1']);
|
||||
assert.deepEqual(productMatched[0].projects.map((project) => project.id), ['project-1', 'project-2']);
|
||||
|
||||
const projectMatched = filterRequirementScopeTreeByKeyword(tree, 'admin');
|
||||
assert.deepEqual(projectMatched.map((product) => product.id), ['product-1']);
|
||||
assert.deepEqual(projectMatched[0].projects.map((project) => project.id), ['project-2']);
|
||||
|
||||
assert.equal(filterRequirementScopeTreeByKeyword(tree, 'missing').length, 0);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user