50 lines
2.5 KiB
JavaScript
50 lines
2.5 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { readFileSync } = require('node:fs');
|
|
const { resolve } = require('node:path');
|
|
const Feed = require('../public/js/feed-pages');
|
|
const Article = require('../public/js/article-pages');
|
|
const Video = require('../public/js/video-pages');
|
|
const Ceremony = require('../public/js/ceremony-admin-pages');
|
|
const Editor = require('../public/js/attachment-editor');
|
|
const Growth = require('../public/js/growth-pages');
|
|
const Memo = require('../public/js/memo-pages');
|
|
const Relative = require('../public/js/relative-pages');
|
|
|
|
test('附件编辑页在上传组件之前加载真实 MD5 依赖', () => {
|
|
for (const page of ['feed', 'article', 'album', 'video', 'gift', 'growth', 'memo', 'relative']) {
|
|
const html = readFileSync(resolve(__dirname, '../profile-' + page + '-edit.html'), 'utf8');
|
|
const scripts = Array.from(html.matchAll(/<script\s+src="([^"]+)"/g), match => match[1]);
|
|
const md5Index = scripts.indexOf('public/js/md5.js');
|
|
const uploadIndex = scripts.indexOf('public/js/upload-pages.js');
|
|
assert.ok(md5Index >= 0 && md5Index < uploadIndex, page + ' 缺少上传所需的 MD5 依赖');
|
|
}
|
|
});
|
|
|
|
test('删除全部动态附件时明确提交空列表', () => {
|
|
assert.equal(Feed.buildFeedBody({ feedContent: '保留文字', mediaOssIds: '' }).mediaOssIds, '');
|
|
});
|
|
|
|
test('编辑附件保留精确的长 ID,拒绝缺失或已丢失精度的 ID', () => {
|
|
const file = { ossId: '2062179707935264771', fileName: '照片.png', mediaType: 'image/png' };
|
|
assert.equal(Editor.normalizeFiles([file, file]).length, 1);
|
|
assert.equal(Editor.normalizeFiles([file])[0].ossId, file.ossId);
|
|
assert.throws(() => Editor.normalizeFiles([{ fileName: '照片.png' }]));
|
|
assert.throws(() => Editor.normalizeFiles([{ ossId: 2062179707935264771 }]));
|
|
});
|
|
|
|
test('多附件表单清空后显式发送空值', () => {
|
|
for (const build of [Growth.buildGrowthRecordBody, Memo.buildMemoBody, Relative.buildRelativeRecordBody]) {
|
|
assert.equal(build({ mediaOssIds: '' }).mediaOssIds, '');
|
|
assert.equal(build({ mediaOssIds: '2062179707935264771' }).mediaOssIds, '2062179707935264771');
|
|
}
|
|
});
|
|
|
|
test('封面更新区分未操作、清空和替换', () => {
|
|
for (const build of [Article.buildArticleBody, Video.buildVideoBody, Ceremony.buildCeremonyBody]) {
|
|
assert.equal(build({}).coverOssId, undefined);
|
|
assert.equal(build({ coverOssId: null }).coverOssId, null);
|
|
assert.equal(build({ coverOssId: '2062179707935264771' }).coverOssId, '2062179707935264771');
|
|
}
|
|
});
|