完成10%
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
const assert = require('node:assert/strict');
|
||||
const fs = require('node:fs');
|
||||
const path = require('node:path');
|
||||
const test = require('node:test');
|
||||
|
||||
const LineagePages = require('../public/js/lineage-pages.js');
|
||||
|
||||
test('世系页只从 URL 读取真实家谱编号', () => {
|
||||
assert.equal(LineagePages.getCurrentGenealogyId('?genealogyId=900001001'), '900001001');
|
||||
assert.equal(LineagePages.getCurrentGenealogyId(''), '');
|
||||
});
|
||||
|
||||
test('世系人物表单只构造 Apifox LineagePersonBody 字段', () => {
|
||||
assert.deepEqual(
|
||||
LineagePages.buildLineagePersonBody({
|
||||
name: '李明',
|
||||
sex: '0',
|
||||
generation: '3',
|
||||
generationName: '德',
|
||||
personNo: 'P202607090001',
|
||||
aliasName: '明远',
|
||||
birthDate: '1990-01-01',
|
||||
sortOrder: '1',
|
||||
relationName: '妻',
|
||||
biography: '人物简介',
|
||||
personName: '旧字段',
|
||||
generationNo: 4,
|
||||
introduction: '旧字段'
|
||||
}),
|
||||
{
|
||||
name: '李明',
|
||||
sex: '0',
|
||||
generation: 3,
|
||||
generationName: '德',
|
||||
personNo: 'P202607090001',
|
||||
aliasName: '明远',
|
||||
birthDate: '1990-01-01',
|
||||
sortOrder: 1,
|
||||
relationName: '妻',
|
||||
biography: '人物简介'
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
test('世系人物要求安全的 ID、姓名和有效世代值', () => {
|
||||
assert.deepEqual(
|
||||
LineagePages.normalizeLineagePerson({
|
||||
personId: '2060000000000000000',
|
||||
name: '李明',
|
||||
generation: 3,
|
||||
generationName: '德',
|
||||
sex: '0'
|
||||
}),
|
||||
{
|
||||
personId: '2060000000000000000',
|
||||
name: '李明',
|
||||
sex: '0',
|
||||
generationName: '德',
|
||||
generation: 3
|
||||
}
|
||||
);
|
||||
assert.equal(LineagePages.normalizeLineagePerson({ personId: Number('2060000000000000000'), name: '李明' }), null);
|
||||
assert.equal(LineagePages.validateLineagePersonBody({ name: '' }), '请填写成员姓名');
|
||||
assert.equal(LineagePages.validateLineagePersonBody(LineagePages.buildLineagePersonBody({ name: '李明', generation: '1.5' })), '世代序号必须是整数');
|
||||
assert.equal(LineagePages.validateLineagePersonBody(LineagePages.buildLineagePersonBody({ name: '李明', sortOrder: '1.5' })), '排序值必须是整数');
|
||||
});
|
||||
|
||||
test('世系关系模式只使用 PC 已定义的四种新增关系', () => {
|
||||
assert.equal(LineagePages.relationLabel('parents'), '父母');
|
||||
assert.equal(LineagePages.relationLabel('spouses'), '配偶');
|
||||
assert.equal(LineagePages.relationLabel('children'), '子女');
|
||||
assert.equal(LineagePages.relationLabel('siblings'), '兄弟姐妹');
|
||||
assert.equal(LineagePages.relationLabel('remove'), '');
|
||||
});
|
||||
|
||||
test('世系页按 Apifox 关键词范围搜索并提供分页入口', () => {
|
||||
const page = fs.readFileSync(path.join(__dirname, '..', 'profile-tree.html'), 'utf8');
|
||||
|
||||
assert.match(page, /placeholder="输入姓名、别名或人物编号搜索"/);
|
||||
assert.match(page, /data-lineage-pagination/);
|
||||
assert.match(page, /data-lineage-page-action="previous"/);
|
||||
assert.match(page, /data-lineage-page-action="next"/);
|
||||
});
|
||||
|
||||
test('世系管理的 403 不会被当作登录失效', () => {
|
||||
assert.equal(LineagePages.isForbidden({ status: 403 }), true);
|
||||
assert.equal(LineagePages.shouldRedirectToLogin({ getToken() { return 'token'; } }, { status: 403 }), false);
|
||||
});
|
||||
Reference in New Issue
Block a user