89 lines
3.2 KiB
JavaScript
89 lines
3.2 KiB
JavaScript
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);
|
|
});
|