完成10%

This commit is contained in:
rain
2026-07-24 18:11:16 +08:00
parent 8716a68fdb
commit 8870136d1b
33 changed files with 3853 additions and 336 deletions
+88
View File
@@ -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);
});