jenkins-bot has submitted this change and it was merged.

Change subject: ce.Surface: Test table navigation with 
enter/escape/tab/shift-tab
......................................................................


ce.Surface: Test table navigation with enter/escape/tab/shift-tab

Change-Id: Iaa5df809a54343371a9d47c147f0d1cd6a4f7dcb
---
M tests/ce/ve.ce.Surface.test.js
1 file changed, 126 insertions(+), 9 deletions(-)

Approvals:
  Jforrester: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/tests/ce/ve.ce.Surface.test.js b/tests/ce/ve.ce.Surface.test.js
index 59d6ede..d2bf029 100644
--- a/tests/ce/ve.ce.Surface.test.js
+++ b/tests/ce/ve.ce.Surface.test.js
@@ -16,7 +16,10 @@
                        modifiedBackspace: { keyCode: OO.ui.Keys.BACKSPACE, 
ctrlKey: true },
                        modifiedDelete: { keyCode: OO.ui.Keys.DELETE, ctrlKey: 
true },
                        enter: { keyCode: OO.ui.Keys.ENTER },
-                       modifiedEnter: { keyCode: OO.ui.Keys.ENTER, shiftKey: 
true }
+                       shiftEnter: { keyCode: OO.ui.Keys.ENTER, shiftKey: true 
},
+                       tab: { keyCode: OO.ui.Keys.TAB },
+                       shiftTab: { keyCode: OO.ui.Keys.TAB, shiftKey: true },
+                       escape: { keyCode: OO.ui.Keys.ESCAPE }
                },
                view = typeof htmlOrDoc === 'string' ?
                        ve.test.utils.createSurfaceViewFromHtml( htmlOrDoc ) :
@@ -36,7 +39,8 @@
        model.setSelection( selection );
        for ( i = 0; i < operations.length; i++ ) {
                e = ve.extendObject( {}, {
-                       preventDefault: function () {}
+                       preventDefault: function () {},
+                       stopPropagation: function () {}
                }, actions[ operations[ i ] ] );
                ve.ce.keyDownHandlerFactory.executeHandlersForKey(
                        e.keyCode, selection.getName(), view, e
@@ -416,6 +420,103 @@
        }
 } );
 
+QUnit.test( 'special key down: table cells', function ( assert ) {
+       var i,
+               mergedCellsDoc = ve.dm.example.createExampleDocument( 
'mergedCells' ),
+               cases = [
+                       {
+                               htmlOrDoc: mergedCellsDoc,
+                               rangeOrSelection: {
+                                       type: 'table',
+                                       tableRange: new ve.Range( 0, 171 ),
+                                       fromCol: 1,
+                                       fromRow: 0,
+                                       toCol: 1,
+                                       toRow: 0
+                               },
+                               operations: [ 'enter' ],
+                               expectedData: function () {},
+                               expectedRangeOrSelection: new ve.Range( 11 ),
+                               msg: 'Enter to edit a table cell'
+                       },
+                       {
+                               htmlOrDoc: mergedCellsDoc,
+                               rangeOrSelection: {
+                                       type: 'table',
+                                       tableRange: new ve.Range( 0, 171 ),
+                                       fromCol: 1,
+                                       fromRow: 0,
+                                       toCol: 1,
+                                       toRow: 0
+                               },
+                               operations: [ 'enter', 'escape' ],
+                               expectedData: function () {},
+                               expectedRangeOrSelection: {
+                                       type: 'table',
+                                       tableRange: new ve.Range( 0, 171 ),
+                                       fromCol: 1,
+                                       fromRow: 0,
+                                       toCol: 1,
+                                       toRow: 0
+                               },
+                               msg: 'Escape to leave a table cell'
+                       },
+                       {
+                               htmlOrDoc: mergedCellsDoc,
+                               rangeOrSelection: {
+                                       type: 'table',
+                                       tableRange: new ve.Range( 0, 171 ),
+                                       fromCol: 1,
+                                       fromRow: 0,
+                                       toCol: 1,
+                                       toRow: 0
+                               },
+                               operations: [ 'enter', 'tab' ],
+                               expectedData: function () {},
+                               expectedRangeOrSelection: {
+                                       type: 'table',
+                                       tableRange: new ve.Range( 0, 171 ),
+                                       fromCol: 2,
+                                       fromRow: 0,
+                                       toCol: 2,
+                                       toRow: 0
+                               },
+                               msg: 'Tab while in a table cell moves to the 
next cell'
+                       },
+                       {
+                               htmlOrDoc: mergedCellsDoc,
+                               rangeOrSelection: {
+                                       type: 'table',
+                                       tableRange: new ve.Range( 0, 171 ),
+                                       fromCol: 1,
+                                       fromRow: 0,
+                                       toCol: 1,
+                                       toRow: 0
+                               },
+                               operations: [ 'enter', 'shiftTab' ],
+                               expectedData: function () {},
+                               expectedRangeOrSelection: {
+                                       type: 'table',
+                                       tableRange: new ve.Range( 0, 171 ),
+                                       fromCol: 0,
+                                       fromRow: 0,
+                                       toCol: 0,
+                                       toRow: 0
+                               },
+                               msg: 'Shift+tab while in a table cell moves to 
the previous cell'
+                       }
+               ];
+
+       QUnit.expect( cases.length * 2 );
+
+       for ( i = 0; i < cases.length; i++ ) {
+               ve.test.utils.runSurfaceHandleSpecialKeyTest(
+                       assert, cases[ i ].htmlOrDoc, cases[ i 
].rangeOrSelection, cases[ i ].operations,
+                       cases[ i ].expectedData, cases[ i 
].expectedRangeOrSelection, cases[ i ].msg
+               );
+       }
+} );
+
 QUnit.test( 'special key down: linear enter', function ( assert ) {
        var i,
                emptyList = '<ul><li><p></p></li></ul>',
@@ -435,7 +536,7 @@
                        },
                        {
                                rangeOrSelection: new ve.Range( 57 ),
-                               operations: [ 'modifiedEnter' ],
+                               operations: [ 'shiftEnter' ],
                                expectedData: function ( data ) {
                                        data.splice(
                                                57, 0,
@@ -444,7 +545,7 @@
                                        );
                                },
                                expectedRangeOrSelection: new ve.Range( 59 ),
-                               msg: 'End of paragraph split by modified enter'
+                               msg: 'End of paragraph split by shift+enter'
                        },
                        {
                                rangeOrSelection: new ve.Range( 56 ),
@@ -528,7 +629,7 @@
                        },
                        {
                                rangeOrSelection: new ve.Range( 16 ),
-                               operations: [ 'modifiedEnter' ],
+                               operations: [ 'shiftEnter' ],
                                expectedData: function ( data ) {
                                        data.splice(
                                                16, 0,
@@ -537,7 +638,7 @@
                                        );
                                },
                                expectedRangeOrSelection: new ve.Range( 18 ),
-                               msg: 'List item not split by modified enter'
+                               msg: 'List item not split by shift+enter'
                        },
                        {
                                rangeOrSelection: new ve.Range( 21 ),
@@ -834,7 +935,8 @@
                                        }
                                }
                        },
