Esanders has uploaded a new change for review.

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

Change subject: Use new action test runner
......................................................................

Use new action test runner

Bug: T90370
Change-Id: Ice209791f323c19743c192c5f864b2f8202b5ca9
Depends-On: I9b9275b55b367a1335bf4c4f8f52a68f6aeb9827
---
M modules/ve-mw/tests/ui/actions/ve.ui.FormatAction.test.js
M modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js
2 files changed, 64 insertions(+), 74 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/VisualEditor 
refs/changes/75/288175/1

diff --git a/modules/ve-mw/tests/ui/actions/ve.ui.FormatAction.test.js 
b/modules/ve-mw/tests/ui/actions/ve.ui.FormatAction.test.js
index c4bfb6e..16d0f42 100644
--- a/modules/ve-mw/tests/ui/actions/ve.ui.FormatAction.test.js
+++ b/modules/ve-mw/tests/ui/actions/ve.ui.FormatAction.test.js
@@ -13,21 +13,22 @@
        var i,
                cases = [
                        {
-                               range: new ve.Range( 14, 16 ),
+                               rangeOrSelection: new ve.Range( 14, 16 ),
                                type: 'mwHeading',
                                attributes: { level: 2 },
-                               expectedRange: new ve.Range( 14, 16 ),
+                               expectedRangeOrSelection: new ve.Range( 14, 16 
),
                                expectedData: function ( data ) {
                                        data.splice( 11, 2, { type: '/list' }, 
{ type: 'mwHeading', attributes: { level: 2 } } );
                                        data.splice( 19, 2, { type: 
'/mwHeading' }, { type: 'list', attributes: { style: 'bullet' } } );
                                },
+                               undo: true,
                                msg: 'converting partial selection of list item 
"Item 2" to level 2 mwHeading'
                        },
                        {
-                               range: new ve.Range( 15, 50 ),
+                               rangeOrSelection: new ve.Range( 15, 50 ),
                                type: 'mwHeading',
                                attributes: { level: 3 },
-                               expectedRange: new ve.Range( 15, 44 ),
+                               expectedRangeOrSelection: new ve.Range( 15, 44 
),
                                expectedData: function ( data ) {
                                        data.splice( 11, 2, { type: '/list' }, 
{ type: 'mwHeading', attributes: { level: 3 } } );
                                        data.splice( 19, 4, { type: 
'/mwHeading' }, { type: 'mwHeading', attributes: { level: 3 } } );
@@ -35,38 +36,49 @@
                                        data.splice( 38, 4, { type: 
'/mwHeading' }, { type: 'mwHeading', attributes: { level: 3 } } );
                                        data.splice( 46, 2, { type: 
'/mwHeading' }, { type: 'list', attributes: { style: 'bullet' } } );
                                },
+                               undo: true,
                                msg: 'converting partial selection across two 
lists surrounding a paragraph'
                        },
                        {
-                               range: new ve.Range( 4, 28 ),
+                               rangeOrSelection: new ve.Range( 4, 28 ),
                                type: 'mwHeading',
                                attributes: { level: 1 },
-                               expectedRange: new ve.Range( 2, 22 ),
+                               expectedRangeOrSelection: new ve.Range( 2, 22 ),
                                expectedData: function ( data ) {
                                        data.splice( 0, 3, { type: 'mwHeading', 
attributes: { level: 1 } } );
                                        data.splice( 7, 4, { type: '/mwHeading' 
}, { type: 'mwHeading', attributes: { level: 1 } } );
                                        data.splice( 15, 4, { type: 
'/mwHeading' }, { type: 'mwHeading', attributes: { level: 1 } } );
                                        data.splice( 23, 3, { type: 
'/mwHeading' } );
                                },
+                               undo: true,
                                msg: 'converting partial selection of all list 
items to level 1 MWheadings'
                        },
                        {
-                               range: new ve.Range( 5, 26 ),
+                               rangeOrSelection: new ve.Range( 5, 26 ),
                                type: 'mwPreformatted',
                                attributes: undefined,
-                               expectedRange: new ve.Range( 3, 20 ),
+                               expectedRangeOrSelection: new ve.Range( 3, 20 ),
                                expectedData: function ( data ) {
                                        data.splice( 0, 3, { type: 
'mwPreformatted' } );
                                        data.splice( 7, 4, { type: 
'/mwPreformatted' }, { type: 'mwPreformatted' } );
                                        data.splice( 15, 4, { type: 
'/mwPreformatted' }, { type: 'mwPreformatted' } );
                                        data.splice( 23, 3, { type: 
'/mwPreformatted' } );
                                },
+                               undo: true,
                                msg: 'converting partial selection of some list 
items to mwPreformatted text'
                        }
                ];
 
