Esanders has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/288174

Change subject: Group optional action test arguments in an options object
......................................................................

Group optional action test arguments in an options object

Also add an expected selection option for link tests.

Change-Id: I9b9275b55b367a1335bf4c4f8f52a68f6aeb9827
---
M tests/ui/actions/ve.ui.AnnotationAction.test.js
M tests/ui/actions/ve.ui.ContentAction.test.js
M tests/ui/actions/ve.ui.FormatAction.test.js
M tests/ui/actions/ve.ui.IndentationAction.test.js
M tests/ui/actions/ve.ui.LinkAction.test.js
M tests/ui/actions/ve.ui.ListAction.test.js
M tests/ui/actions/ve.ui.TableAction.test.js
M tests/ve.test.utils.js
8 files changed, 72 insertions(+), 25 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/VisualEditor/VisualEditor 
refs/changes/74/288174/1

diff --git a/tests/ui/actions/ve.ui.AnnotationAction.test.js 
b/tests/ui/actions/ve.ui.AnnotationAction.test.js
index cdb809c..804624c 100644
--- a/tests/ui/actions/ve.ui.AnnotationAction.test.js
+++ b/tests/ui/actions/ve.ui.AnnotationAction.test.js
@@ -106,8 +106,11 @@
        QUnit.expect( ve.test.utils.countActionTests( cases ) );
        for ( i = 0; i < cases.length; i++ ) {
                ve.test.utils.runActionTest(
-                       'annotation', assert, cases[ i ].html, false, cases[ i 
].method, cases[ i ].args, cases[ i ].rangeOrSelection,
-                       cases[ i ].expectedData, cases[ i 
].expectedOriginalData, cases[ i ].expectedRangeOrSelection, cases[ i ].undo, 
cases[ i ].msg
+                       'annotation', assert, cases[ i ].html, false, cases[ i 
].method, cases[ i ].args, cases[ i ].rangeOrSelection, cases[ i ].msg,
+                       {
+                               expectedData: cases[ i ].expectedData,
+                               expectedRangeOrSelection: cases[ i 
].expectedRangeOrSelection
+                       }
                );
        }
 } );
diff --git a/tests/ui/actions/ve.ui.ContentAction.test.js 
b/tests/ui/actions/ve.ui.ContentAction.test.js
index d78a394..e4eeaf3 100644
--- a/tests/ui/actions/ve.ui.ContentAction.test.js
+++ b/tests/ui/actions/ve.ui.ContentAction.test.js
@@ -103,8 +103,12 @@
        QUnit.expect( ve.test.utils.countActionTests( cases ) );
        for ( i = 0; i < cases.length; i++ ) {
                ve.test.utils.runActionTest(
-                       'content', assert, cases[ i ].html, cases[ i 
].createView, cases[ i ].method, cases[ i ].args, cases[ i ].rangeOrSelection,
-                       cases[ i ].expectedData, cases[ i 
].expectedOriginalData, cases[ i ].expectedRangeOrSelection, cases[ i ].undo, 
cases[ i ].msg
+                       'content', assert, cases[ i ].html, cases[ i 
].createView, cases[ i ].method, cases[ i ].args, cases[ i ].rangeOrSelection, 
cases[ i ].msg,
+                       {
+                               expectedData: cases[ i ].expectedData,
+                               expectedRangeOrSelection: cases[ i 
].expectedRangeOrSelection,
+                               undo: cases[ i ].undo
+                       }
                );
        }
 } );
diff --git a/tests/ui/actions/ve.ui.FormatAction.test.js 
b/tests/ui/actions/ve.ui.FormatAction.test.js
index ebd14af..3bbf532 100644
--- a/tests/ui/actions/ve.ui.FormatAction.test.js
+++ b/tests/ui/actions/ve.ui.FormatAction.test.js
@@ -102,8 +102,13 @@
        QUnit.expect( ve.test.utils.countActionTests( cases ) );
        for ( i = 0; i < cases.length; i++ ) {
                ve.test.utils.runActionTest(
-                       'format', assert, cases[ i ].html || 
ve.dm.example.isolationHtml, false, 'convert', [ cases[ i ].type, cases[ i 
].attributes ], cases[ i ].rangeOrSelection,
-                       cases[ i ].expectedData, cases[ i 
].expectedOriginalData, cases[ i ].expectedRangeOrSelection, cases[ i ].undo, 
cases[ i ].msg
+                       'format', assert, cases[ i ].html || 
ve.dm.example.isolationHtml, false, 'convert',
+                       [ cases[ i ].type, cases[ i ].attributes ], cases[ i 
].rangeOrSelection, cases[ i ].msg,
+                       {
+                               expectedData: cases[ i ].expectedData,
+                               expectedRangeOrSelection: cases[ i 
].expectedRangeOrSelection,
+                               undo: cases[ i ].undo
+                       }
                );
        }
 } );
