Bladeren bron

Tests (image): Fixed a failing test by extracting common code.

Marek Lewandowski 5 jaren geleden
bovenliggende
commit
25aebdf923

+ 37 - 0
packages/ckeditor5-image/tests/imageresize/_utils/utils.js

@@ -0,0 +1,37 @@
+/**
+ * @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
+ * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
+ */
+
+import ImageLoadObserver from '../../../src/image/imageloadobserver';
+
+// A 100x50 black png image
+export const IMAGE_SRC_FIXTURE = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAyCAQAAAAAPLY1AAAAQklEQVR42u3PQREAAAgDoK1/' +
+		'aM3g14MGNJMXKiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiJysRFNMgH0RpujAAAAAElFTkSuQmCC';
+
+export async function waitForAllImagesLoaded( editor ) {
+	// Returns a promise that waits for all the images in editor to be loaded.
+	// This is needed because resizers are created only after images are loaded.
+	const root = editor.model.document.getRoot();
+	const editingView = editor.editing.view;
+	const images = new Set();
+
+	for ( const curModel of root.getChildren() ) {
+		if ( curModel.is( 'element', 'image' ) ) {
+			const imageView = editor.editing.mapper.toViewElement( curModel );
+			images.add( editingView.domConverter.viewToDom( imageView ).querySelector( 'img' ) );
+		}
+	}
+
+	editingView.addObserver( ImageLoadObserver );
+
+	return new Promise( resolve => {
+		editingView.document.on( 'imageLoaded', ( evt, domEvent ) => {
+			images.delete( domEvent.target );
+
+			if ( images.size === 0 ) {
+				resolve();
+			}
+		} );
+	} );
+}

+ 1 - 4
packages/ckeditor5-image/tests/imageresize/imageresizeediting.js

@@ -18,12 +18,9 @@ import ImageStyle from '../../src/imagestyle';
 import { setData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model';
 
 import { focusEditor } from '@ckeditor/ckeditor5-widget/tests/widgetresize/_utils/utils';
+import { IMAGE_SRC_FIXTURE } from './_utils/utils';
 
 describe( 'ImageResizeEditing', () => {
-	// 100x50 black png image
-	const IMAGE_SRC_FIXTURE = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAyCAQAAAAAPLY1AAAAQklEQVR42u3PQREAAAgDoK1/' +
-		'aM3g14MGNJMXKiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiJysRFNMgH0RpujAAAAAElFTkSuQmCC';
-
 	let editor, editorElement;
 
 	beforeEach( () => {

+ 1 - 32
packages/ckeditor5-image/tests/imageresize/imageresizehandles.js

@@ -30,13 +30,9 @@ import {
 } from '@ckeditor/ckeditor5-widget/tests/widgetresize/_utils/utils';
 
 import WidgetResize from '@ckeditor/ckeditor5-widget/src/widgetresize';
-import ImageLoadObserver from '../../src/image/imageloadobserver';
+import { IMAGE_SRC_FIXTURE, waitForAllImagesLoaded } from './_utils/utils';
 
 describe( 'ImageResizeHandles', () => {
-	// 100x50 black png image
-	const IMAGE_SRC_FIXTURE = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAyCAQAAAAAPLY1AAAAQklEQVR42u3PQREAAAgDoK1/' +
-		'aM3g14MGNJMXKiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiJysRFNMgH0RpujAAAAAElFTkSuQmCC';
-
 	let widget, editor, view, viewDocument, editorElement;
 
 	beforeEach( () => {
@@ -446,33 +442,6 @@ describe( 'ImageResizeHandles', () => {
 		} );
 	}
 
-	async function waitForAllImagesLoaded( editor ) {
-		// Returns a promise that waits for all the images in editor to be loaded.
-		// This is needed because resizers are created only after images are loaded.
-		const root = editor.model.document.getRoot();
-		const editingView = editor.editing.view;
-		const images = new Set();
-
-		for ( const curModel of root.getChildren() ) {
-			if ( curModel.is( 'element', 'image' ) ) {
-				const imageView = editor.editing.mapper.toViewElement( curModel );
-				images.add( editingView.domConverter.viewToDom( imageView ).querySelector( 'img' ) );
-			}
-		}
-
-		editingView.addObserver( ImageLoadObserver );
-
-		return new Promise( resolve => {
-			editingView.document.on( 'imageLoaded', ( evt, domEvent ) => {
-				images.delete( domEvent.target );
-
-				if ( images.size === 0 ) {
-					resolve();
-				}
-			} );
-		} );
-	}
-
 	async function setModelAndWaitForImages( editor, data ) {
 		setData( editor.model, data );
 		return waitForAllImagesLoaded( editor );

+ 4 - 1
packages/ckeditor5-widget/tests/widgetresize-integration.js

@@ -11,6 +11,7 @@ import { setData as setModelData } from '@ckeditor/ckeditor5-engine/src/dev-util
 import testUtils from '@ckeditor/ckeditor5-core/tests/_utils/utils';
 import Image from '@ckeditor/ckeditor5-image/src/image';
 import ImageResize from '@ckeditor/ckeditor5-image/src/imageresize';
+import { waitForAllImagesLoaded } from '@ckeditor/ckeditor5-image/tests/imageresize/_utils/utils';
 
 describe( 'WidgetResize - integration', () => {
 	let editor, model, view, viewDocument, editorElement;
@@ -36,11 +37,13 @@ describe( 'WidgetResize - integration', () => {
 		return editor.destroy();
 	} );
 
-	it( 'should not fire viewDocument#mousedown events after starting resizing', () => {
+	it( 'should not fire viewDocument#mousedown events after starting resizing', async () => {
 		const eventSpy = sinon.spy().named( 'ViewDocument#mousedown' );
 
 		setModelData( model, '[<image src="/assets/sample.png"></image>]' );
 
+		await waitForAllImagesLoaded( editor );
+
 		const resizeSquareUI = [ ...viewDocument.getRoot().getChild( 0 ).getChildren() ]
 			.find( element => element.hasClass( 'ck-widget__resizer' ) );