const assert = require('node:assert/strict'); const test = require('node:test'); const RelativePages = require('../public/js/relative-pages.js'); test('亲友往来页只从 URL 读取真实家谱编号', () => { assert.equal(RelativePages.getCurrentGenealogyId('?genealogyId=900001001'), '900001001'); assert.equal(RelativePages.getCurrentGenealogyId(''), ''); }); test('亲友往来写入只构造 Apifox RelativeRecordBody 字段', () => { assert.deepEqual(RelativePages.buildRelativeRecordBody({ relativeName: ' 王叔 ', relationName: '长辈', eventName: '寿宴', eventTime: '2026-07-24T09:00:00+08:00', giftAmount: '500.5', recordContent: ' 出席 ', mediaOssIds: '101,102', sortOrder: '3', status: 'enabled', memoTitle: '旧字段' }), { relativeName: '王叔', relationName: '长辈', eventName: '寿宴', eventTime: '2026-07-24T09:00:00+08:00', giftAmount: 500.5, recordContent: '出席', mediaOssIds: '101,102', status: 'enabled', sortOrder: 3 }); }); test('亲友往来校验必填姓名、金额、附件和排序值', () => { assert.equal(RelativePages.validateRelativeRecordBody({ relativeName: '' }), '请填写亲友姓名'); assert.equal(RelativePages.validateRelativeRecordBody(RelativePages.buildRelativeRecordBody({ relativeName: '王叔', giftAmount: '一百' })), '礼金金额必须是数字'); assert.equal(RelativePages.validateRelativeRecordBody({ relativeName: '王叔', mediaOssIds: '101, 102' }), '附件 OSS ID 请使用英文逗号分隔的正整数'); assert.equal(RelativePages.validateRelativeRecordBody(RelativePages.buildRelativeRecordBody({ relativeName: '王叔', sortOrder: '1.5' })), '排序值必须是安全整数'); });