diff --git a/tests/ui/actions/ve.ui.IndentationAction.test.js 
b/tests/ui/actions/ve.ui.IndentationAction.test.js
index e76393f..a8279c3 100644
--- a/tests/ui/actions/ve.ui.IndentationAction.test.js
+++ b/tests/ui/actions/ve.ui.IndentationAction.test.js
@@ -61,8 +61,13 @@
        QUnit.expect( ve.test.utils.countActionTests( cases ) );
        for ( i = 0; i < cases.length; i++ ) {
                ve.test.utils.runActionTest(
-                       'indentation', assert, cases[ i ].html || 
ve.dm.example.isolationHtml, false, cases[ i ].method, [], cases[ i 
].rangeOrSelection,
-                       cases[ i ].expectedData, cases[ i 
].expectedOriginalData, cases[ i ].expectedRangeOrSelection, cases[ i ].undo, 
cases[ i ].msg
+                       'indentation', assert, cases[ i ].html || 
ve.dm.example.isolationHtml, false, cases[ i ].method, [], cases[ i 
].rangeOrSelection, cases[ i ].msg,
+                       {
+                               expectedData: cases[ i ].expectedData,
+                               expectedOriginalData: cases[ i 
].expectedOriginalData,
+                               expectedRangeOrSelection: cases[ i 
].expectedRangeOrSelection,
+                               undo: cases[ i ].undo
+                       }
                );
        }
 } );
diff --git a/tests/ui/actions/ve.ui.LinkAction.test.js 
b/tests/ui/actions/ve.ui.LinkAction.test.js
index cfb2db6..454d6e9 100644
--- a/tests/ui/actions/ve.ui.LinkAction.test.js
+++ b/tests/ui/actions/ve.ui.LinkAction.test.js
@@ -16,6 +16,7 @@
                                rangeOrSelection: new ve.Range( 1, 20 ),
                                method: 'autolinkUrl',
                                expectedRangeOrSelection: new ve.Range( 20 ),
+                               expectedOriginalRangeOrSelection: new ve.Range( 
20 ),
                                expectedData: function ( data, action ) {
                                        var i,
                                                a = action.getLinkAnnotation( 
'http://example.com' );
@@ -23,6 +24,7 @@
                                                data[ i ] = [ data[ i ], [ 
a.element ] ];
                                        }
                                },
+                               undo: true,
                                msg: 'Autolink after space'
                        },
                        {
@@ -30,6 +32,7 @@
                                rangeOrSelection: new ve.Range( 1, 21 ),
                                method: 'autolinkUrl',
                                expectedRangeOrSelection: new ve.Range( 21 ),
+                               expectedOriginalRangeOrSelection: new ve.Range( 
21 ),
                                expectedData: function ( data, action ) {
                                        var i,
                                                a = action.getLinkAnnotation( 
'http://example.com' );
@@ -37,6 +40,7 @@
                                                data[ i ] = [ data[ i ], [ 
a.element ] ];
                                        }
                                },
+                               undo: true,
                                msg: 'Autolink after newline'
                        },
                        {
@@ -44,6 +48,7 @@
                                rangeOrSelection: new ve.Range( 1, 20 ),
                                method: 'autolinkUrl',
                                expectedRangeOrSelection: new ve.Range( 20 ),
+                               expectedOriginalRangeOrSelection: new ve.Range( 
20 ),
                                expectedData: function ( data, action ) {
                                        var i,
                                                a = action.getLinkAnnotation( 
'Http://Example.COm' );
@@ -51,6 +56,7 @@
                                                data[ i ] = [ data[ i ], [ 
a.element ] ];
                                        }
                                },
