修改问题
This commit is contained in:
+114
-2
@@ -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 ID:2060001');
|
||||
|
||||
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;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user