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