瀏覽代碼

Table keyboard handling tests updated to properly test integration with widgets.

Kuba Niegowski 5 年之前
父節點
當前提交
f2180675ac
共有 1 個文件被更改,包括 57 次插入48 次删除
  1. 57 48
      packages/ckeditor5-table/tests/tablekeyboard.js

+ 57 - 48
packages/ckeditor5-table/tests/tablekeyboard.js

@@ -14,12 +14,11 @@ import VirtualTestEditor from '@ckeditor/ckeditor5-core/tests/_utils/virtualtest
 import Paragraph from '@ckeditor/ckeditor5-paragraph/src/paragraph';
 import ImageEditing from '@ckeditor/ckeditor5-image/src/image/imageediting';
 import MediaEmbedEditing from '@ckeditor/ckeditor5-media-embed/src/mediaembedediting';
-import ImageCaptionEditing from '@ckeditor/ckeditor5-image/src/imagecaption/imagecaptionediting';
-import HorizontalLineEditing from '@ckeditor/ckeditor5-horizontal-line/src/horizontallineediting';
 import ClassicTestEditor from '@ckeditor/ckeditor5-core/tests/_utils/classictesteditor';
 import Image from '@ckeditor/ckeditor5-image/src/image';
 import ImageCaption from '@ckeditor/ckeditor5-image/src/imagecaption';
 import HorizontalLine from '@ckeditor/ckeditor5-horizontal-line/src/horizontalline';
+import MediaEmbed from '@ckeditor/ckeditor5-media-embed/src/mediaembed';
 
 import { getCode } from '@ckeditor/ckeditor5-utils/src/keyboard';
 import { getData as getModelData, setData as setModelData } from '@ckeditor/ckeditor5-engine/src/dev-utils/model';
