Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/uploader/core/test/ |
Upload File : |
import Uploader from '../src/uploader'; import { UploaderEvent } from '../src/enums/uploader-event'; import createFileByType from './utils/create-file-by-type.es6'; import CustomUploadController from './utils/custom-upload-controller.es6'; import { BaseEvent } from 'main.core.events'; import { UploaderFile } from 'ui.uploader.core'; import Server from '../src/backend/server'; // import mock from 'xhr-mock'; describe('File Upload', () => { it('should invoke onComplete callback', (done) => { const progressValues = [19, 37, 56, 74, 93, 100]; const handleProgress = sinon.stub().callsFake((event: BaseEvent) => { const { progress } = event.getData(); assert.equal(progress, progressValues.shift(), 'progress values'); }); const uploader = new Uploader({ autoUpload: false, serverOptions: { chunkSize: 7, forceChunkSize: true, uploadControllerClass: CustomUploadController, }, events: { [UploaderEvent.FILE_ADD]: (event: BaseEvent) => { const file: UploaderFile = event.getData().file; file.upload({ onComplete: (event) => { assert.equal(file.isComplete(), true); done(); }, }); }, [UploaderEvent.FILE_UPLOAD_PROGRESS]: handleProgress, [UploaderEvent.FILE_ERROR]: (event) => { done(event.getData().error); }, [UploaderEvent.FILE_COMPLETE]: () => { try { assert.equal(handleProgress.callCount, 6, 'onProgress Count'); } catch (exception) { done(exception); } }, }, }); const file = new File(['<html><body><b>Hello</b></body></html>'], 'index2.html', { type: 'text/html' }); uploader.addFile(file); }); it('should invoke onError callback', (done) => { const progressValues = [19, 37, 56, 74, 93, 100]; const handleProgress = sinon.stub().callsFake((event: BaseEvent) => { const { progress } = event.getData(); assert.equal(progress, progressValues.shift(), 'progress values'); }); const uploader = new Uploader({ autoUpload: false, serverOptions: { chunkSize: 7, forceChunkSize: true, uploadControllerClass: CustomUploadController, uploadControllerOptions: { raiseError: true, raiseErrorStep: 5, }, }, events: { [UploaderEvent.FILE_ADD]: (event: BaseEvent) => { const file: UploaderFile = event.getData().file; file.upload({ onError: (event) => { assert.equal(file.isUploadFailed(), true); done(); }, }); }, [UploaderEvent.FILE_UPLOAD_PROGRESS]: handleProgress, [UploaderEvent.FILE_ERROR]: (event) => { const { error } = event.getData(); assert.equal(error.getCode(), 'CUSTOM_UPLOAD_ERROR'); }, [UploaderEvent.FILE_COMPLETE]: () => { try { assert.equal(handleProgress.callCount, 5, 'onProgress Count'); } catch (exception) { done(exception); } }, }, }); const file = new File(['<html><body><b>Hello</b></body></html>'], 'index2.html', { type: 'text/html' }); uploader.addFile(file); }); it('should invoke callbacks', (done) => { const progressValues = { 'hello.html': [19, 37, 56, 74, 93, 100], 'image.gif': [12, 23, 34, 45, 56, 67, 78, 89, 100, 100], }; const handleProgress = sinon.stub().callsFake((event: BaseEvent) => { const { file, progress } = event.getData(); assert.equal(progress, progressValues[file.getName()].shift(), 'progress values'); }); const handleHelloOnComplete = sinon.stub().callsFake((event: BaseEvent) => { const file: UploaderFile = event.getTarget(); assert.equal(file.isComplete(), true); }); const handleHelloOnError = sinon.stub().callsFake((event: BaseEvent) => { const file: UploaderFile = event.getTarget(); assert.equal(file.isUploadFailed(), true); }); const handleGifOnComplete = sinon.stub().callsFake((event: BaseEvent) => { const file: UploaderFile = event.getTarget(); assert.equal(file.isComplete(), true); }); const handleGifOnError = sinon.stub().callsFake((event: BaseEvent) => { const file: UploaderFile = event.getTarget(); assert.equal(file.isUploadFailed(), true); }); const uploader = new Uploader({ controller: 'fake.controller', autoUpload: false, multiple: true, events: { [UploaderEvent.FILE_ADD]: (event: BaseEvent) => { const file: UploaderFile = event.getData().file; if (file.getName() === 'hello.html') { file.setUploadController(new CustomUploadController( new Server({ chunkSize: 7, forceChunkSize: true, }), { raiseError: true, raiseErrorStep: 5, }, )); file.upload({ onComplete: handleHelloOnComplete, onError: handleHelloOnError, }); } else if (file.getName() === 'image.gif') { file.setUploadController(new CustomUploadController( new Server({ chunkSize: 50, forceChunkSize: true, }), )); setTimeout(() => { file.upload({ onComplete: handleGifOnComplete, onError: handleGifOnError, }); }, 100); } }, [UploaderEvent.FILE_UPLOAD_PROGRESS]: handleProgress, [UploaderEvent.FILE_ERROR]: (event) => { try { const { error } = event.getData(); assert.equal(error.getCode(), 'CUSTOM_UPLOAD_ERROR'); } catch (exception) { done(exception); } }, onUploadComplete: () => { try { setTimeout(() => { assert.equal(handleHelloOnComplete.callCount, 0); assert.equal(handleHelloOnError.callCount, 1); assert.equal(handleGifOnComplete.callCount, 1); assert.equal(handleGifOnError.callCount, 0); assert.equal(handleProgress.callCount, 15, 'onProgress Count'); uploader.getFile('gif').upload({ onComplete: handleGifOnComplete, onError: handleGifOnError, }); uploader.getFile('html').upload({ onComplete: handleHelloOnComplete, onError: handleHelloOnError, }); assert.equal(handleHelloOnComplete.callCount, 0); assert.equal(handleHelloOnError.callCount, 2); assert.equal(handleGifOnComplete.callCount, 2); assert.equal(handleGifOnError.callCount, 0); uploader.getFile('gif').upload({ onComplete: handleGifOnComplete, onError: handleGifOnError, }); uploader.getFile('html').upload({ onComplete: handleHelloOnComplete, onError: handleHelloOnError, }); assert.equal(handleHelloOnComplete.callCount, 0); assert.equal(handleHelloOnError.callCount, 3); assert.equal(handleGifOnComplete.callCount, 3); assert.equal(handleGifOnError.callCount, 0); done(); }, 0); // callbacks are invoked after onUploadComplete } catch (exception) { done(exception); } }, }, }); uploader.addFiles([ [new File(['<html><body><b>Hello</b></body></html>'], 'hello.html', { type: 'text/html' }), { id: 'html' }], [createFileByType('gif'), { id: 'gif' }], ]); }); });