| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- /**
- * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
- * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
- */
- /* globals window, setTimeout */
- import ClassicTestEditor from '@ckeditor/ckeditor5-core/tests/_utils/classictesteditor';
- import CloudServicesUploadAdapter from '../src/cloudservicesuploadadapter';
- import FileRepository from '@ckeditor/ckeditor5-upload/src/filerepository';
- import CloudServices from '@ckeditor/ckeditor5-cloud-services/src/cloudservices';
- import UploadGatewayMock from './_utils/uploadgatewaymock';
- import { createNativeFileMock } from '@ckeditor/ckeditor5-upload/tests/_utils/mocks';
- import TokenMock from '@ckeditor/ckeditor5-cloud-services/tests/_utils/tokenmock';
- // Store original uploader.
- const CSUploader = CloudServicesUploadAdapter._UploadGateway;
- const Token = CloudServices.Token;
- describe( 'CloudServicesUploadAdapter', () => {
- let div;
- before( () => {
- CloudServices.Token = TokenMock;
- CloudServicesUploadAdapter._UploadGateway = UploadGatewayMock;
- } );
- after( () => {
- CloudServices.Token = Token;
- CloudServicesUploadAdapter._UploadGateway = CSUploader;
- } );
- beforeEach( () => {
- div = window.document.createElement( 'div' );
- window.document.body.appendChild( div );
- } );
- afterEach( () => {
- window.document.body.removeChild( div );
- } );
- describe( 'init()', () => {
- it( 'should set loader', () => {
- UploadGatewayMock.lastToken = undefined;
- TokenMock.initialToken = 'token';
- return ClassicTestEditor
- .create( div, {
- plugins: [ CloudServicesUploadAdapter ],
- cloudServices: {
- tokenUrl: 'abc',
- uploadUrl: 'http://upload.mock.url/'
- }
- } )
- .then( editor => {
- expect( UploadGatewayMock.lastUploadUrl ).to.equal( 'http://upload.mock.url/' );
- return editor.destroy();
- } );
- } );
- it( 'should not set loader if there is no token', () => {
- UploadGatewayMock.lastToken = undefined;
- return ClassicTestEditor
- .create( div, {
- plugins: [ CloudServicesUploadAdapter ]
- } )
- .then( editor => {
- expect( UploadGatewayMock.lastToken ).to.be.undefined;
- return editor.destroy();
- } );
- } );
- } );
- describe( 'Adapter', () => {
- let editor, fileRepository, upload;
- beforeEach( () => {
- return ClassicTestEditor.create( div, {
- plugins: [ CloudServicesUploadAdapter ],
- cloudServices: {
- tokenUrl: 'abc',
- uploadUrl: 'http://upload.mock.url/'
- }
- } ).then( _editor => {
- editor = _editor;
- fileRepository = editor.plugins.get( FileRepository );
- upload = editor.plugins.get( CloudServicesUploadAdapter );
- } );
- } );
- afterEach( () => {
- return editor.destroy();
- } );
- describe( 'upload()', () => {
- it( 'should mock upload', done => {
- const loader = fileRepository.createLoader( createNativeFileMock() );
- loader.upload()
- .then( response => {
- expect( response.default ).to.equal( 'http://image.mock.url/' );
- done();
- } )
- .catch( err => done( err ) );
- // Wait for the promise from the mock.getUploader().
- setTimeout( () => {
- upload._uploadGateway.resolveLastUpload();
- } );
- } );
- it( 'should update the progress', done => {
- const loader = fileRepository.createLoader( createNativeFileMock() );
- loader.upload();
- // Wait for the `loader.file` promise.
- setTimeout( () => {
- upload._uploadGateway.lastFileUploader.fire( 'progress', { uploaded: 50, total: 100 } );
- expect( loader.uploaded ).to.equal( 50 );
- expect( loader.uploadTotal ).to.equal( 100 );
- done();
- } );
- } );
- } );
- describe( 'abort()', () => {
- it( 'should not call abort on the non-existing CSS uploader (`loader.file` not resolved)', () => {
- const loader = fileRepository.createLoader( createNativeFileMock() );
- expect( () => {
- loader.upload();
- loader.abort();
- } ).to.not.throw();
- expect( upload._uploadGateway.lastFileUploader ).to.be.undefined;
- } );
- it( 'should call abort on the CSS uploader (`loader.file` resolved)', done => {
- const loader = fileRepository.createLoader( createNativeFileMock() );
- loader.upload();
- // Wait for the `loader.file` promise.
- setTimeout( () => {
- loader.abort();
- expect( upload._uploadGateway.lastFileUploader.aborted ).to.be.true;
- done();
- } );
- } );
- } );
- } );
- } );
|