修改功能

This commit is contained in:
2026-08-29 19:06:07 +08:00
parent f94c652c7c
commit aaed0584b1
142 changed files with 6176 additions and 869 deletions
@@ -0,0 +1,66 @@
const assert = require('node:assert/strict');
const test = require('node:test');
const FeedPages = require('../public/js/feed-pages.js');
const LineagePages = require('../public/js/lineage-pages.js');
const GrowthPages = require('../public/js/growth-pages.js');
const RelativePages = require('../public/js/relative-pages.js');
const MemoPages = require('../public/js/memo-pages.js');
const MeritPages = require('../public/js/merit-pages.js');
const CeremonyPages = require('../public/js/ceremony-admin-pages.js');
const PromotionPages = require('../public/js/app-promotion-pages.js');
function imageFile(name) {
return {
fileId: '901',
ossId: '902',
fileName: name,
mediaType: 'image/jpeg',
accessUrl: `https://files.example/${name}`
};
}
test('动态和世系人物使用 mediaFiles/avatarFile', () => {
const feed = FeedPages.normalizeFeed({ feedId: '1', feedContent: '祭祖留影', mediaFiles: [imageFile('feed.jpg')] });
const person = LineagePages.normalizeLineagePerson({ personId: '2', name: '彭公', avatarFile: imageFile('person.jpg') });
const tree = LineagePages.renderLineageTreeHtml([{ personId: '2', name: '彭公', avatarFile: imageFile('person.jpg') }]);
assert.equal(feed.mediaFiles[0].accessUrl, 'https://files.example/feed.jpg');
assert.equal(person.avatarFile.accessUrl, 'https://files.example/person.jpg');
assert.match(tree, /<img[^>]+person\.jpg/);
assert.doesNotMatch(tree, /902/);
});
test('成长、亲友、备忘和功德详情展示 mediaFiles', () => {
const cases = [
[GrowthPages, 'normalizeGrowthRecord', 'renderGrowthDetail', { recordId: '1', genealogyId: '2', recordTitle: '入学', status: '0' }],
[RelativePages, 'normalizeRelativeRecord', 'renderRelativeDetail', { relativeId: '1', genealogyId: '2', relativeName: '张姨', status: '0' }],
[MemoPages, 'normalizeMemo', 'renderMemoDetail', { memoId: '1', genealogyId: '2', memoTitle: '祭祖用品', completed: '0', status: '0' }],
[MeritPages, 'normalizeMeritRecord', 'renderMeritDetail', { meritId: '1', genealogyId: '2', donorName: '彭先生', meritType: 'repair', meritTitle: '修缮祠堂', status: '0' }]
];
cases.forEach(([module, normalizeName, renderName, fixture], index) => {
const record = module[normalizeName](Object.assign({}, fixture, { mediaFiles: [imageFile(`record-${index}.jpg`)] }));
const html = module[renderName](record);
assert.match(html, new RegExp(`<img[^>]+record-${index}\\.jpg`));
assert.doesNotMatch(html, /902/);
});
});
test('祭祀活动与应用推广展示 coverFile', () => {
const ceremony = CeremonyPages.normalizeCeremony({
ceremonyId: '1', genealogyId: '2', ceremonyType: '祭祖', ceremonyTitle: '清明祭祖', status: '0',
coverFile: imageFile('ceremony.jpg')
});
const promotion = PromotionPages.normalizePromotion({
promotionId: '3', promotionTitle: '家谱移动端', promotionDesc: '随时查看家谱', status: '0',
coverFile: imageFile('promotion.jpg')
});
assert.match(CeremonyPages.renderCeremonyDetail(ceremony), /<img[^>]+ceremony\.jpg/);
assert.equal(promotion.coverFile.accessUrl, 'https://files.example/promotion.jpg');
assert.match(PromotionPages.renderPromotionList([{
promotionId: '3', promotionTitle: '家谱移动端', promotionDesc: '随时查看家谱', status: '0',
coverFile: imageFile('promotion.jpg')
}]), /<img[^>]+promotion\.jpg/);
});