@@ -28,30 +27,29 @@ import global from '@ckeditor/ckeditor5-utils/src/dom/global';
 import env from '@ckeditor/ckeditor5-utils/src/env';
 
 describe( 'TableKeyboard', () => {
-	let editor, model, modelRoot, tableSelection, tableKeyboard, selection;
+	let editor, model, modelRoot, tableSelection, tableKeyboard, selection, editorElement;
 
 	const imageUrl = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAUCAQAAADRyVAeAAAAKklEQVR42u3PAQ0AAAwCI' +
 		'O0f+u/hoAHNZUJFRERERERERERERERERLYiD9N4FAFj2iK6AAAAAElFTkSuQmCC';
 
-	beforeEach( () => {
-		return VirtualTestEditor
-			.create( {
-				plugins: [ TableEditing, TableKeyboard, TableSelection, Paragraph, ImageEditing, ImageCaptionEditing, MediaEmbedEditing,
-					HorizontalLineEditing ]
-			} )
-			.then( newEditor => {
-				editor = newEditor;
-
-				model = editor.model;
-				selection = model.document.selection;
-				modelRoot = model.document.getRoot();
-				tableSelection = editor.plugins.get( TableSelection );
-				tableKeyboard = editor.plugins.get( TableKeyboard );
-			} );
+	beforeEach( async () => {
+		editorElement = global.document.createElement( 'div' );
+		global.document.body.appendChild( editorElement );
+
+		editor = await ClassicTestEditor.create( editorElement, {
+			plugins: [ Table, Paragraph, Image, ImageCaption, HorizontalLine, MediaEmbed ]
+		} );
+
+		model = editor.model;
+		selection = model.document.selection;
+		modelRoot = model.document.getRoot();
+		tableSelection = editor.plugins.get( TableSelection );
+		tableKeyboard = editor.plugins.get( TableKeyboard );
 	} );
 
-	afterEach( () => {
-		editor.destroy();
+	afterEach( async () => {
+		editorElement.remove();
+		await editor.destroy();
 	} );
 
 	it( 'should have pluginName', () => {
@@ -2053,10 +2051,12 @@ describe( 'TableKeyboard', () => {
 					} );
 
 					it( 'should navigate to the cell on the left', () => {
+						// Twice because of fake caret next to widget.
+						editor.editing.view.document.fire( 'keydown', leftArrowDomEvtDataStub );
 						editor.editing.view.document.fire( 'keydown', leftArrowDomEvtDataStub );
 
-						sinon.assert.calledOnce( leftArrowDomEvtDataStub.preventDefault );
-						sinon.assert.calledOnce( leftArrowDomEvtDataStub.stopPropagation );
+						sinon.assert.called( leftArrowDomEvtDataStub.preventDefault );
+						sinon.assert.called( leftArrowDomEvtDataStub.stopPropagation );
 
 						assertEqualMarkup( getModelData( model ), modelTable( [
 							[ '00', '01', '02' ],
@@ -2066,10 +2066,12 @@ describe( 'TableKeyboard', () => {
 					} );
 
 					it( 'should navigate to the cell on the right', () => {
+						// Twice because of fake caret next to widget.
+						editor.editing.view.document.fire( 'keydown', rightArrowDomEvtDataStub );
 						editor.editing.view.document.fire( 'keydown', rightArrowDomEvtDataStub );
 
-						sinon.assert.calledOnce( rightArrowDomEvtDataStub.preventDefault );
-						sinon.assert.calledOnce( rightArrowDomEvtDataStub.stopPropagation );
+						sinon.assert.called( rightArrowDomEvtDataStub.preventDefault );
+						sinon.assert.called( rightArrowDomEvtDataStub.stopPropagation );
 
 						assertEqualMarkup( getModelData( model ), modelTable( [
 							[ '00', '01', '02' ],
@@ -2079,10 +2081,12 @@ describe( 'TableKeyboard', () => {
 					} );
 
 					it( 'should navigate to the cell above', () => {
+						// Twice because of fake caret next to widget.
+						editor.editing.view.document.fire( 'keydown', upArrowDomEvtDataStub );
 						editor.editing.view.document.fire( 'keydown', upArrowDomEvtDataStub );
 
-						sinon.assert.calledOnce( upArrowDomEvtDataStub.preventDefault );
-						sinon.assert.calledOnce( upArrowDomEvtDataStub.stopPropagation );
+						sinon.assert.called( upArrowDomEvtDataStub.preventDefault );
+						sinon.assert.called( upArrowDomEvtDataStub.stopPropagation );
 
 						assertEqualMarkup( getModelData( model ), modelTable( [
 							[ '00', '01[]', '02' ],
@@ -2092,10 +2096,12 @@ describe( 'TableKeyboard', () => {
 					} );
 
 					it( 'should navigate to the cell below', () => {
+						// Twice because of fake caret next to widget.
+						editor.editing.view.document.fire( 'keydown', downArrowDomEvtDataStub );
 						editor.editing.view.document.fire( 'keydown', downArrowDomEvtDataStub );
 
-						sinon.assert.calledOnce( downArrowDomEvtDataStub.preventDefault );
-						sinon.assert.calledOnce( downArrowDomEvtDataStub.stopPropagation );
+						sinon.assert.called( downArrowDomEvtDataStub.preventDefault );
+						sinon.assert.called( downArrowDomEvtDataStub.stopPropagation );
 
 						assertEqualMarkup( getModelData( model ), modelTable( [
 							[ '00', '01', '02' ],
@@ -2113,10 +2119,12 @@ describe( 'TableKeyboard', () => {
 							[ '20', '21', '22' ]
 						] ) );
 
+						// Twice because of fake caret next to widget.
+						editor.editing.view.document.fire( 'keydown', leftArrowDomEvtDataStub );
 						editor.editing.view.document.fire( 'keydown', leftArrowDomEvtDataStub );
 
-						sinon.assert.calledOnce( leftArrowDomEvtDataStub.preventDefault );
-						sinon.assert.calledOnce( leftArrowDomEvtDataStub.stopPropagation );
+						sinon.assert.called( leftArrowDomEvtDataStub.preventDefault );
+						sinon.assert.called( leftArrowDomEvtDataStub.stopPropagation );
 
 						assertEqualMarkup( getModelData( model ), modelTable( [
 							[ '00', '01', '02' ],
@@ -2132,10 +2140,12 @@ describe( 'TableKeyboard', () => {
 							[ '20', '21', '22' ]
 						] ) );
 
+						// Twice because of fake caret next to widget.
+						editor.editing.view.document.fire( 'keydown', rightArrowDomEvtDataStub );
 						editor.editing.view.document.fire( 'keydown', rightArrowDomEvtDataStub );
 
-						sinon.assert.calledOnce( rightArrowDomEvtDataStub.preventDefault );
-						sinon.assert.calledOnce( rightArrowDomEvtDataStub.stopPropagation );
+						sinon.assert.called( rightArrowDomEvtDataStub.preventDefault );
+						sinon.assert.called( rightArrowDomEvtDataStub.stopPropagation );
 
 						assertEqualMarkup( getModelData( model ), modelTable( [
 							[ '00', '01', '02' ],
@@ -2151,10 +2161,12 @@ describe( 'TableKeyboard', () => {
 							[ '20', '21', '22' ]
 						] ) );
 
+						// Twice because of fake caret next to widget.
+						editor.editing.view.document.fire( 'keydown', upArrowDomEvtDataStub );
 						editor.editing.view.document.fire( 'keydown', upArrowDomEvtDataStub );
 
-						sinon.assert.calledOnce( upArrowDomEvtDataStub.preventDefault );
-						sinon.assert.calledOnce( upArrowDomEvtDataStub.stopPropagation );
+						sinon.assert.called( upArrowDomEvtDataStub.preventDefault );
+						sinon.assert.called( upArrowDomEvtDataStub.stopPropagation );
 
 						assertEqualMarkup( getModelData( model ), modelTable( [
 							[ '00', '01[]', '02' ],
@@ -2170,10 +2182,12 @@ describe( 'TableKeyboard', () => {
 							[ '20', '21', '22' ]
 						] ) );
 
+						// Twice because of fake caret next to widget.
+						editor.editing.view.document.fire( 'keydown', downArrowDomEvtDataStub );
 						editor.editing.view.document.fire( 'keydown', downArrowDomEvtDataStub );
 
-						sinon.assert.calledOnce( downArrowDomEvtDataStub.preventDefault );
-						sinon.assert.calledOnce( downArrowDomEvtDataStub.stopPropagation );
+						sinon.assert.called( downArrowDomEvtDataStub.preventDefault );
+						sinon.assert.called( downArrowDomEvtDataStub.stopPropagation );
 
 						assertEqualMarkup( getModelData( model ), modelTable( [
 							[ '00', '01', '02' ],
@@ -2185,18 +2199,9 @@ describe( 'TableKeyboard', () => {
 			} );
 
 			describe( 'with selection not at the boundary of a cell', () => {
-				let editorElement, editor, model, styleElement;
+				let styleElement;
 
 				beforeEach( async () => {
-					editorElement = global.document.createElement( 'div' );
-					global.document.body.appendChild( editorElement );
-
-					editor = await ClassicTestEditor.create( editorElement, {
-						plugins: [ Table, Paragraph, Image, ImageCaption, HorizontalLine ]
-					} );
-
-					model = editor.model;
-
 					styleElement = global.document.createElement( 'style' );
 					styleElement.type = 'text/css';
 					styleElement.appendChild( global.document.createTextNode(
@@ -2220,9 +2225,7 @@ describe( 'TableKeyboard', () => {
 				} );
 
 				afterEach( async () => {
-					editorElement.remove();
 					styleElement.remove();
-					await editor.destroy();
 				} );
 
 				describe( 'simple cell text content', () => {
@@ -3065,6 +3068,8 @@ describe( 'TableKeyboard', () => {
 		} );
 
 		describe( 'for right-to-left content language', () => {
+			let editor, model, modelRoot, tableSelection;
+
 			beforeEach( () => {
 				return VirtualTestEditor
 					.create( {
@@ -3080,6 +3085,10 @@ describe( 'TableKeyboard', () => {
 					} );
 			} );
 
+			afterEach( () => {
+				return editor.destroy();
+			} );
+
 			describe( 'with the table cell selected from outside', () => {
 				beforeEach( () => {
 					setModelData( model, modelTable( [