const assert = require('node:assert/strict'); const test = require('node:test'); const MemoPages = require('../public/js/memo-pages.js'); test('备忘录页只从 URL 读取真实家谱编号', () => { assert.equal(MemoPages.getCurrentGenealogyId('?genealogyId=900001001'), '900001001'); assert.equal(MemoPages.getCurrentGenealogyId(''), ''); }); test('备忘录写入只构造 Apifox 已核验请求体字段', () => { assert.deepEqual( MemoPages.buildMemoBody({ memoTitle: ' 祭祖提醒 ', memoContent: ' 准备供品 ', remindTime: '2026-07-24T09:00:00+08:00', completed: ' 0 ', mediaOssIds: '101,102', sortOrder: '3', status: ' enabled ', relativeName: '旧字段' }), { memoTitle: '祭祖提醒', memoContent: '准备供品', remindTime: '2026-07-24T09:00:00+08:00', completed: '0', mediaOssIds: '101,102', sortOrder: 3, status: 'enabled' } ); }); test('备忘录校验标题、附件 OSS ID 和排序值', () => { assert.equal(MemoPages.validateMemoBody({ memoTitle: '' }), '请填写备忘标题'); assert.equal(MemoPages.validateMemoBody({ memoTitle: '提醒', mediaOssIds: '101, 102' }), '附件 OSS ID 请使用英文逗号分隔的正整数'); assert.equal(MemoPages.validateMemoBody(MemoPages.buildMemoBody({ memoTitle: '提醒', sortOrder: '1.5' })), '排序值必须是安全整数'); assert.equal(MemoPages.validateMemoBody({ memoTitle: '提醒', mediaOssIds: '101,102', sortOrder: 1 }), ''); }); test('备忘录列表不猜测未展开的响应 DTO', () => { assert.deepEqual(MemoPages.normalizeMemoList([{ property1: 'value' }]), [{ property1: 'value' }]); assert.deepEqual(MemoPages.normalizeMemoList({ rows: [] }), []); });