| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- /**
- * @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 */
- import FileReader from '../src/filereader';
- import testUtils from '@ckeditor/ckeditor5-core/tests/_utils/utils';
- import { NativeFileReaderMock, createNativeFileMock } from './_utils/mocks';
- describe( 'FileReader', () => {
- let reader, fileMock, nativeReaderMock;
- testUtils.createSinonSandbox();
- beforeEach( () => {
- testUtils.sinon.stub( window, 'FileReader' ).callsFake( () => {
- nativeReaderMock = new NativeFileReaderMock();
- return nativeReaderMock;
- } );
- fileMock = createNativeFileMock();
- reader = new FileReader();
- } );
- it( 'should initialize loaded property', () => {
- expect( reader.loaded ).to.equal( 0 );
- } );
- it( 'should update loaded property', () => {
- nativeReaderMock.mockProgress( 10 );
- expect( reader.loaded ).to.equal( 10 );
- nativeReaderMock.mockProgress( 20 );
- expect( reader.loaded ).to.equal( 20 );
- nativeReaderMock.mockProgress( 55 );
- expect( reader.loaded ).to.equal( 55 );
- } );
- describe( 'data', () => {
- it( 'should be undefined if file was not loaded', () => {
- expect( reader.data ).to.be.undefined;
- } );
- it( 'should equal to loaded file data', () => {
- const promise = reader.read( fileMock )
- .then( () => {
- expect( reader.data ).to.equal( 'File contents.' );
- } );
- nativeReaderMock.mockSuccess( 'File contents.' );
- return promise;
- } );
- } );
- describe( 'read()', () => {
- it( 'should return a promise', () => {
- expect( reader.read( fileMock ) ).to.be.instanceOf( Promise );
- } );
- it( 'should resolve on loading complete', () => {
- const promise = reader.read( fileMock )
- .then( result => {
- expect( result ).to.equal( 'File contents.' );
- } );
- nativeReaderMock.mockSuccess( 'File contents.' );
- return promise;
- } );
- it( 'should reject on loading error', () => {
- const promise = reader.read( fileMock )
- .then( () => {
- throw new Error( 'Reader should not resolve.' );
- }, status => {
- expect( status ).to.equal( 'error' );
- expect( reader.error ).to.equal( 'Error during file reading.' );
- } );
- nativeReaderMock.mockError( 'Error during file reading.' );
- return promise;
- } );
- it( 'should reject promise on loading abort', () => {
- const promise = reader.read( fileMock )
- .then( () => {
- throw new Error( 'Reader should not resolve.' );
- }, status => {
- expect( status ).to.equal( 'aborted' );
- } );
- nativeReaderMock.abort();
- return promise;
- } );
- } );
- describe( 'abort()', () => {
- it( 'should allow to abort reading', () => {
- const promise = reader.read( fileMock )
- .then( () => {
- throw new Error( 'Reader should not resolve.' );
- }, status => {
- expect( status ).to.equal( 'aborted' );
- } );
- reader.abort();
- return promise;
- } );
- } );
- } );
|