+                               undo: true,
                                msg: 'Autolink with mixed case'
                        },
                        {
@@ -58,6 +64,7 @@
                                rangeOrSelection: new ve.Range( 1, 22 ),
                                method: 'autolinkUrl',
                                expectedRangeOrSelection: new ve.Range( 22 ),
+                               expectedOriginalRangeOrSelection: new ve.Range( 
22 ),
                                expectedData: function ( data, action ) {
                                        var i,
                                                a = action.getLinkAnnotation( 
'http://example.com' );
@@ -65,6 +72,7 @@
                                                data[ i ] = [ data[ i ], [ 
a.element ] ];
                                        }
                                },
+                               undo: true,
                                msg: 'Strip trailing punctuation'
                        },
                        {
@@ -72,6 +80,7 @@
                                rangeOrSelection: new ve.Range( 2, 22 ),
                                method: 'autolinkUrl',
                                expectedRangeOrSelection: new ve.Range( 22 ),
+                               expectedOriginalRangeOrSelection: new ve.Range( 
22 ),
                                expectedData: function ( data, action ) {
                                        var i,
                                                a = action.getLinkAnnotation( 
'http://example.com' );
@@ -79,6 +88,7 @@
                                                data[ i ] = [ data[ i ], [ 
a.element ] ];
                                        }
                                },
+                               undo: true,
                                msg: 'Strip trailing quotes'
                        },
                        {
@@ -96,8 +106,13 @@
        QUnit.expect( ve.test.utils.countActionTests( cases ) );
        for ( i = 0; i < cases.length; i++ ) {
                ve.test.utils.runActionTest(
-                       'link', assert, cases[ i ].html, false, cases[ i 
].method, [], cases[ i ].rangeOrSelection,
-                       cases[ i ].expectedData, cases[ i 
].expectedOriginalData, cases[ i ].expectedRangeOrSelection, cases[ i ].undo, 
cases[ i ].msg
+                       'link', assert, cases[ i ].html, false, cases[ i 
].method, [], cases[ i ].rangeOrSelection, cases[ i ].msg,
+                       {
+                               expectedData: cases[ i ].expectedData,
+                               expectedRangeOrSelection: cases[ i 
].expectedRangeOrSelection,
+                               expectedOriginalRangeOrSelection: cases[ i 
].expectedOriginalRangeOrSelection,
+                               undo: cases[ i ].undo
+                       }
                );
        }
 } );
diff --git a/tests/ui/actions/ve.ui.ListAction.test.js 
b/tests/ui/actions/ve.ui.ListAction.test.js
index 1639418..63851cd 100644
--- a/tests/ui/actions/ve.ui.ListAction.test.js
+++ b/tests/ui/actions/ve.ui.ListAction.test.js
@@ -54,8 +54,13 @@
        QUnit.expect( ve.test.utils.countActionTests( cases ) );
        for ( i = 0; i < cases.length; i++ ) {
                ve.test.utils.runActionTest(
-                       'list', assert, cases[ i ].html, false, cases[ i 
].method, [ cases[ i ].style ], cases[ i ].rangeOrSelection,
-                       cases[ i ].expectedData, cases[ i 
].expectedOriginalData, cases[ i ].expectedRangeOrSelection, cases[ i ].undo, 
cases[ i ].msg
+                       'list', assert, cases[ i ].html, false, cases[ i 
].method, [ cases[ i ].style ], cases[ i ].rangeOrSelection, cases[ i ].msg,
+                       {
+                               expectedData: cases[ i ].expectedData,
+                               expectedOriginalData: cases[ i 
].expectedOriginalData,
+                               expectedRangeOrSelection: cases[ i 
].expectedRangeOrSelection,
+                               undo: cases[ i ].undo
+                       }
                );
        }
 } );
