@@ -22,6 +22,7 @@ import { setData as setModelData, getData as getModelData } from '@ckeditor/cked
2222import { getData as getViewData } from '@ckeditor/ckeditor5-engine/src/dev-utils/view' ;
2323import { eventNameToConsumableType } from '@ckeditor/ckeditor5-engine/src/conversion/model-to-view-converters' ;
2424import Range from '@ckeditor/ckeditor5-engine/src/model/range' ;
25+ import Position from '@ckeditor/ckeditor5-engine/src/model/position' ;
2526
2627import testUtils from '@ckeditor/ckeditor5-core/tests/_utils/utils' ;
2728import Notification from '@ckeditor/ckeditor5-ui/src/notification/notification' ;
@@ -214,7 +215,7 @@ describe( 'ImageUploadEngine', () => {
214215 setModelData ( model , '<paragraph>{}foo bar</paragraph>' ) ;
215216 editor . execute ( 'imageUpload' , { file } ) ;
216217
217- doc . once ( 'changesDone ' , ( ) => {
218+ model . once ( '_change ' , ( ) => {
218219 expect ( getViewData ( viewDocument ) ) . to . equal (
219220 '[<figure class="ck-widget image" contenteditable="false">' +
220221 `<img src="${ base64Sample } "></img>` +
@@ -234,8 +235,8 @@ describe( 'ImageUploadEngine', () => {
234235 setModelData ( model , '<paragraph>{}foo bar</paragraph>' ) ;
235236 editor . execute ( 'imageUpload' , { file } ) ;
236237
237- doc . once ( 'changesDone ' , ( ) => {
238- doc . once ( 'changesDone ' , ( ) => {
238+ model . document . once ( 'change ' , ( ) => {
239+ model . document . once ( 'change ' , ( ) => {
239240 expect ( getViewData ( viewDocument ) ) . to . equal (
240241 '[<figure class="ck-widget image" contenteditable="false"><img src="image.png"></img></figure>]<p>foo bar</p>'
241242 ) ;
@@ -309,8 +310,8 @@ describe( 'ImageUploadEngine', () => {
309310
310311 editor . execute ( 'imageUpload' , { file } ) ;
311312
312- doc . once ( 'changesDone ' , ( ) => {
313- doc . once ( 'changesDone ' , ( ) => {
313+ model . document . once ( 'change ' , ( ) => {
314+ model . document . once ( 'change ' , ( ) => {
314315 expect ( getModelData ( model ) ) . to . equal ( '<paragraph>[]foo bar</paragraph>' ) ;
315316 sinon . assert . calledOnce ( spy ) ;
316317
@@ -325,6 +326,7 @@ describe( 'ImageUploadEngine', () => {
325326 const file = createNativeFileMock ( ) ;
326327 setModelData ( model , '<paragraph>{}foo bar</paragraph>' ) ;
327328 editor . execute ( 'imageUpload' , { file } ) ;
329+
328330 const abortSpy = testUtils . sinon . spy ( loader , 'abort' ) ;
329331
330332 expect ( loader . status ) . to . equal ( 'reading' ) ;
@@ -339,6 +341,24 @@ describe( 'ImageUploadEngine', () => {
339341 sinon . assert . calledOnce ( abortSpy ) ;
340342 } ) ;
341343
344+ it ( 'should not abort and not restart upload when image is moved' , ( ) => {
345+ const file = createNativeFileMock ( ) ;
346+ setModelData ( model , '<paragraph>{}foo bar</paragraph>' ) ;
347+ editor . execute ( 'imageUpload' , { file } ) ;
348+
349+ const abortSpy = testUtils . sinon . spy ( loader , 'abort' ) ;
350+ const loadSpy = testUtils . sinon . spy ( loader , 'read' ) ;
351+
352+ const image = doc . getRoot ( ) . getChild ( 0 ) ;
353+
354+ model . change ( writer => {
355+ writer . move ( Range . createOn ( image ) , Position . createAt ( doc . getRoot ( ) , 2 ) ) ;
356+ } ) ;
357+
358+ expect ( abortSpy . called ) . to . be . false ;
359+ expect ( loadSpy . called ) . to . be . false ;
360+ } ) ;
361+
342362 it ( 'image should be permanently removed if it is removed by user during upload' , done => {
343363 const file = createNativeFileMock ( ) ;
344364 const notification = editor . plugins . get ( Notification ) ;
@@ -351,13 +371,13 @@ describe( 'ImageUploadEngine', () => {
351371
352372 editor . execute ( 'imageUpload' , { file } ) ;
353373
354- doc . once ( 'changesDone ' , ( ) => {
374+ model . document . once ( 'change ' , ( ) => {
355375 // This is called after "manual" remove.
356- doc . once ( 'changesDone ' , ( ) => {
376+ model . document . once ( 'change ' , ( ) => {
357377 // This is called after attributes are removed.
358378 let undone = false ;
359379
360- doc . once ( 'changesDone ' , ( ) => {
380+ model . document . once ( 'change ' , ( ) => {
361381 if ( ! undone ) {
362382 undone = true ;
363383
@@ -376,6 +396,7 @@ describe( 'ImageUploadEngine', () => {
376396 } ) ;
377397
378398 const image = doc . getRoot ( ) . getChild ( 0 ) ;
399+
379400 model . change ( writer => {
380401 writer . remove ( image ) ;
381402 } ) ;
@@ -386,8 +407,8 @@ describe( 'ImageUploadEngine', () => {
386407 setModelData ( model , '<paragraph>{}foo bar</paragraph>' ) ;
387408 editor . execute ( 'imageUpload' , { file } ) ;
388409
389- doc . once ( 'changesDone ' , ( ) => {
390- doc . once ( 'changesDone ' , ( ) => {
410+ model . document . once ( 'change ' , ( ) => {
411+ model . document . once ( 'change ' , ( ) => {
391412 expect ( getViewData ( viewDocument ) ) . to . equal (
392413 '[<figure class="ck-widget image" contenteditable="false">' +
393414 '<img sizes="100vw" src="image.png" srcset="image-500.png 500w, image-800.png 800w" width="800"></img>' +
0 commit comments