-       QUnit.expect( cases.length * 4 );
+       QUnit.expect( ve.test.utils.countActionTests( cases ) );
        for ( i = 0; i < cases.length; i++ ) {
-               ve.test.utils.runFormatConverterTest( assert, cases[ i ].range, 
cases[ i ].type, cases[ i ].attributes, cases[ i ].expectedRange, cases[ i 
].expectedData, cases[ i ].msg );
+               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 ].msg,
+                       {
+                               expectedData: cases[ i ].expectedData,
+                               expectedRangeOrSelection: cases[ i 
].expectedRangeOrSelection,
+                               undo: cases[ i ].undo
+                       }
+               );
        }
 } );
diff --git a/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js 
b/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js
index e1c0bd1..ed4a4be 100644
--- a/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js
+++ b/modules/ve-mw/tests/ui/actions/ve.ui.MWLinkAction.test.js
@@ -9,64 +9,31 @@
 
 /* Tests */
 
-function runMWAutolinkTest( assert, html, method, range, expectedRange, 
expectedRangeAfterUndo, expectedData, expectedOriginalData, msg ) {
-       var status, actualData,
-               expectFail = /^Don't/.test( msg ),
-               surface = ve.test.utils.createModelOnlySurfaceFromHtml( html || 
ve.dm.example.html ),
-               linkAction = new ve.ui.MWLinkAction( surface ),
-               data = ve.copy( surface.getModel().getDocument().getFullData() 
),
-               originalData = ve.copy( data ),
-               makeLinkAnnotation = function ( linktext ) {
-                       return linkAction.getLinkAnnotation( linktext ).element;
-               };
-
-       ve.dm.example.postprocessAnnotations( data, 
surface.getModel().getDocument().getStore() );
-       expectedData( data, makeLinkAnnotation );
-       if ( expectedOriginalData ) {
-               expectedOriginalData( originalData );
-       }
-       surface.getModel().setLinearSelection( range );
-       status = linkAction[ method ]();
-       assert.equal( status, !expectFail, msg + ': action return value' );
-
-       actualData = surface.getModel().getDocument().getFullData();
-       ve.dm.example.postprocessAnnotations( actualData, 
surface.getModel().getDocument().getStore() );
-       assert.equalLinearData( actualData, data, msg + ': data models match' );
-       assert.equalRange( surface.getModel().getSelection().getRange(), 
expectedRange, msg + ': ranges match' );
-
-       if ( status ) {
-               surface.getModel().undo();
-       }
-
-       assert.equalLinearData( surface.getModel().getDocument().getFullData(), 
originalData, msg + ' (undo): data models match' );
-       assert.equalRange( surface.getModel().getSelection().getRange(), 
expectedRangeAfterUndo || expectedRange, msg + ' (undo): ranges match' );
-}
-
 QUnit.test( 'MW autolink', function ( assert ) {
        var i,
                cases = [
                        {
                                msg: 'Strip trailing punctuation (but not 
matched parens)',
                                html: 
'<p><b>https://en.wikipedia.org/wiki/Red_(disambiguation) xyz</b></p>',
-                               range: new ve.Range( 1, 52 ),
+                               rangeOrSelection: new ve.Range( 1, 52 ),
                                method: 'autolinkUrl',
-                               expectedRange: new ve.Range( 52, 52 ),
-                               expectedData: function ( data, makeAnnotation ) 
{
+                               expectedRangeOrSelection: new ve.Range( 52 ),
+                               expectedData: function ( data, action ) {
                                        var i,
-                                               a = makeAnnotation( 
'https://en.wikipedia.org/wiki/Red_(disambiguation)' );
+                                               a = action.getLinkAnnotation( 
'https://en.wikipedia.org/wiki/Red_(disambiguation)' );
                                        for ( i = 1; i < 51; i++ ) {
-                                               data[ i ][ 1 ].push( a );
+                                               data[ i ][ 1 ].push( a.element 
);
                                        }
                                }
                        },
                        {
                                msg: 'Autolink valid RFC',
                                html: '<p><b>RFC 1234 xyz</b></p>',
-                               range: new ve.Range( 1, 10 ),
+                               rangeOrSelection: new ve.Range( 1, 10 ),
                                method: 'autolinkMagicLink',
-                               expectedRange: new ve.Range( 4, 4 ),
-                               expectedRangeAfterUndo: new ve.Range( 10, 10 ),
-                               expectedData: function ( data /*, 
makeAnnotation */ ) {
+                               expectedRangeOrSelection: new ve.Range( 4, 4 ),
+                               expectedOriginalRangeOrSelection: new ve.Range( 
10 ),
+                               expectedData: function ( data ) {
                                        data.splice( 1, 8, {
                                                type: 'link/mwMagic',
                                                attributes: {
@@ -77,26 +44,27 @@
                                                type: '/link/mwMagic',
                                                annotations: data[ 1 ][ 1 ]
                                        } );
-                               }
+                               },
+                               undo: true
                        },
                        {
                                msg: 'Don\'t autolink invalid RFC',
                                html: '<p><b>RFC 123x xyz</b></p>',
-                               range: new ve.Range( 1, 10 ),
+                               rangeOrSelection: new ve.Range( 1, 10 ),
                                method: 'autolinkMagicLink',
-                               expectedRange: new ve.Range( 1, 10 ),
-                               expectedData: function ( /*data, 
makeAnnotation*/ ) {
+                               expectedRangeOrSelection: new ve.Range( 1, 10 ),
+                               expectedData: function () {
                                        /* no change, no link */
                                }
                        },
                        {
                                msg: 'Autolink valid PMID',
                                html: '<p><b>PMID 1234 xyz</b></p>',
-                               range: new ve.Range( 1, 11 ),
+                               rangeOrSelection: new ve.Range( 1, 11 ),
                                method: 'autolinkMagicLink',
-                               expectedRange: new ve.Range( 4, 4 ),
-                               expectedRangeAfterUndo: new ve.Range( 11, 11 ),
-                               expectedData: function ( data /*, 
makeAnnotation */ ) {
+                               expectedRangeOrSelection: new ve.Range( 4 ),
+                               expectedOriginalRangeOrSelection: new ve.Range( 
11 ),
+                               expectedData: function ( data ) {
                                        data.splice( 1, 9, {
                                                type: 'link/mwMagic',
                                                attributes: {
@@ -107,26 +75,27 @@
                                                type: '/link/mwMagic',
                                                annotations: data[ 1 ][ 1 ]
                                        } );
-                               }
+                               },
+                               undo: true
                        },
                        {
                                msg: 'Don\'t autolink invalid PMID',
                                html: '<p><b>PMID 123x xyz</b></p>',
-                               range: new ve.Range( 1, 11 ),
+                               rangeOrSelection: new ve.Range( 1, 11 ),
                                method: 'autolinkMagicLink',
-                               expectedRange: new ve.Range( 1, 11 ),
-                               expectedData: function ( /*data, 
makeAnnotation*/ ) {
+                               expectedRangeOrSelection: new ve.Range( 1, 11 ),
+                               expectedData: function () {
                                        /* no change, no link */
                                }
                        },
                        {
                                msg: 'Autolink valid ISBN',
                                html: '<p><b>ISBN 978-0596517748 xyz</b></p>',
-                               range: new ve.Range( 1, 21 ),
+                               rangeOrSelection: new ve.Range( 1, 21 ),
                                method: 'autolinkMagicLink',
-                               expectedRange: new ve.Range( 4, 4 ),
-                               expectedRangeAfterUndo: new ve.Range( 21, 21 ),
-                               expectedData: function ( data /*, 
makeAnnotation */ ) {
+                               expectedRangeOrSelection: new ve.Range( 4 ),
+                               expectedOriginalRangeOrSelection: new ve.Range( 
21 ),
+                               expectedData: function ( data ) {
                                        data.splice( 1, 19, {
                                                type: 'link/mwMagic',
                                                attributes: {
@@ -137,22 +106,31 @@
                                                type: '/link/mwMagic',
                                                annotations: data[ 1 ][ 1 ]
                                        } );
-                               }
+                               },
+                               undo: true
                        },
                        {
                                msg: 'Don\'t autolink invalid ISBN',
                                html: '<p><b>ISBN 978-059651774 xyz</b></p>',
-                               range: new ve.Range( 1, 20 ),
+                               rangeOrSelection: new ve.Range( 1, 20 ),
                                method: 'autolinkMagicLink',
-                               expectedRange: new ve.Range( 1, 20 ),
-                               expectedData: function ( /*data, 
makeAnnotation*/ ) {
+                               expectedRangeOrSelection: new ve.Range( 1, 20 ),
+                               expectedData: function () {
                                        /* no change, no link */
                                }
                        }
                ];
 
-       QUnit.expect( cases.length * 5 );
+       QUnit.expect( ve.test.utils.countActionTests( cases ) );
        for ( i = 0; i < cases.length; i++ ) {
-               runMWAutolinkTest( assert, cases[ i ].html, cases[ i ].method, 
cases[ i ].range, cases[ i ].expectedRange, cases[ i ].expectedRangeAfterUndo, 
cases[ i ].expectedData, cases[ i ].expectedOriginalData, cases[ i ].msg );
+               ve.test.utils.runActionTest(
+                       '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
+                       }
+               );
        }
 } );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ice209791f323c19743c192c5f864b2f8202b5ca9
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/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