67 lines
3.3 KiB
JavaScript
67 lines
3.3 KiB
JavaScript
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/);
|
|
});
|