diff --git a/tests/ui/actions/ve.ui.TableAction.test.js 
b/tests/ui/actions/ve.ui.TableAction.test.js
index da828a0..e1f0c57 100644
--- a/tests/ui/actions/ve.ui.TableAction.test.js
+++ b/tests/ui/actions/ve.ui.TableAction.test.js
@@ -426,8 +426,11 @@
        QUnit.expect( ve.test.utils.countActionTests( cases ) );
        for ( i = 0; i < cases.length; i++ ) {
                ve.test.utils.runActionTest(
-                       'table', assert, cases[ i ].html, false, cases[ i 
].method, cases[ i ].args, cases[ i ].rangeOrSelection,
-                       cases[ i ].expectedData, cases[ i 
].expectedOriginalData, cases[ i ].expectedRangeOrSelection, cases[ i ].undo, 
cases[ i ].msg
+                       'table', assert, cases[ i ].html, false, cases[ i 
].method, cases[ i ].args, cases[ i ].rangeOrSelection, cases[ i ].msg,
+                       {
+                               expectedData: cases[ i ].expectedData,
+                               expectedRangeOrSelection: cases[ i 
].expectedRangeOrSelection
+                       }
                );
        }
 } );
diff --git a/tests/ve.test.utils.js b/tests/ve.test.utils.js
index ebe6c87..cb9dcba 100644
--- a/tests/ve.test.utils.js
+++ b/tests/ve.test.utils.js
@@ -97,26 +97,27 @@
                return expected;
        };
 
-       ve.test.utils.runActionTest = function ( actionName, assert, html, 
createView, method, args, rangeOrSelection, expectedData, expectedOriginalData, 
expectedRangeOrSelection, undo, msg ) {
-               var actualData,
+       ve.test.utils.runActionTest = function ( actionName, assert, html, 
createView, method, args, rangeOrSelection, msg, options ) {
+               var actualData, originalData, expectedOriginalRangeOrSelection,
                        surface = createView ?
                                ve.test.utils.createViewOnlySurfaceFromHtml( 
html || ve.dm.example.html ) :
                                ve.test.utils.createModelOnlySurfaceFromHtml( 
html || ve.dm.example.html ),
                        action = ve.ui.actionFactory.create( actionName, 
surface ),
                        data = ve.copy( 
surface.getModel().getDocument().getFullData() ),
-                       originalData = ve.copy( data ),
                        documentModel = surface.getModel().getDocument(),
                        selection = 
ve.test.utils.selectionFromRangeOrSelection( documentModel, rangeOrSelection ),
-                       expectedSelection = expectedRangeOrSelection && 
ve.test.utils.selectionFromRangeOrSelection( documentModel, 
expectedRangeOrSelection );
+                       expectedSelection = options.expectedRangeOrSelection && 
ve.test.utils.selectionFromRangeOrSelection( documentModel, 
options.expectedRangeOrSelection );
+
+               if ( options.undo ) {
+                       originalData = ve.copy( data );
+               }
 
                ve.dm.example.postprocessAnnotations( data, 
surface.getModel().getDocument().getStore() );
 
-               if ( expectedData ) {
-                       expectedData( data, action );
+               if ( options.expectedData ) {
+                       options.expectedData( data, action );
                }
-               if ( expectedOriginalData ) {
-                       expectedOriginalData( originalData, action );
-               }
+
                surface.getModel().setSelection( selection );
                action[ method ].apply( action, args || [] );
 
@@ -127,12 +128,18 @@
                        assert.equalHash( surface.getModel().getSelection(), 
expectedSelection, msg + ': selections match' );
                }
 
-               if ( undo ) {
+               if ( options.undo ) {
+                       if ( options.expectedOriginalData ) {
+                               options.expectedOriginalData( originalData, 
action );
+                       }
+
                        surface.getModel().undo();
 
                        assert.equalLinearData( 
surface.getModel().getDocument().getFullData(), originalData, msg + ' (undo): 
data models match' );
                        if ( expectedSelection ) {
-                               assert.equalHash( 
surface.getModel().getSelection(), selection, msg + ' (undo): selections match' 
);
+                               expectedOriginalRangeOrSelection = 
options.expectedOriginalRangeOrSelection &&
+                                       
ve.test.utils.selectionFromRangeOrSelection( documentModel, 
options.expectedOriginalRangeOrSelection );
+                               assert.equalHash( 
surface.getModel().getSelection(), expectedOriginalRangeOrSelection || 
selection, msg + ' (undo): selections match' );
                        }
                }
        };

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9b9275b55b367a1335bf4c4f8f52a68f6aeb9827
Gerrit-PatchSet: 1
Gerrit-Project: VisualEditor/VisualEditor
Gerrit-Branch: master
Gerrit-Owner: Esanders <[email protected]>

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

Reply via email to