feat(version): 优化参与人员添加体验
This commit is contained in:
65
apps/web/lib/version-members.test.ts
Normal file
65
apps/web/lib/version-members.test.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
|
||||
import { addVersionMembers, filterVersionMemberCandidates, inferVersionMemberRole } from './version-members';
|
||||
|
||||
test('filterVersionMemberCandidates searches people and excludes already added members', () => {
|
||||
const result = filterVersionMemberCandidates(
|
||||
[
|
||||
{ id: 'm-1', name: 'Alice' },
|
||||
{ id: 'm-2', name: 'Bob' },
|
||||
{ id: 'm-3', name: 'Alicia' },
|
||||
],
|
||||
[{ name: 'Alice', role: 'frontend' }],
|
||||
'ali',
|
||||
);
|
||||
|
||||
assert.deepEqual(result.map((member) => member.name), ['Alicia']);
|
||||
});
|
||||
|
||||
test('addVersionMembers appends selected people once with the default version role', () => {
|
||||
const result = addVersionMembers(
|
||||
[{ name: 'Alice', role: 'product' }],
|
||||
['Bob', 'Alicia', 'Alice'],
|
||||
[
|
||||
{ id: 'm-1', name: 'Alice' },
|
||||
{ id: 'm-2', name: 'Bob' },
|
||||
{ id: 'm-3', name: 'Alicia' },
|
||||
],
|
||||
);
|
||||
|
||||
assert.deepEqual(result, [
|
||||
{ name: 'Alice', role: 'product' },
|
||||
{ name: 'Bob', role: 'frontend' },
|
||||
{ name: 'Alicia', role: 'frontend' },
|
||||
]);
|
||||
});
|
||||
|
||||
test('inferVersionMemberRole maps department names to project roles', () => {
|
||||
assert.equal(inferVersionMemberRole({ id: 'm-1', name: 'Alice', departmentName: '产品部' }), 'product');
|
||||
assert.equal(inferVersionMemberRole({ id: 'm-2', name: 'Bob', departmentName: '设计部' }), 'ui');
|
||||
assert.equal(inferVersionMemberRole({ id: 'm-3', name: 'Cathy', departmentName: '前端组' }), 'frontend');
|
||||
assert.equal(inferVersionMemberRole({ id: 'm-4', name: 'David', departmentName: '后端组' }), 'backend');
|
||||
assert.equal(inferVersionMemberRole({ id: 'm-5', name: 'Eve', departmentName: '测试组' }), 'testing');
|
||||
assert.equal(inferVersionMemberRole({ id: 'm-6', name: 'Frank', departmentName: '运营部' }), 'frontend');
|
||||
});
|
||||
|
||||
test('addVersionMembers infers each selected person role from department', () => {
|
||||
const result = addVersionMembers(
|
||||
[],
|
||||
['Product', 'Designer', 'Backend', 'QA'],
|
||||
[
|
||||
{ id: 'm-1', name: 'Product', departmentName: '产品部' },
|
||||
{ id: 'm-2', name: 'Designer', departmentName: 'UI设计部' },
|
||||
{ id: 'm-3', name: 'Backend', departmentName: '后端组' },
|
||||
{ id: 'm-4', name: 'QA', departmentName: '质量测试部' },
|
||||
],
|
||||
);
|
||||
|
||||
assert.deepEqual(result, [
|
||||
{ name: 'Product', role: 'product' },
|
||||
{ name: 'Designer', role: 'ui' },
|
||||
{ name: 'Backend', role: 'backend' },
|
||||
{ name: 'QA', role: 'testing' },
|
||||
]);
|
||||
});
|
||||
Reference in New Issue
Block a user