等待后端更新接口
This commit is contained in:
@@ -70,6 +70,7 @@ test('成员修改只构造后端可更新字段并收紧角色枚举', () => {
|
||||
roleType: 'editor',
|
||||
lineagePersonId: '2060000000000000004'
|
||||
});
|
||||
assert.deepEqual(buildMemberUpdateBody({ relationName: ' ' }), {});
|
||||
assert.equal(validateMemberUpdateBody(buildMemberUpdateBody({ memberName: '名'.repeat(51) })), '成员名称不能超过 50 个字符');
|
||||
assert.equal(validateMemberUpdateBody(buildMemberUpdateBody({ relationName: '关系'.repeat(51) })), '关系名称不能超过 100 个字符');
|
||||
assert.throws(
|
||||
@@ -96,8 +97,10 @@ test('成员管理动作遵守谱主和管理员的后端权限边界', () => {
|
||||
assert.equal(canRemoveMember('admin', 'admin'), false);
|
||||
assert.equal(canLeaveGenealogy('owner'), false);
|
||||
assert.equal(canLeaveGenealogy('member'), true);
|
||||
assert.equal(canTransferOwner('owner'), true);
|
||||
assert.equal(canTransferOwner('admin'), false);
|
||||
assert.equal(canTransferOwner('owner', true), true);
|
||||
assert.equal(canTransferOwner('owner', false), false);
|
||||
assert.equal(canTransferOwner('owner', 'true'), false);
|
||||
assert.equal(canTransferOwner('admin', true), false);
|
||||
});
|
||||
|
||||
test('谱主转移只使用成员列表中的真实目标 memberId', () => {
|
||||
@@ -160,17 +163,32 @@ test('成员列表展示转义内容并隐藏手机号与内部 ID', () => {
|
||||
|
||||
test('家族管理页开放成员维护、退出和谱主转移且不允许手填 ID', () => {
|
||||
const page = fs.readFileSync(path.join(__dirname, '..', 'profile-family-admin.html'), 'utf8');
|
||||
const script = fs.readFileSync(modulePath, 'utf8');
|
||||
|
||||
assert.doesNotMatch(page, /data-feature-status="pending"|pending-pages\.js/);
|
||||
assert.match(page, /public\/js\/member-admin-pages\.js/);
|
||||
assert.match(page, /data-member-list/);
|
||||
assert.match(page, /data-member-form/);
|
||||
assert.match(page, /data-member-form novalidate/);
|
||||
assert.match(page, /name="memberName"/);
|
||||
assert.match(page, /name="relationName"/);
|
||||
assert.match(page, /name="roleType"/);
|
||||
assert.match(page, /select[^>]+name="lineagePersonId"|name="lineagePersonId"[^>]+select/);
|
||||
assert.match(page, /data-member-leave/);
|
||||
assert.match(page, /data-member-action-status/);
|
||||
assert.match(page, /select[^>]+name="targetMemberId"|name="targetMemberId"[^>]+select/);
|
||||
assert.match(page, /data-owner-transfer-form novalidate/);
|
||||
assert.match(page, /name="targetMemberId"[^>]+required/);
|
||||
assert.match(page, /data-member-form-status/);
|
||||
assert.match(page, /空值清除语义/);
|
||||
assert.match(page, /data-owner-transfer-status/);
|
||||
assert.doesNotMatch(page, /name="(?:memberId|appUserId)"|type="(?:text|number)"[^>]+name="(?:lineagePersonId|targetMemberId)"/);
|
||||
assert.doesNotMatch(page, /href="profile-data\.html"[^>]*>\s*添加成员/);
|
||||
assert.match(script, /function setMemberListState\(type, message\)/);
|
||||
assert.match(script, /root\.ProfileUI && root\.ProfileUI\.setApiState/);
|
||||
assert.match(script, /setMemberListState\('loading', '正在加载成员…'\)/);
|
||||
assert.match(script, /setStatus\('\[data-member-form-status\]', '正在保存成员…', 'loading'\)/);
|
||||
assert.match(script, /setStatus\('\[data-owner-transfer-status\]', '正在转让谱主…', 'loading'\)/);
|
||||
assert.match(script, /setStatus\('\[data-member-action-status\]', '正在移出成员…', 'loading'\)/);
|
||||
assert.match(script, /canTransferOwner\(actorRole, managementAccess\)/);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user