-                       preventDefault: function () {}
+                       preventDefault: function () {},
+                       stopPropagation: function () {}
                },
                cases = [
                        {
@@ -930,6 +1032,7 @@
                                }
                        };
                        this.preventDefault = function () {};
+                       this.stopPropagation = function () {};
                },
                cases = [
                        {
@@ -2244,6 +2347,11 @@
                                expectedSelectionOffsets: [ 1, 0, 1, 0 ]
                        },
                        {
+                               msg: 'Simple move right with tab',
+                               key: 'TAB',
+                               selectionOffsets: [ 0, 0 ],
+                               expectedSelectionOffsets: [ 1, 0, 1, 0 ]
+                       },                      {
                                msg: 'Simple move end',
                                key: 'END',
                                selectionOffsets: [ 0, 0 ],
@@ -2264,6 +2372,13 @@
                        {
                                msg: 'Simple move left',
                                key: 'LEFT',
+                               selectionOffsets: [ 5, 6 ],
+                               expectedSelectionOffsets: [ 4, 6, 4, 6 ]
+                       },
+                       {
+                               msg: 'Simple move left with shift-tab',
+                               key: 'TAB',
+                               shiftKey: true,
                                selectionOffsets: [ 5, 6 ],
                                expectedSelectionOffsets: [ 4, 6, 4, 6 ]
                        },
@@ -2346,7 +2461,8 @@
                        {
                                keyCode: OO.ui.Keys[ cases[ i ].key ],
                                shiftKey: !!cases[ i ].shiftKey,
-                               preventDefault: fn
+                               preventDefault: fn,
+                               stopPropagation: fn
                        }
                );
                selection = model.getSelection();
@@ -2421,7 +2537,8 @@
                                                }
                                        }
                                },
-                               preventDefault: function () {}
+                               preventDefault: function () {},
+                               stopPropagation: function () {}
                        };
 
                // Mock drop coords

-- 
To view, visit https://gerrit.wikimedia.org/r/278323
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Iaa5df809a54343371a9d47c147f0d1cd6a4f7dcb
Gerrit-PatchSet: 2
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>
Gerrit-Reviewer: Esanders <[email protected]>
Gerrit-Reviewer: Jforrester <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to