修改问题

This commit is contained in:
rain
2026-07-11 11:03:45 +08:00
parent edc0a58a54
commit db397a7917
38 changed files with 1082 additions and 7994 deletions
+114 -2
View File
@@ -1,7 +1,7 @@
const assert = require('assert');
const UploadPages = require('../public/js/upload-pages.js');
function run() {
async function run() {
assert.deepStrictEqual(UploadPages.normalizeUploadResult({
ossId: 2060001,
fileName: 'cover.jpg',
@@ -27,7 +27,119 @@ function run() {
assert.strictEqual(UploadPages.mergeOssIds('2060001', '2060001', true), '2060001');
assert.strictEqual(UploadPages.buildUploadStatus('cover.jpg', '2060001'), 'cover.jpg 上传完成,OSS ID2060001');
assert.strictEqual(UploadPages.getUploadMode(4194304), 'single');
assert.strictEqual(UploadPages.getUploadMode(4194305), 'resumable');
assert.deepStrictEqual(UploadPages.buildResumableInitBody({
name: 'avatar.jpg',
size: 5242880,
type: 'image/jpeg'
}, 'file-md5', 4194304, {
bizType: 'avatar',
usageScene: 'profile_avatar'
}), {
fileName: 'avatar.jpg',
fileSize: 5242880,
fileMd5: 'file-md5',
contentType: 'image/jpeg',
chunkSize: 4194304,
totalChunks: 2,
bizType: 'avatar',
usageScene: 'profile_avatar'
});
const calls = [];
const file = {
name: 'avatar.jpg',
size: 8,
type: 'image/jpeg',
slice(start, end) {
return { start, end, size: end - start };
}
};
const api = {
initResumableUpload(body) {
calls.push({ type: 'init', body });
return Promise.resolve({ uploadId: 'upload-1' });
},
uploadChunk(body) {
calls.push({ type: 'chunk', body });
return Promise.resolve();
},
completeResumableUpload(body) {
calls.push({ type: 'complete', body });
return Promise.resolve({ ossId: 2060001 });
}
};
const result = await UploadPages.uploadResumable(api, file, {
chunkSize: 4,
bizType: 'avatar',
usageScene: 'profile_avatar',
hashBlob(blob) {
return Promise.resolve(blob === file ? 'file-md5' : `chunk-${blob.start}`);
}
});
assert.deepStrictEqual(result, { ossId: 2060001 });
assert.deepStrictEqual(calls, [
{
type: 'init',
body: {
fileName: 'avatar.jpg',
fileSize: 8,
fileMd5: 'file-md5',
contentType: 'image/jpeg',
chunkSize: 4,
totalChunks: 2,
bizType: 'avatar',
usageScene: 'profile_avatar'
}
},
{
type: 'chunk',
body: {
uploadId: 'upload-1',
chunkIndex: 0,
chunkMd5: 'chunk-0',
file: { start: 0, end: 4, size: 4 }
}
},
{
type: 'chunk',
body: {
uploadId: 'upload-1',
chunkIndex: 1,
chunkMd5: 'chunk-4',
file: { start: 4, end: 8, size: 4 }
}
},
{
type: 'complete',
body: {
uploadId: 'upload-1',
fileMd5: 'file-md5',
fileSize: 8
}
}
]);
let singleUploadCalled = false;
const singleResult = await UploadPages.uploadFileForPage({
uploadFile(value) {
singleUploadCalled = value.size === 4;
return Promise.resolve({ ossId: 2060002 });
}
}, { size: 4 }, {
mode: 'auto',
chunkSize: 4
});
assert.strictEqual(singleUploadCalled, true);
assert.deepStrictEqual(singleResult, { ossId: 2060002 });
console.log('upload-pages tests passed');
}
run();
run().catch((error) => {
console.error(error);
process.exitCode = 1;
});