const assert = require('node:assert/strict'); const test = require('node:test'); const GrowthPages = require('../public/js/growth-pages.js'); test('成长记录页只从 URL 读取真实家谱编号', () => { assert.equal(GrowthPages.getCurrentGenealogyId('?genealogyId=900001001'), '900001001'); assert.equal(GrowthPages.getCurrentGenealogyId(''), ''); }); test('成长记录写入只构造 Apifox GrowthRecordBody 字段', () => { assert.deepEqual( GrowthPages.buildGrowthRecordBody({ lineagePersonId: '2060000000000000001', recordType: 'birth', recordTitle: ' 出生记录 ', recordContent: ' 平安出生 ', recordDate: '2026-07-24', remindTime: '2026-07-24T09:00:00+08:00', mediaOssIds: '101,102', sortOrder: '3', status: 'enabled', content: '旧字段', personId: '旧字段' }), { lineagePersonId: '2060000000000000001', recordType: 'birth', recordTitle: '出生记录', recordContent: '平安出生', recordDate: '2026-07-24', remindTime: '2026-07-24T09:00:00+08:00', mediaOssIds: '101,102', sortOrder: 3, status: 'enabled' } ); }); test('成长记录校验标题、整数 ID、附件 OSS ID 和排序值', () => { assert.equal(GrowthPages.validateGrowthRecordBody({ recordTitle: '' }), '请填写记录标题'); assert.equal(GrowthPages.validateGrowthRecordBody({ recordTitle: '记录', lineagePersonId: 'A-1' }), '世系人物 ID 必须是整数'); assert.equal(GrowthPages.validateGrowthRecordBody({ recordTitle: '记录', mediaOssIds: '101, 102' }), '附件 OSS ID 请使用英文逗号分隔的正整数'); assert.equal(GrowthPages.validateGrowthRecordBody(GrowthPages.buildGrowthRecordBody({ recordTitle: '记录', sortOrder: '1.5' })), '排序值必须是安全整数'); assert.equal(GrowthPages.validateGrowthRecordBody({ recordTitle: '记录', mediaOssIds: '101,102', sortOrder: 1 }), ''); }); test('成长记录列表不猜测未展开的响应 DTO', () => { assert.deepEqual(GrowthPages.normalizeGrowthList([{ property1: 'value' }]), [{ property1: 'value' }]); assert.deepEqual(GrowthPages.normalizeGrowthList({ rows: [] }), []); });