Skip to content
This repository was archived by the owner on Jun 26, 2020. It is now read-only.

Commit 14b738b

Browse files
committed
Fix: Upload command should not crash when upload adapter is not specified (instead, FileRepository logs an error). Closes #59.
1 parent 17f1574 commit 14b738b

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

src/imageuploadcommand.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,15 @@ export default class ImageUploadCommand extends Command {
4141
const fileRepository = editor.plugins.get( FileRepository );
4242

4343
doc.enqueueChanges( () => {
44+
const loader = fileRepository.createLoader( file );
45+
46+
// Do not throw when upload adapter is not set. FileRepository will log an error anyway.
47+
if ( !loader ) {
48+
return;
49+
}
50+
4451
const imageElement = new ModelElement( 'image', {
45-
uploadId: fileRepository.createLoader( file ).id
52+
uploadId: loader.id
4653
} );
4754

4855
let insertAtSelection;

src/imageuploadengine.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export default class ImageUploadEngine extends Plugin {
6464
}
6565
} );
6666

67-
// Prevents from browser redirecting to drag-end-dropped image.
67+
// Prevents from browser redirecting to the dropped image.
6868
editor.editing.view.on( 'dragover', ( evt, data ) => {
6969
data.preventDefault();
7070
} );

tests/imageuploadcommand.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,15 @@ import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
1717
import buildModelConverter from '@ckeditor/ckeditor5-engine/src/conversion/buildmodelconverter';
1818
import ModelPosition from '@ckeditor/ckeditor5-engine/src/model/position';
1919

20+
import log from '@ckeditor/ckeditor5-utils/src/log';
21+
22+
import testUtils from '@ckeditor/ckeditor5-core/tests/_utils/utils';
23+
2024
describe( 'ImageUploadCommand', () => {
2125
let editor, command, doc, fileRepository;
2226

27+
testUtils.createSinonSandbox();
28+
2329
class UploadAdapterPluginMock extends Plugin {
2430
init() {
2531
fileRepository = this.editor.plugins.get( FileRepository );
@@ -105,5 +111,22 @@ describe( 'ImageUploadCommand', () => {
105111

106112
expect( getModelData( doc ) ).to.equal( '<other>[]</other>' );
107113
} );
114+
115+
it( 'should not throw when upload adapter is not set (FileRepository will log an error anyway)', () => {
116+
const file = createNativeFileMock();
117+
118+
fileRepository.createAdapter = undefined;
119+
120+
const logStub = testUtils.sinon.stub( log, 'error' );
121+
122+
setModelData( doc, '<paragraph>fo[]o</paragraph>' );
123+
124+
expect( () => {
125+
command.execute( { file } );
126+
} ).to.not.throw();
127+
128+
expect( getModelData( doc ) ).to.equal( '<paragraph>fo[]o</paragraph>' );
129+
expect( logStub.calledOnce ).to.be.true;
130+
} );
108131
} );
109132
} );

0 commit comments

Comments
 (0)