|
|
@@ -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( [
|