Browse Source

Tests: changes in widget utils and engine.

Szymon Kupś 8 years ago
parent
commit
e93947b7e6

+ 26 - 1
packages/ckeditor5-image/tests/widget/utils.js

@@ -4,7 +4,7 @@
  */
 
 import ViewElement from '@ckeditor/ckeditor5-engine/src/view/element';
-import { widgetize, isWidget, WIDGET_CLASS_NAME } from '../../src/widget/utils';
+import { widgetize, isWidget, WIDGET_CLASS_NAME, setFakeSelectionLabel, getFakeSelectionLabel } from '../../src/widget/utils';
 
 describe( 'widget utils', () => {
 	let element;
@@ -38,4 +38,29 @@ describe( 'widget utils', () => {
 			expect( isWidget( new ViewElement( 'p' ) ) ).to.be.false;
 		} );
 	} );
+
+	describe( 'fake selection label utils', () => {
+		it( 'should allow to set fake selection for element', () => {
+			const element = new ViewElement( 'p' );
+			setFakeSelectionLabel( element, 'foo bar baz' );
+
+			expect( getFakeSelectionLabel( element ) ).to.equal( 'foo bar baz' );
+		} );
+
+		it( 'should return undefined for elements without fake selection label', () => {
+			const element = new ViewElement( 'div' );
+
+			expect( getFakeSelectionLabel( element ) ).to.be.undefined;
+		} );
+
+		it( 'should allow to use a function as label creator', () => {
+			const element = new ViewElement( 'p' );
+			let caption = 'foo';
+			setFakeSelectionLabel( element, () => caption );
+
+			expect( getFakeSelectionLabel( element ) ).to.equal( 'foo' );
+			caption = 'bar';
+			expect( getFakeSelectionLabel( element ) ).to.equal( 'bar' );
+		} );
+	} );
 } );

+ 19 - 2
packages/ckeditor5-image/tests/widget/widgetengine.js

@@ -9,7 +9,7 @@ import buildModelConverter from '@ckeditor/ckeditor5-engine/src/conversion/build
 import { setData as setModelData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model';
 import { getData as getViewData } from '@ckeditor/ckeditor5-engine/src/dev-utils/view';
 import ViewContainer from '@ckeditor/ckeditor5-engine/src/view/containerelement';
-import { widgetize } from '../../src/widget/utils';
+import { widgetize, setFakeSelectionLabel } from '../../src/widget/utils';
 
 describe( 'WidgetEngine', () => {
 	let editor, document, viewDocument;
@@ -26,7 +26,12 @@ describe( 'WidgetEngine', () => {
 
 				buildModelConverter().for( editor.editing.modelToView )
 					.fromElement( 'widget' )
-					.toElement( () => widgetize( new ViewContainer( 'div' ) ) );
+					.toElement( () => {
+						const element = widgetize( new ViewContainer( 'div' ) );
+						setFakeSelectionLabel( element, 'fake selection' );
+
+						return element;
+					} );
 			} );
 	} );
 
@@ -43,6 +48,18 @@ describe( 'WidgetEngine', () => {
 		expect( viewDocument.selection.isFake ).to.be.true;
 	} );
 
+	it( 'should use element\'s fake selection label if one is provided', () => {
+		setModelData( document, '[<widget>foo bar</widget>]' );
+
+		expect( viewDocument.selection.fakeSelectionLabel ).to.equal( 'fake selection' );
+	} );
+
+	it( 'fake selection should be empty if widget is not selected', () => {
+		setModelData( document, '<widget>foo bar</widget>' );
+
+		expect( viewDocument.selection.fakeSelectionLabel ).to.equal( '' );
+	} );
+
 	it( 'should toggle selected class', () => {
 		setModelData( document, '[<widget>foo</widget>]' );