From 4e6a6b4871e6895a6b7dc1f634b189e6dd6ccb4f Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Wed, 6 Jun 2018 11:44:23 +0100 Subject: [PATCH] build: Enable qunit/no-assert-equal and enforce This is the equivalent of the '===' rule ("eqeqeq") in eslint core. Change-Id: I1e6ea8bc1e86c6629ebe938f1b4a6bd288bcfcf7 --- tests/qunit/.eslintrc.json | 1 + tests/qunit/data/generateJqueryMsgData.php | 2 +- tests/qunit/data/testrunner.js | 20 +-- .../jquery/jquery.accessKeyLabel.test.js | 14 +- .../resources/jquery/jquery.colorUtil.test.js | 4 +- .../resources/jquery/jquery.hidpi.test.js | 32 ++-- .../jquery/jquery.highlightText.test.js | 2 +- .../jquery/jquery.lengthLimit.test.js | 2 +- .../jquery/jquery.makeCollapsible.test.js | 26 +-- .../jquery/jquery.tablesorter.test.js | 56 +++--- .../jquery/jquery.textSelection.test.js | 8 +- .../mediawiki.api.category.test.js | 16 +- .../mediawiki.api/mediawiki.api.edit.test.js | 12 +- .../mediawiki.api/mediawiki.api.parse.test.js | 6 +- .../mediawiki.api/mediawiki.api.test.js | 58 +++---- .../mediawiki.api/mediawiki.api.watch.test.js | 8 +- .../mediawiki.rcfilters/UriProcessor.test.js | 10 +- .../mediawiki.rcfilters/dm.FilterItem.test.js | 36 ++-- .../dm.FiltersViewModel.test.js | 14 +- .../dm.SavedQueriesModel.test.js | 6 +- .../dm.SavedQueryItemModel.test.js | 14 +- .../mediawiki.widgets.APIResultsQueue.test.js | 32 ++-- .../mediawiki/mediawiki.RegExp.test.js | 2 +- .../mediawiki.String.byteLength.test.js | 10 +- .../mediawiki.String.trimByteLength.test.js | 2 +- .../mediawiki/mediawiki.Title.test.js | 132 +++++++-------- .../resources/mediawiki/mediawiki.Uri.test.js | 80 ++++----- .../mediawiki/mediawiki.cldr.test.js | 2 +- .../mediawiki/mediawiki.experiments.test.js | 8 +- .../mediawiki/mediawiki.html.test.js | 26 +-- .../mediawiki/mediawiki.inspect.test.js | 8 +- .../mediawiki/mediawiki.jqueryMsg.test.js | 160 +++++++++--------- .../mediawiki/mediawiki.jscompat.test.js | 4 +- .../mediawiki/mediawiki.language.test.js | 63 +++---- .../mediawiki/mediawiki.loader.test.js | 36 ++-- .../resources/mediawiki/mediawiki.test.js | 98 +++++------ .../mediawiki/mediawiki.user.test.js | 26 +-- .../mediawiki/mediawiki.util.test.js | 66 ++++---- 38 files changed, 552 insertions(+), 550 deletions(-) diff --git a/tests/qunit/.eslintrc.json b/tests/qunit/.eslintrc.json index b7412044a6..e6d251146b 100644 --- a/tests/qunit/.eslintrc.json +++ b/tests/qunit/.eslintrc.json @@ -14,6 +14,7 @@ "operator-linebreak": 0, "quote-props": [ "error", "as-needed" ], "valid-jsdoc": 0, + "qunit/no-assert-equal": "error", "qunit/no-early-return": "error", "qunit/no-negated-ok": "error", "qunit/require-expect": 0, diff --git a/tests/qunit/data/generateJqueryMsgData.php b/tests/qunit/data/generateJqueryMsgData.php index e4f87f81c7..a85e41a012 100644 --- a/tests/qunit/data/generateJqueryMsgData.php +++ b/tests/qunit/data/generateJqueryMsgData.php @@ -22,7 +22,7 @@ QUnit.stop(); getMwLanguage( test.lang, function ( langClass ) { var parser = new mw.jqueryMsg.Parser( { language: langClass } ); - assert.equal( + assert.strictEqual( parser.parse( test.key, test.args ).html(), test.result, test.name diff --git a/tests/qunit/data/testrunner.js b/tests/qunit/data/testrunner.js index 9074aba4ed..d8972ab389 100644 --- a/tests/qunit/data/testrunner.js +++ b/tests/qunit/data/testrunner.js @@ -491,17 +491,17 @@ } ) ); QUnit.test( 'Setup', function ( assert ) { - assert.equal( mw.html.escape( 'foo' ), 'mocked', 'setup() callback was ran.' ); - assert.equal( mw.config.get( 'testVar' ), 'foo', 'config object applied' ); - assert.equal( mw.messages.get( 'testMsg' ), 'Foo.', 'messages object applied' ); + assert.strictEqual( mw.html.escape( 'foo' ), 'mocked', 'setup() callback was ran.' ); + assert.strictEqual( mw.config.get( 'testVar' ), 'foo', 'config object applied' ); + assert.strictEqual( mw.messages.get( 'testMsg' ), 'Foo.', 'messages object applied' ); mw.config.set( 'testVar', 'bar' ); mw.messages.set( 'testMsg', 'Bar.' ); } ); QUnit.test( 'Teardown', function ( assert ) { - assert.equal( mw.config.get( 'testVar' ), 'foo', 'config object restored and re-applied after test()' ); - assert.equal( mw.messages.get( 'testMsg' ), 'Foo.', 'messages object restored and re-applied after test()' ); + assert.strictEqual( mw.config.get( 'testVar' ), 'foo', 'config object restored and re-applied after test()' ); + assert.strictEqual( mw.messages.get( 'testMsg' ), 'Foo.', 'messages object restored and re-applied after test()' ); } ); QUnit.test( 'Loader status', function ( assert ) { @@ -575,9 +575,9 @@ QUnit.module( 'testrunner-after', QUnit.newMwEnvironment() ); QUnit.test( 'Teardown', function ( assert ) { - assert.equal( mw.html.escape( '<' ), '<', 'teardown() callback was ran.' ); - assert.equal( mw.config.get( 'testVar' ), null, 'config object restored to live in next module()' ); - assert.equal( mw.messages.get( 'testMsg' ), null, 'messages object restored to live in next module()' ); + assert.strictEqual( mw.html.escape( '<' ), '<', 'teardown() callback was ran.' ); + assert.strictEqual( mw.config.get( 'testVar' ), null, 'config object restored to live in next module()' ); + assert.strictEqual( mw.messages.get( 'testMsg' ), null, 'messages object restored to live in next module()' ); } ); QUnit.module( 'testrunner-each', { @@ -593,7 +593,7 @@ mw.html = null; } ); QUnit.test( 'afterEach', function ( assert ) { - assert.equal( mw.html.escape( '<' ), '<', 'afterEach() ran' ); + assert.strictEqual( mw.html.escape( '<' ), '<', 'afterEach() ran' ); } ); QUnit.module( 'testrunner-each-compat', { @@ -611,7 +611,7 @@ mw.html = null; } ); QUnit.test( 'teardown', function ( assert ) { - assert.equal( mw.html.escape( '<' ), '<', 'teardown() ran' ); + assert.strictEqual( mw.html.escape( '<' ), '<', 'teardown() ran' ); } ); // Regression test for 'this.sandbox undefined' error, fixed by diff --git a/tests/qunit/suites/resources/jquery/jquery.accessKeyLabel.test.js b/tests/qunit/suites/resources/jquery/jquery.accessKeyLabel.test.js index e4b615726b..c064275e65 100644 --- a/tests/qunit/suites/resources/jquery/jquery.accessKeyLabel.test.js +++ b/tests/qunit/suites/resources/jquery/jquery.accessKeyLabel.test.js @@ -51,7 +51,7 @@ QUnit.test( 'getAccessKeyPrefix', function ( assert ) { var i; for ( i = 0; i < getAccessKeyPrefixTestData.length; i++ ) { - assert.equal( $.fn.updateTooltipAccessKeys.getAccessKeyPrefix( { + assert.strictEqual( $.fn.updateTooltipAccessKeys.getAccessKeyPrefix( { userAgent: getAccessKeyPrefixTestData[ i ][ 0 ], platform: getAccessKeyPrefixTestData[ i ][ 1 ] } ), getAccessKeyPrefixTestData[ i ][ 2 ], 'Correct prefix for ' + getAccessKeyPrefixTestData[ i ][ 0 ] ); @@ -75,7 +75,7 @@ $input = $( makeInput( oldTitle ) ); $( '#qunit-fixture' ).append( $input ); newTitle = $input.updateTooltipAccessKeys().prop( 'title' ); - assert.equal( newTitle, 'Title', 'title="' + oldTitle + '"' ); + assert.strictEqual( newTitle, 'Title', 'title="' + oldTitle + '"' ); } } ); @@ -87,7 +87,7 @@ $input = $( makeInput( oldTitle, 'a' ) ); $( '#qunit-fixture' ).append( $input ); newTitle = $input.updateTooltipAccessKeys().prop( 'title' ); - assert.equal( newTitle, 'Title [test-a]', 'title="' + oldTitle + '"' ); + assert.strictEqual( newTitle, 'Title [test-a]', 'title="' + oldTitle + '"' ); } $.fn.updateTooltipAccessKeys.setTestMode( false ); } ); @@ -100,8 +100,8 @@ $label = $( '#qunit-fixture label' ); $input = $( '#qunit-fixture input' ); $input.updateTooltipAccessKeys(); - assert.equal( $input.prop( 'title' ), '', 'No title attribute added to input element.' ); - assert.equal( $label.prop( 'title' ), 'Title [test-a]', 'title updated for associated label element.' ); + assert.strictEqual( $input.prop( 'title' ), '', 'No title attribute added to input element.' ); + assert.strictEqual( $label.prop( 'title' ), 'Title [test-a]', 'title updated for associated label element.' ); $.fn.updateTooltipAccessKeys.setTestMode( false ); } ); @@ -113,8 +113,8 @@ $label = $( '#qunit-fixture label' ); $input = $( '#qunit-fixture input' ); $input.updateTooltipAccessKeys(); - assert.equal( $input.prop( 'title' ), '', 'No title attribute added to input element.' ); - assert.equal( $label.prop( 'title' ), 'Title [test-a]', 'title updated for associated label element.' ); + assert.strictEqual( $input.prop( 'title' ), '', 'No title attribute added to input element.' ); + assert.strictEqual( $label.prop( 'title' ), 'Title [test-a]', 'title updated for associated label element.' ); $.fn.updateTooltipAccessKeys.setTestMode( false ); } ); diff --git a/tests/qunit/suites/resources/jquery/jquery.colorUtil.test.js b/tests/qunit/suites/resources/jquery/jquery.colorUtil.test.js index d6208e9128..bd6e7b2f01 100644 --- a/tests/qunit/suites/resources/jquery/jquery.colorUtil.test.js +++ b/tests/qunit/suites/resources/jquery/jquery.colorUtil.test.js @@ -55,9 +55,9 @@ QUnit.test( 'getColorBrightness', function ( assert ) { var a, b; a = $.colorUtil.getColorBrightness( 'red', +0.1 ); - assert.equal( a, 'rgb(255,50,50)', 'Start with named color "red", brighten 10%' ); + assert.strictEqual( a, 'rgb(255,50,50)', 'Start with named color "red", brighten 10%' ); b = $.colorUtil.getColorBrightness( 'rgb(200,50,50)', -0.2 ); - assert.equal( b, 'rgb(118,29,29)', 'Start with rgb string "rgb(200,50,50)", darken 20%' ); + assert.strictEqual( b, 'rgb(118,29,29)', 'Start with rgb string "rgb(200,50,50)", darken 20%' ); } ); }( jQuery ) ); diff --git a/tests/qunit/suites/resources/jquery/jquery.hidpi.test.js b/tests/qunit/suites/resources/jquery/jquery.hidpi.test.js index 6a265eb591..3f17ca51d4 100644 --- a/tests/qunit/suites/resources/jquery/jquery.hidpi.test.js +++ b/tests/qunit/suites/resources/jquery/jquery.hidpi.test.js @@ -3,36 +3,36 @@ QUnit.test( 'devicePixelRatio', function ( assert ) { var devicePixelRatio = $.devicePixelRatio(); - assert.equal( typeof devicePixelRatio, 'number', '$.devicePixelRatio() returns a number' ); + assert.strictEqual( typeof devicePixelRatio, 'number', '$.devicePixelRatio() returns a number' ); } ); QUnit.test( 'bracketedDevicePixelRatio', function ( assert ) { var ratio = $.bracketedDevicePixelRatio(); - assert.equal( typeof ratio, 'number', '$.bracketedDevicePixelRatio() returns a number' ); + assert.strictEqual( typeof ratio, 'number', '$.bracketedDevicePixelRatio() returns a number' ); } ); QUnit.test( 'bracketDevicePixelRatio', function ( assert ) { - assert.equal( $.bracketDevicePixelRatio( 0.75 ), 1, '0.75 gives 1' ); - assert.equal( $.bracketDevicePixelRatio( 1 ), 1, '1 gives 1' ); - assert.equal( $.bracketDevicePixelRatio( 1.25 ), 1.5, '1.25 gives 1.5' ); - assert.equal( $.bracketDevicePixelRatio( 1.5 ), 1.5, '1.5 gives 1.5' ); - assert.equal( $.bracketDevicePixelRatio( 1.75 ), 2, '1.75 gives 2' ); - assert.equal( $.bracketDevicePixelRatio( 2 ), 2, '2 gives 2' ); - assert.equal( $.bracketDevicePixelRatio( 2.5 ), 2, '2.5 gives 2' ); - assert.equal( $.bracketDevicePixelRatio( 3 ), 2, '3 gives 2' ); + assert.strictEqual( $.bracketDevicePixelRatio( 0.75 ), 1, '0.75 gives 1' ); + assert.strictEqual( $.bracketDevicePixelRatio( 1 ), 1, '1 gives 1' ); + assert.strictEqual( $.bracketDevicePixelRatio( 1.25 ), 1.5, '1.25 gives 1.5' ); + assert.strictEqual( $.bracketDevicePixelRatio( 1.5 ), 1.5, '1.5 gives 1.5' ); + assert.strictEqual( $.bracketDevicePixelRatio( 1.75 ), 2, '1.75 gives 2' ); + assert.strictEqual( $.bracketDevicePixelRatio( 2 ), 2, '2 gives 2' ); + assert.strictEqual( $.bracketDevicePixelRatio( 2.5 ), 2, '2.5 gives 2' ); + assert.strictEqual( $.bracketDevicePixelRatio( 3 ), 2, '3 gives 2' ); } ); QUnit.test( 'matchSrcSet', function ( assert ) { var srcset = 'onefive.png 1.5x, two.png 2x'; // Nice exact matches - assert.equal( $.matchSrcSet( 1, srcset ), null, '1.0 gives no match' ); - assert.equal( $.matchSrcSet( 1.5, srcset ), 'onefive.png', '1.5 gives match' ); - assert.equal( $.matchSrcSet( 2, srcset ), 'two.png', '2 gives match' ); + assert.strictEqual( $.matchSrcSet( 1, srcset ), null, '1.0 gives no match' ); + assert.strictEqual( $.matchSrcSet( 1.5, srcset ), 'onefive.png', '1.5 gives match' ); + assert.strictEqual( $.matchSrcSet( 2, srcset ), 'two.png', '2 gives match' ); // Non-exact matches; should return the next-biggest specified - assert.equal( $.matchSrcSet( 1.25, srcset ), null, '1.25 gives no match' ); - assert.equal( $.matchSrcSet( 1.75, srcset ), 'onefive.png', '1.75 gives match to 1.5' ); - assert.equal( $.matchSrcSet( 2.25, srcset ), 'two.png', '2.25 gives match to 2' ); + assert.strictEqual( $.matchSrcSet( 1.25, srcset ), null, '1.25 gives no match' ); + assert.strictEqual( $.matchSrcSet( 1.75, srcset ), 'onefive.png', '1.75 gives match to 1.5' ); + assert.strictEqual( $.matchSrcSet( 2.25, srcset ), 'two.png', '2.25 gives match to 2' ); } ); }( jQuery ) ); diff --git a/tests/qunit/suites/resources/jquery/jquery.highlightText.test.js b/tests/qunit/suites/resources/jquery/jquery.highlightText.test.js index 277ba3f233..0e34e34bfb 100644 --- a/tests/qunit/suites/resources/jquery/jquery.highlightText.test.js +++ b/tests/qunit/suites/resources/jquery/jquery.highlightText.test.js @@ -224,7 +224,7 @@ cases.forEach( function ( item ) { $fixture = $( '

' ).text( item.text ).highlightText( item.highlight ); - assert.equal( + assert.strictEqual( $fixture.html(), // Re-parse to normalize $( '

' ).html( item.expected ).html(), diff --git a/tests/qunit/suites/resources/jquery/jquery.lengthLimit.test.js b/tests/qunit/suites/resources/jquery/jquery.lengthLimit.test.js index 7117d1f420..9d4f8ddf82 100644 --- a/tests/qunit/suites/resources/jquery/jquery.lengthLimit.test.js +++ b/tests/qunit/suites/resources/jquery/jquery.lengthLimit.test.js @@ -55,7 +55,7 @@ // Simulate pressing keys for each of the sample characters addChars( opt.$input, opt.sample ); - assert.equal( + assert.strictEqual( opt.$input.val(), opt.expected, 'New value matches the expected string' diff --git a/tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js b/tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js index d3f65335d3..df29ee6ced 100644 --- a/tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js +++ b/tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js @@ -50,8 +50,8 @@ $content = $collapsible.find( '.mw-collapsible-content' ), $toggle = $collapsible.find( '.mw-collapsible-toggle' ); - assert.equal( $content.length, 1, 'content is present' ); - assert.equal( $content.find( $toggle ).length, 0, 'toggle is not a descendant of content' ); + assert.strictEqual( $content.length, 1, 'content is present' ); + assert.strictEqual( $content.find( $toggle ).length, 0, 'toggle is not a descendant of content' ); assert.assertTrue( $content.is( ':visible' ), 'content is visible' ); @@ -80,7 +80,7 @@ $contentRow = $collapsible.find( 'tr:last' ), $toggle = $headerRow.find( 'td:last .mw-collapsible-toggle' ); - assert.equal( $toggle.length, 1, 'toggle is added to last cell of first row' ); + assert.strictEqual( $toggle.length, 1, 'toggle is added to last cell of first row' ); assert.assertTrue( $headerRow.is( ':visible' ), 'headerRow is visible' ); assert.assertTrue( $contentRow.is( ':visible' ), 'contentRow is visible' ); @@ -106,7 +106,7 @@ $contentRow = $collapsible.find( 'tr:last' ), $toggle = $caption.find( '.mw-collapsible-toggle' ); - assert.equal( $toggle.length, 1, 'toggle is added to the end of the caption' ); + assert.strictEqual( $toggle.length, 1, 'toggle is added to the end of the caption' ); assert.assertTrue( $caption.is( ':visible' ), 'caption is visible' ); assert.assertTrue( $headerRow.is( ':visible' ), 'headerRow is visible' ); @@ -162,7 +162,7 @@ $contentItem = $collapsible.find( 'li:last' ), $toggle = $toggleItem.find( '.mw-collapsible-toggle' ); - assert.equal( $toggle.length, 1, 'toggle is present, added inside new zeroth list item' ); + assert.strictEqual( $toggle.length, 1, 'toggle is present, added inside new zeroth list item' ); assert.assertTrue( $toggleItem.is( ':visible' ), 'toggleItem is visible' ); assert.assertTrue( $contentItem.is( ':visible' ), 'contentItem is visible' ); @@ -209,7 +209,7 @@ '

' + loremIpsum + '
' ); - assert.equal( $collapsible.data( 'mw-made-collapsible' ), true, 'mw-made-collapsible data present' ); + assert.strictEqual( $collapsible.data( 'mw-made-collapsible' ), true, 'mw-made-collapsible data present' ); } ); QUnit.test( 'mw-collapsible added when missing', function ( assert ) { @@ -306,10 +306,10 @@ ), $toggleText = $collapsible.find( '.mw-collapsible-text' ); - assert.equal( $toggleText.text(), 'Collapse me!', 'data-collapsetext is respected' ); + assert.strictEqual( $toggleText.text(), 'Collapse me!', 'data-collapsetext is respected' ); $collapsible.on( 'afterCollapse.mw-collapsible', function () { - assert.equal( $toggleText.text(), 'Expand me!', 'data-expandtext is respected' ); + assert.strictEqual( $toggleText.text(), 'Expand me!', 'data-expandtext is respected' ); } ); $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' ); @@ -322,10 +322,10 @@ ), $toggleText = $collapsible.find( '.mw-collapsible-text' ); - assert.equal( $toggleText.text(), 'Collapse me!', 'options.collapseText is respected' ); + assert.strictEqual( $toggleText.text(), 'Collapse me!', 'options.collapseText is respected' ); $collapsible.on( 'afterCollapse.mw-collapsible', function () { - assert.equal( $toggleText.text(), 'Expand me!', 'options.expandText is respected' ); + assert.strictEqual( $toggleText.text(), 'Expand me!', 'options.expandText is respected' ); } ); $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' ); @@ -343,13 +343,13 @@ ), $toggleText = $collapsible.find( '.mw-collapsible-text' ); - assert.equal( $toggleText.text(), 'Toggle', 'predefined text remains' ); + assert.strictEqual( $toggleText.text(), 'Toggle', 'predefined text remains' ); $collapsible.on( 'afterCollapse.mw-collapsible', function () { - assert.equal( $toggleText.text(), 'Show', 'predefined text is toggled' ); + assert.strictEqual( $toggleText.text(), 'Show', 'predefined text is toggled' ); $collapsible.on( 'afterExpand.mw-collapsible', function () { - assert.equal( $toggleText.text(), 'Hide', 'predefined text is toggled back' ); + assert.strictEqual( $toggleText.text(), 'Hide', 'predefined text is toggled back' ); } ); $collapsible.find( '.mw-collapsible-toggle' ).trigger( 'click' ); diff --git a/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js b/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js index 495ce74c4d..69a5cecbd1 100644 --- a/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js +++ b/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js @@ -514,19 +514,19 @@ ); $table.data( 'tablesorter' ).sort( [] ); - assert.equal( + assert.strictEqual( $table.find( 'th.headerSortUp' ).length + $table.find( 'th.headerSortDown' ).length, 0, 'No sort specific sort classes addign to header cells' ); - assert.equal( + assert.strictEqual( $table.find( 'th' ).first().attr( 'title' ), mw.msg( 'sort-ascending' ), 'First header cell has default title' ); - assert.equal( + assert.strictEqual( $table.find( 'th' ).first().attr( 'title' ), $table.find( 'th' ).last().attr( 'title' ), 'Both header cells\' titles match' @@ -607,13 +607,13 @@ $cell = $table.find( 'tr:eq(0) > th:eq(0)' ); $table.find( 'tr:eq(0) > th:eq(1)' ).click(); - assert.equal( + assert.strictEqual( $cell.hasClass( 'headerSortUp' ) || $cell.hasClass( 'headerSortDown' ), false, 'after sort: no class headerSortUp or headerSortDown' ); - assert.equal( + assert.strictEqual( $cell.attr( 'title' ), undefined, 'after sort: no title tag added' @@ -744,7 +744,7 @@ $table.tablesorter(); - assert.equal( + assert.strictEqual( $table.find( 'tr:eq(2) td:eq(1)' ).prop( 'rowSpan' ), 3, 'Rowspan not exploded' @@ -867,7 +867,7 @@ $table.tablesorter(); $table.find( '.headerSort:eq(0)' ).click(); - assert.equal( + assert.strictEqual( $table.data( 'tablesorter' ).config.parsers[ 0 ].id, 'number', 'Correctly detected column content skipping sortbottom' @@ -888,7 +888,7 @@ ); $table.tablesorter(); - assert.equal( + assert.strictEqual( $table.children().get( 0 ).nodeName, 'CAPTION', 'First element after must be (T34047)' @@ -1090,12 +1090,12 @@ ); $table.tablesorter(); - assert.equal( + assert.strictEqual( $table.find( '> thead:eq(0) > tr > th.headerSort' ).length, 1, 'Child tables inside a headercell should not interfere with sortable headers (T34888)' ); - assert.equal( + assert.strictEqual( $( '#mw-bug-32888-2' ).find( 'th.headerSort' ).length, 0, 'The headers of child tables inside a headercell should not be sortable themselves (T34888)' @@ -1151,7 +1151,7 @@ ); $table.tablesorter().find( '.headerSort:eq(0)' ).click(); - assert.equal( + assert.strictEqual( $table.find( 'td' ).first().text(), '1', 'Applied correct sorting order' @@ -1172,7 +1172,7 @@ ); $table.tablesorter().find( '.headerSort:eq(0)' ).click(); - assert.equal( + assert.strictEqual( $table.find( 'td' ).text(), 'CDEFCCA', 'Applied correct sorting order' @@ -1191,7 +1191,7 @@ ); $table.tablesorter().find( '.headerSort:eq(0)' ).click(); - assert.equal( + assert.strictEqual( $table.find( 'td' ).text(), '4517', 'Applied correct sorting order' @@ -1211,17 +1211,17 @@ ); $table.tablesorter(); - assert.equal( + assert.strictEqual( $table.find( '#A1' ).attr( 'class' ), 'headerSort', 'The first column of the first row should be sortable' ); - assert.equal( + assert.strictEqual( $table.find( '#B2b' ).attr( 'class' ), 'headerSort', 'The th element of the 2nd row of the 2nd column should be sortable' ); - assert.equal( + assert.strictEqual( $table.find( '#C2b' ).attr( 'class' ), 'headerSort', 'The th element of the 2nd row of the 3rd column should be sortable' @@ -1241,12 +1241,12 @@ ); $table.tablesorter(); - assert.equal( + assert.strictEqual( $table.find( '#A1' ).attr( 'class' ), 'headerSort', 'The first column of the first row should be sortable' ); - assert.equal( + assert.strictEqual( $table.find( '#B2b' ).attr( 'class' ), 'headerSort', 'The th element of the 2nd row of the 2nd column should be sortable' @@ -1265,11 +1265,11 @@ '' ); $table.tablesorter(); - assert.equal( $table.find( '#A2' ).data( 'headerIndex' ), + assert.strictEqual( $table.find( '#A2' ).data( 'headerIndex' ), undefined, 'A2 should not be a sort header' ); - assert.equal( $table.find( '#C1' ).data( 'headerIndex' ), + assert.strictEqual( $table.find( '#C1' ).data( 'headerIndex' ), 2, 'C1 should be a sort header' ); @@ -1286,11 +1286,11 @@ '' ); $table.tablesorter(); - assert.equal( $table.find( '#C2' ).data( 'headerIndex' ), + assert.strictEqual( $table.find( '#C2' ).data( 'headerIndex' ), 2, 'C2 should be a sort header' ); - assert.equal( $table.find( '#C1' ).data( 'headerIndex' ), + assert.strictEqual( $table.find( '#C1' ).data( 'headerIndex' ), undefined, 'C1 should not be a sort header' ); @@ -1323,7 +1323,7 @@ '' ); $table.tablesorter(); - assert.equal( $table.find( 'tr:eq(1) th:eq(1)' ).data( 'headerIndex' ), + assert.strictEqual( $table.find( 'tr:eq(1) th:eq(1)' ).data( 'headerIndex' ), 2, 'Incorrect index of sort header' ); @@ -1446,19 +1446,19 @@ parsers = $table.data( 'tablesorter' ).config.parsers; - assert.equal( + assert.strictEqual( parsers.length, 2, 'detectParserForColumn() detect 2 parsers' ); - assert.equal( + assert.strictEqual( parsers[ 1 ].id, 'number', 'detectParserForColumn() detect parser.id "number" for second column' ); - assert.equal( + assert.strictEqual( parsers[ 1 ].format( $table.find( 'tbody > tr > td:eq(1)' ).text() ), -Infinity, 'empty cell is sorted as number -Infinity' @@ -1493,7 +1493,7 @@ ); parsers = $table.data( 'tablesorter' ).config.parsers; - assert.equal( + assert.strictEqual( parsers[ 1 ].id, 'number', 'detectParserForColumn() detect parser.id "number" for second column' @@ -1521,7 +1521,7 @@ ); parsers = $table.data( 'tablesorter' ).config.parsers; - assert.equal( + assert.strictEqual( parsers[ 0 ].id, 'number', 'detectParserForColumn() detect parser.id "number"' diff --git a/tests/qunit/suites/resources/jquery/jquery.textSelection.test.js b/tests/qunit/suites/resources/jquery/jquery.textSelection.test.js index 1e183fbbad..d598586bab 100644 --- a/tests/qunit/suites/resources/jquery/jquery.textSelection.test.js +++ b/tests/qunit/suites/resources/jquery/jquery.textSelection.test.js @@ -75,11 +75,11 @@ text = $textarea.textSelection( 'getContents' ).replace( /\r\n/g, '\n' ); - assert.equal( text, opt.after.text, 'Checking full text after encapsulation' ); + assert.strictEqual( text, opt.after.text, 'Checking full text after encapsulation' ); if ( opt.after.selected !== null ) { selected = $textarea.textSelection( 'getSelection' ); - assert.equal( selected, opt.after.selected, 'Checking selected text after encapsulation.' ); + assert.strictEqual( selected, opt.after.selected, 'Checking selected text after encapsulation.' ); } } ); @@ -224,9 +224,9 @@ function among( actual, expected, message ) { if ( Array.isArray( expected ) ) { - assert.equal( expected.indexOf( actual ) !== -1, true, message + ' (got ' + actual + '; expected one of ' + expected.join( ', ' ) + ')' ); + assert.strictEqual( expected.indexOf( actual ) !== -1, true, message + ' (got ' + actual + '; expected one of ' + expected.join( ', ' ) + ')' ); } else { - assert.equal( actual, expected, message ); + assert.strictEqual( actual, expected, message ); } } diff --git a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.category.test.js b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.category.test.js index 50fa6d1509..fdf90dde39 100644 --- a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.category.test.js +++ b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.category.test.js @@ -30,7 +30,7 @@ '{"batchcomplete":true}' ] ); return new mw.Api().isCategory( '' ).then( function ( response ) { - assert.equal( response, false ); + assert.strictEqual( response, false ); } ); } ); @@ -41,7 +41,7 @@ '{"batchcomplete":true,"query":{"normalized":[{"fromencoded":false,"from":"#","to":""}]}}' ] ); return new mw.Api().isCategory( '#' ).then( function ( response ) { - assert.equal( response, false ); + assert.strictEqual( response, false ); } ); } ); @@ -52,7 +52,7 @@ '{"batchcomplete":true,"query":{"interwiki":[{"title":"mw:","iw":"mw"}]}}' ] ); return new mw.Api().isCategory( 'mw:' ).then( function ( response ) { - assert.equal( response, false ); + assert.strictEqual( response, false ); } ); } ); @@ -63,7 +63,7 @@ '{"batchcomplete":true,"query":{"pages":[{"title":"|","invalidreason":"The requested page title contains invalid characters: \\"|\\".","invalid":true}]}}' ] ); return new mw.Api().isCategory( '|' ).then( function ( response ) { - assert.equal( response, false ); + assert.strictEqual( response, false ); } ); } ); @@ -74,7 +74,7 @@ '{"batchcomplete":true}' ] ); return new mw.Api().getCategories( '' ).then( function ( response ) { - assert.equal( response, false ); + assert.strictEqual( response, false ); } ); } ); @@ -85,7 +85,7 @@ '{"batchcomplete":true,"query":{"normalized":[{"fromencoded":false,"from":"#","to":""}]}}' ] ); return new mw.Api().getCategories( '#' ).then( function ( response ) { - assert.equal( response, false ); + assert.strictEqual( response, false ); } ); } ); @@ -96,7 +96,7 @@ '{"batchcomplete":true,"query":{"interwiki":[{"title":"mw:","iw":"mw"}]}}' ] ); return new mw.Api().getCategories( 'mw:' ).then( function ( response ) { - assert.equal( response, false ); + assert.strictEqual( response, false ); } ); } ); @@ -107,7 +107,7 @@ '{"batchcomplete":true,"query":{"pages":[{"title":"|","invalidreason":"The requested page title contains invalid characters: \\"|\\".","invalid":true}]}}' ] ); return new mw.Api().getCategories( '|' ).then( function ( response ) { - assert.equal( response, false ); + assert.strictEqual( response, false ); } ); } ); diff --git a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.edit.test.js b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.edit.test.js index 4ce7c5db03..ff5cb2c93e 100644 --- a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.edit.test.js +++ b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.edit.test.js @@ -43,7 +43,7 @@ return revision.content.replace( 'Sand', 'Box' ); } ) .then( function ( edit ) { - assert.equal( edit.newrevid, 13 ); + assert.strictEqual( edit.newrevid, 13 ); } ); } ); @@ -84,7 +84,7 @@ return revision.content.replace( 'Sand', 'Box' ); } ) .then( function ( edit ) { - assert.equal( edit.newrevid, 13 ); + assert.strictEqual( edit.newrevid, 13 ); } ); } ); @@ -125,7 +125,7 @@ return $.Deferred().resolve( revision.content.replace( 'Async', 'Promise' ) ); } ) .then( function ( edit ) { - assert.equal( edit.newrevid, 23 ); + assert.strictEqual( edit.newrevid, 23 ); } ); } ); @@ -166,7 +166,7 @@ return { text: 'Content', summary: 'Sum' }; } ) .then( function ( edit ) { - assert.equal( edit.newrevid, 33 ); + assert.strictEqual( edit.newrevid, 33 ); } ); } ); @@ -192,7 +192,7 @@ .then( function () { return $.Deferred().reject( 'Unexpected success' ); }, function ( reason ) { - assert.equal( reason, 'invalidtitle' ); + assert.strictEqual( reason, 'invalidtitle' ); } ); } ); @@ -213,7 +213,7 @@ return new mw.Api() .create( 'Sandbox', { summary: 'Load sand particles.' }, 'Sand.' ) .then( function ( page ) { - assert.equal( page.newrevid, 41 ); + assert.strictEqual( page.newrevid, 41 ); } ); } ); diff --git a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js index 74da0098b0..56732275a2 100644 --- a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js +++ b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js @@ -13,7 +13,7 @@ ] ); return new mw.Api().parse( '\'\'\'Hello world\'\'\'' ).done( function ( html ) { - assert.equal( html, '

Hello world

', 'Parse wikitext by string' ); + assert.strictEqual( html, '

Hello world

', 'Parse wikitext by string' ); } ); } ); @@ -28,7 +28,7 @@ return '\'\'\'Hello world\'\'\''; } } ).done( function ( html ) { - assert.equal( html, '

Hello world

', 'Parse wikitext by toString object' ); + assert.strictEqual( html, '

Hello world

', 'Parse wikitext by toString object' ); } ); } ); @@ -39,7 +39,7 @@ ] ); return new mw.Api().parse( new mw.Title( 'Earth' ) ).done( function ( html ) { - assert.equal( html, '

Earth is a planet.

', 'Parse page by Title object' ); + assert.strictEqual( html, '

Earth is a planet.

', 'Parse page by Title object' ); } ); } ); }( mediaWiki ) ); diff --git a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js index 28799e9bf4..5ae0e94e7a 100644 --- a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js +++ b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js @@ -59,7 +59,7 @@ api.get( { action: 'doesntexist' } ) .fail( function ( errorCode ) { - assert.equal( errorCode, 'unknown_action', 'API error should reject the deferred' ); + assert.strictEqual( errorCode, 'unknown_action', 'API error should reject the deferred' ); } ) .always( assert.async() ); } ); @@ -73,7 +73,7 @@ api.get( { action: 'doesntexist' } ) .fail( function ( errorCode ) { - assert.equal( errorCode, 'unknown_action', 'API error should reject the deferred' ); + assert.strictEqual( errorCode, 'unknown_action', 'API error should reject the deferred' ); } ) .always( assert.async() ); } ); @@ -87,7 +87,7 @@ assert.ok( request.requestBody instanceof FormData, 'Request uses FormData body' ); } else { assert.notOk( request.url.match( /action=test/ ), 'Request has no query string' ); - assert.equal( request.requestBody, 'action=test&format=json', 'Request uses query string body' ); + assert.strictEqual( request.requestBody, 'action=test&format=json', 'Request uses query string body' ); } request.respond( 200, { 'Content-Type': 'application/json' }, '[]' ); } ); @@ -99,7 +99,7 @@ var api = new mw.Api(); this.server.respond( function ( request ) { - assert.equal( match( request.url, /test=([^&]+)/ ), 'foo%7Cbar%7Cbaz', 'Pipe-separated value was submitted' ); + assert.strictEqual( match( request.url, /test=([^&]+)/ ), 'foo%7Cbar%7Cbaz', 'Pipe-separated value was submitted' ); request.respond( 200, { 'Content-Type': 'application/json' }, '[]' ); } ); @@ -110,7 +110,7 @@ var api = new mw.Api(); this.server.respond( function ( request ) { - assert.equal( match( request.url, /test=([^&]+)/ ), 'Foo%7CBar', 'Pipe-separated value was submitted' ); + assert.strictEqual( match( request.url, /test=([^&]+)/ ), 'Foo%7CBar', 'Pipe-separated value was submitted' ); request.respond( 200, { 'Content-Type': 'application/json' }, '[]' ); } ); @@ -121,7 +121,7 @@ var api = new mw.Api(); this.server.respond( function ( request ) { - assert.equal( match( request.url, /test=([^&]+)/ ), 'true%7Cfalse%7C%7C%7C0%7C1%2E2', 'Pipe-separated value was submitted' ); + assert.strictEqual( match( request.url, /test=([^&]+)/ ), 'true%7Cfalse%7C%7C%7C0%7C1%2E2', 'Pipe-separated value was submitted' ); request.respond( 200, { 'Content-Type': 'application/json' }, '[]' ); } ); @@ -151,10 +151,10 @@ .then( function ( token ) { assert.ok( token.length, 'Got a token' ); }, function ( err ) { - assert.equal( err, '', 'API error' ); + assert.strictEqual( err, '', 'API error' ); } ) .then( function () { - assert.equal( test.server.requests.length, 0, 'Requests made' ); + assert.strictEqual( test.server.requests.length, 0, 'Requests made' ); } ); } ); @@ -172,23 +172,23 @@ // be added to user.tokens, use a fake one instead. api.getToken( 'testuncached' ) .done( function ( token ) { - assert.equal( token, 'good', 'The token' ); + assert.strictEqual( token, 'good', 'The token' ); } ) .fail( function ( err ) { - assert.equal( err, '', 'API error' ); + assert.strictEqual( err, '', 'API error' ); } ) .always( firstDone ); api.getToken( 'testuncached' ) .done( function ( token ) { - assert.equal( token, 'good', 'The cached token' ); + assert.strictEqual( token, 'good', 'The cached token' ); } ) .fail( function ( err ) { - assert.equal( err, '', 'API error' ); + assert.strictEqual( err, '', 'API error' ); } ) .always( secondDone ); - assert.equal( this.server.requests.length, 1, 'Requests made' ); + assert.strictEqual( this.server.requests.length, 1, 'Requests made' ); } ); QUnit.test( 'getToken() - error', function ( assert ) { @@ -204,12 +204,12 @@ // Don't cache error (T67268) return api.getToken( 'testerror' ) .catch( function ( err ) { - assert.equal( err, 'bite-me', 'Expected error' ); + assert.strictEqual( err, 'bite-me', 'Expected error' ); return api.getToken( 'testerror' ); } ) .then( function ( token ) { - assert.equal( token, 'good', 'The token' ); + assert.strictEqual( token, 'good', 'The token' ); } ); } ); @@ -231,7 +231,7 @@ return api.getToken( 'testnoquery' ) .then( function () { assert.fail( 'Expected response missing a query to be rejected' ); } ) .catch( function ( err, rsp ) { - assert.equal( err, 'query-missing', 'Expected no query error code' ); + assert.strictEqual( err, 'query-missing', 'Expected no query error code' ); assert.deepEqual( rsp, serverRsp ); } ); } ); @@ -248,13 +248,13 @@ // Get a token of a type that is in the legacy map. return api.getToken( 'email' ) .done( function ( token ) { - assert.equal( token, 'csrfgood', 'Token' ); + assert.strictEqual( token, 'csrfgood', 'Token' ); } ) .fail( function ( err ) { - assert.equal( err, '', 'API error' ); + assert.strictEqual( err, '', 'API error' ); } ) .always( function () { - assert.equal( test.server.requests.length, 1, 'Requests made' ); + assert.strictEqual( test.server.requests.length, 1, 'Requests made' ); } ); } ); @@ -275,8 +275,8 @@ return api.getToken( 'testbad' ); } ) .then( function ( token ) { - assert.equal( token, 'good', 'The token' ); - assert.equal( test.server.requests.length, 2, 'Requests made' ); + assert.strictEqual( token, 'good', 'The token' ); + assert.strictEqual( test.server.requests.length, 2, 'Requests made' ); } ); } ); @@ -298,8 +298,8 @@ return api.getToken( 'options' ); } ) .then( function ( token ) { - assert.equal( token, 'goodlegacy', 'The token' ); - assert.equal( test.server.requests.length, 2, 'Request made' ); + assert.strictEqual( token, 'goodlegacy', 'The token' ); + assert.strictEqual( test.server.requests.length, 2, 'Request made' ); } ); } ); @@ -337,11 +337,11 @@ .then( function () { return $.Deferred().reject( 'Unexpected success' ); }, function ( errorCode ) { - assert.equal( errorCode, 'assertuserfailed', 'getToken fails assert' ); + assert.strictEqual( errorCode, 'assertuserfailed', 'getToken fails assert' ); return $.Deferred().resolve(); } ) .then( function () { - assert.equal( test.server.requests.length, 1, 'Requests made' ); + assert.strictEqual( test.server.requests.length, 1, 'Requests made' ); } ); } ); @@ -359,7 +359,7 @@ } } ).then( function () { - assert.equal( test.server.requests[ 0 ].requestHeaders[ 'X-Foo' ], 'Bar', 'Header sent' ); + assert.strictEqual( test.server.requests[ 0 ].requestHeaders[ 'X-Foo' ], 'Bar', 'Header sent' ); return api.postWithToken( 'csrf', { action: 'example' }, @@ -368,9 +368,9 @@ } ); } ).then( function ( data ) { - assert.equal( data.example, 'quux' ); + assert.strictEqual( data.example, 'quux' ); - assert.equal( test.server.requests.length, 2, 'Request made' ); + assert.strictEqual( test.server.requests.length, 2, 'Request made' ); } ); } ); @@ -471,7 +471,7 @@ b: 2 } ); this.api.abort(); - assert.equal( this.requests.length, 2, 'Check both requests triggered' ); + assert.strictEqual( this.requests.length, 2, 'Check both requests triggered' ); this.requests.forEach( function ( request, i ) { assert.ok( request.abort.calledOnce, 'abort request number ' + i ); } ); diff --git a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.watch.test.js b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.watch.test.js index 86414691d8..649bf03edd 100644 --- a/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.watch.test.js +++ b/tests/qunit/suites/resources/mediawiki.api/mediawiki.api.watch.test.js @@ -17,7 +17,7 @@ } ); return new mw.Api().watch( 'Foo' ).done( function ( item ) { - assert.equal( item.title, 'Foo' ); + assert.strictEqual( item.title, 'Foo' ); } ); } ); @@ -34,7 +34,7 @@ } ); return new mw.Api().watch( [ 'Foo' ] ).done( function ( items ) { - assert.equal( items[ 0 ].title, 'Foo' ); + assert.strictEqual( items[ 0 ].title, 'Foo' ); } ); } ); @@ -52,8 +52,8 @@ } ); return new mw.Api().watch( [ 'Foo', 'Bar' ] ).done( function ( items ) { - assert.equal( items[ 0 ].title, 'Foo' ); - assert.equal( items[ 1 ].title, 'Bar' ); + assert.strictEqual( items[ 0 ].title, 'Foo' ); + assert.strictEqual( items[ 1 ].title, 'Bar' ); } ); } ); diff --git a/tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js b/tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js index a6c56a9e9a..79a1b26644 100644 --- a/tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js +++ b/tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js @@ -45,13 +45,13 @@ QUnit.test( 'getVersion', function ( assert ) { var uriProcessor = new mw.rcfilters.UriProcessor( new mw.rcfilters.dm.FiltersViewModel() ); - assert.equal( + assert.strictEqual( uriProcessor.getVersion( { param1: 'foo', urlversion: '2' } ), 2, 'Retrieving the version from the URI query' ); - assert.equal( + assert.strictEqual( uriProcessor.getVersion( { param1: 'foo' } ), 1, 'Getting version 1 if no version is specified' @@ -188,7 +188,7 @@ uriProcessor = new mw.rcfilters.UriProcessor( filtersModel ); cases.forEach( function ( testCase ) { - assert.equal( + assert.strictEqual( uriProcessor.isNewState( testCase.states.curr, testCase.states.new ), testCase.result, testCase.message @@ -231,7 +231,7 @@ uriProcessor = new mw.rcfilters.UriProcessor( filtersModel ); cases.forEach( function ( testCase ) { - assert.equal( + assert.strictEqual( uriProcessor.doesQueryContainRecognizedParams( testCase.query ), testCase.result, testCase.message @@ -341,7 +341,7 @@ } ); - assert.equal( + assert.strictEqual( uriProcessor._normalizeTargetInUri( new mw.Uri( testCase.input ) ).toString(), diff --git a/tests/qunit/suites/resources/mediawiki.rcfilters/dm.FilterItem.test.js b/tests/qunit/suites/resources/mediawiki.rcfilters/dm.FilterItem.test.js index 18a2c9cebe..03ef38751e 100644 --- a/tests/qunit/suites/resources/mediawiki.rcfilters/dm.FilterItem.test.js +++ b/tests/qunit/suites/resources/mediawiki.rcfilters/dm.FilterItem.test.js @@ -8,12 +8,12 @@ group2 = new mw.rcfilters.dm.FilterGroup( 'group2' ); item = new mw.rcfilters.dm.FilterItem( 'filter1', group1 ); - assert.equal( + assert.strictEqual( item.getName(), 'group1__filter1', 'Filter name is retained.' ); - assert.equal( + assert.strictEqual( item.getGroupName(), 'group1', 'Group name is retained.' @@ -27,12 +27,12 @@ description: 'test description' } ); - assert.equal( + assert.strictEqual( item.getLabel(), 'test label', 'Label information is retained.' ); - assert.equal( + assert.strictEqual( item.getLabel(), 'test label', 'Description information is retained.' @@ -45,13 +45,13 @@ selected: true } ); - assert.equal( + assert.strictEqual( item.isSelected(), true, 'Item can be selected in the config.' ); item.toggleSelected( true ); - assert.equal( + assert.strictEqual( item.isSelected(), true, 'Item can toggle its selected state.' @@ -70,24 +70,24 @@ [ 'sub1', 'sub2', 'sub3' ], 'Subset information is retained.' ); - assert.equal( + assert.strictEqual( item.existsInSubset( 'sub1' ), true, 'Specific item exists in subset.' ); - assert.equal( + assert.strictEqual( item.existsInSubset( 'sub10' ), false, 'Specific item does not exists in subset.' ); - assert.equal( + assert.strictEqual( item.isIncluded(), false, 'Initial state of "included" is false.' ); item.toggleIncluded( true ); - assert.equal( + assert.strictEqual( item.isIncluded(), true, 'Item toggles its included state.' @@ -114,24 +114,24 @@ }, 'Conflict information is retained.' ); - assert.equal( + assert.strictEqual( item.existsInConflicts( new mw.rcfilters.dm.FilterItem( 'conflict1', group2 ) ), true, 'Specific item exists in conflicts.' ); - assert.equal( + assert.strictEqual( item.existsInConflicts( new mw.rcfilters.dm.FilterItem( 'conflict10', group1 ) ), false, 'Specific item does not exists in conflicts.' ); - assert.equal( + assert.strictEqual( item.isConflicted(), false, 'Initial state of "conflicted" is false.' ); item.toggleConflicted( true ); - assert.equal( + assert.strictEqual( item.isConflicted(), true, 'Item toggles its conflicted state.' @@ -139,13 +139,13 @@ // Fully covered item = new mw.rcfilters.dm.FilterItem( 'filter1', group1 ); - assert.equal( + assert.strictEqual( item.isFullyCovered(), false, 'Initial state of "full coverage" is false.' ); item.toggleFullyCovered( true ); - assert.equal( + assert.strictEqual( item.isFullyCovered(), true, 'Item toggles its fully coverage state.' @@ -191,7 +191,7 @@ item.setValue( '1' ); - assert.equal( item.getValue(), true, 'Value is coerced to boolean' ); + assert.strictEqual( item.getValue(), true, 'Value is coerced to boolean' ); } ); QUnit.test( 'get/set any value', function ( assert ) { @@ -200,6 +200,6 @@ item.setValue( '1' ); - assert.equal( item.getValue(), '1', 'Value is kept as-is' ); + assert.strictEqual( item.getValue(), '1', 'Value is kept as-is' ); } ); }( mediaWiki ) ); diff --git a/tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js b/tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js index 65ef43c87c..45d591d51e 100644 --- a/tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js +++ b/tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js @@ -1426,14 +1426,14 @@ model.initializeFilters( definition ); - assert.equal( + assert.strictEqual( model.isHighlightEnabled(), false, 'Initially, highlight is disabled.' ); model.toggleHighlight( true ); - assert.equal( + assert.strictEqual( model.isHighlightEnabled(), true, 'Highlight is enabled on toggle.' @@ -1453,14 +1453,14 @@ 'Highlighted items are highlighted.' ); - assert.equal( + assert.strictEqual( model.getItemByName( 'group1__filter1' ).getHighlightColor(), 'color1', 'Item highlight color is set.' ); model.setHighlightColor( 'group1__filter1', 'color1changed' ); - assert.equal( + assert.strictEqual( model.getItemByName( 'group1__filter1' ).getHighlightColor(), 'color1changed', 'Item highlight color is changed on setHighlightColor.' @@ -1549,16 +1549,16 @@ model.initializeFilters( shortFilterDefinition, null ); model.emptyAllFilters(); - assert.equal( model.areVisibleFiltersEmpty(), true ); + assert.strictEqual( model.areVisibleFiltersEmpty(), true ); model.toggleFiltersSelected( { group3__filter5: true // sticky } ); - assert.equal( model.areVisibleFiltersEmpty(), true ); + assert.strictEqual( model.areVisibleFiltersEmpty(), true ); model.toggleFiltersSelected( { group1__filter1: true } ); - assert.equal( model.areVisibleFiltersEmpty(), false ); + assert.strictEqual( model.areVisibleFiltersEmpty(), false ); } ); }( mediaWiki, jQuery ) ); diff --git a/tests/qunit/suites/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js b/tests/qunit/suites/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js index ed054bd7f5..92e5f2e4ac 100644 --- a/tests/qunit/suites/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js +++ b/tests/qunit/suites/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js @@ -286,14 +286,14 @@ testCase.msg + ' (itemState)' ); - assert.equal( + assert.strictEqual( item.isDefault(), testCase.result.isDefault, testCase.msg + ' (isDefault)' ); if ( testCase.result.id !== undefined ) { - assert.equal( + assert.strictEqual( item.getID(), testCase.result.id, testCase.msg + ' (item ID)' @@ -332,7 +332,7 @@ ); item1 = queriesModel.getItemByID( id1 ); - assert.equal( + assert.strictEqual( item1.getID(), id1, 'Item created and its data retained successfully' diff --git a/tests/qunit/suites/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js b/tests/qunit/suites/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js index ee3be94b73..5e35c18f6a 100644 --- a/tests/qunit/suites/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js +++ b/tests/qunit/suites/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js @@ -23,13 +23,13 @@ $.extend( true, {}, itemData ) ); - assert.equal( + assert.strictEqual( model.getID(), 'randomID', 'Item ID is retained' ); - assert.equal( + assert.strictEqual( model.getLabel(), 'Some label', 'Item label is retained' @@ -41,7 +41,7 @@ 'Item data is retained' ); - assert.equal( + assert.strictEqual( model.isDefault(), false, 'Item default state is retained.' @@ -57,21 +57,21 @@ $.extend( true, {}, itemData ) ); - assert.equal( + assert.strictEqual( model.isDefault(), false, 'Default state represented when item initialized with default:false.' ); model.toggleDefault( true ); - assert.equal( + assert.strictEqual( model.isDefault(), true, 'Default state toggles to true successfully' ); model.toggleDefault( false ); - assert.equal( + assert.strictEqual( model.isDefault(), false, 'Default state toggles to false successfully' @@ -85,7 +85,7 @@ { default: true } ); - assert.equal( + assert.strictEqual( model.isDefault(), true, 'Default state represented when item initialized with default:true.' diff --git a/tests/qunit/suites/resources/mediawiki.widgets/MediaSearch/mediawiki.widgets.APIResultsQueue.test.js b/tests/qunit/suites/resources/mediawiki.widgets/MediaSearch/mediawiki.widgets.APIResultsQueue.test.js index 74ffe6507f..a343aa55c1 100644 --- a/tests/qunit/suites/resources/mediawiki.widgets/MediaSearch/mediawiki.widgets.APIResultsQueue.test.js +++ b/tests/qunit/suites/resources/mediawiki.widgets/MediaSearch/mediawiki.widgets.APIResultsQueue.test.js @@ -107,18 +107,18 @@ QUnit.module( 'mediawiki.widgets.APIResultsQueue' ); queue.get( 10 ) .then( function ( data ) { // Check that we received all requested results - assert.equal( data.length, 10, 'Query 1: Results received.' ); + assert.strictEqual( data.length, 10, 'Query 1: Results received.' ); // We've asked for 10 items + 2 threshold from all providers. // Provider 1 returned 12 results // Provider 2 returned 0 results // Provider 3 returned 1 results // Overall 13 results. 10 were retrieved. 3 left in queue. - assert.equal( queue.getQueueSize(), 3, 'Query 1: Remaining queue size.' ); + assert.strictEqual( queue.getQueueSize(), 3, 'Query 1: Remaining queue size.' ); // Check if sources are depleted - assert.equal( providers[ 0 ].isDepleted(), false, 'Query 1: Full provider not depleted.' ); - assert.equal( providers[ 1 ].isDepleted(), true, 'Query 1: Empty provider is depleted.' ); - assert.equal( providers[ 2 ].isDepleted(), true, 'Query 1: Single result provider is depleted.' ); + assert.strictEqual( providers[ 0 ].isDepleted(), false, 'Query 1: Full provider not depleted.' ); + assert.strictEqual( providers[ 1 ].isDepleted(), true, 'Query 1: Empty provider is depleted.' ); + assert.strictEqual( providers[ 2 ].isDepleted(), true, 'Query 1: Single result provider is depleted.' ); // Ask for more results return queue.get( 10 ); @@ -131,26 +131,26 @@ QUnit.module( 'mediawiki.widgets.APIResultsQueue' ); // * The queue queried provider #1 for 12 items // * The queue returned 10 results as requested // * 5 results are now left in the queue. - assert.equal( data1.length, 10, 'Query 1: Second set of results received.' ); - assert.equal( queue.getQueueSize(), 5, 'Query 1: Remaining queue size.' ); + assert.strictEqual( data1.length, 10, 'Query 1: Second set of results received.' ); + assert.strictEqual( queue.getQueueSize(), 5, 'Query 1: Remaining queue size.' ); // Change the query queue.setParams( { foo: 'baz' } ); // Check if sources are depleted - assert.equal( providers[ 0 ].isDepleted(), false, 'Query 2: Full provider not depleted.' ); - assert.equal( providers[ 1 ].isDepleted(), false, 'Query 2: Empty provider not depleted.' ); - assert.equal( providers[ 2 ].isDepleted(), false, 'Query 2: Single result provider not depleted.' ); + assert.strictEqual( providers[ 0 ].isDepleted(), false, 'Query 2: Full provider not depleted.' ); + assert.strictEqual( providers[ 1 ].isDepleted(), false, 'Query 2: Empty provider not depleted.' ); + assert.strictEqual( providers[ 2 ].isDepleted(), false, 'Query 2: Single result provider not depleted.' ); return queue.get( 10 ); } ) .then( function ( data2 ) { // This should be the same as the very first result - assert.equal( data2.length, 10, 'Query 2: Results received.' ); - assert.equal( queue.getQueueSize(), 3, 'Query 2: Remaining queue size.' ); + assert.strictEqual( data2.length, 10, 'Query 2: Results received.' ); + assert.strictEqual( queue.getQueueSize(), 3, 'Query 2: Remaining queue size.' ); // Check if sources are depleted - assert.equal( providers[ 0 ].isDepleted(), false, 'Query 2: Full provider not depleted.' ); - assert.equal( providers[ 1 ].isDepleted(), true, 'Query 2: Empty provider is not depleted.' ); - assert.equal( providers[ 2 ].isDepleted(), true, 'Query 2: Single result provider is not depleted.' ); + assert.strictEqual( providers[ 0 ].isDepleted(), false, 'Query 2: Full provider not depleted.' ); + assert.strictEqual( providers[ 1 ].isDepleted(), true, 'Query 2: Empty provider is not depleted.' ); + assert.strictEqual( providers[ 2 ].isDepleted(), true, 'Query 2: Single result provider is not depleted.' ); } ) // Finish the async test .then( done ); @@ -189,7 +189,7 @@ QUnit.module( 'mediawiki.widgets.APIResultsQueue' ); biggerQueue.setParams( { foo: 'baz' } ); biggerQueue.get( 10 ) .then( function () { - assert.equal( completed, false, 'Provider promises aborted.' ); + assert.strictEqual( completed, false, 'Provider promises aborted.' ); } ) // Finish the async test .then( done ); diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.RegExp.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.RegExp.test.js index 4e15cf0115..485bac0877 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.RegExp.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.RegExp.test.js @@ -32,7 +32,7 @@ assert.propEqual( str.match( new RegExp( mw.RegExp.escape( str ) ) ), [ str ], 'Match ' + str ); } ); - assert.equal( mw.RegExp.escape( normal ), normal, 'Alphanumerals are left alone' ); + assert.strictEqual( mw.RegExp.escape( normal ), normal, 'Alphanumerals are left alone' ); } ); }( mediaWiki ) ); diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.String.byteLength.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.String.byteLength.test.js index ae3ebbf742..61b8f34582 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.String.byteLength.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.String.byteLength.test.js @@ -10,11 +10,11 @@ x = '*', space = ' '; - assert.equal( byteLength( azLc ), 26, 'Lowercase a-z' ); - assert.equal( byteLength( azUc ), 26, 'Uppercase A-Z' ); - assert.equal( byteLength( num ), 10, 'Numbers 0-9' ); - assert.equal( byteLength( x ), 1, 'An asterisk' ); - assert.equal( byteLength( space ), 3, '3 spaces' ); + assert.strictEqual( byteLength( azLc ), 26, 'Lowercase a-z' ); + assert.strictEqual( byteLength( azUc ), 26, 'Uppercase A-Z' ); + assert.strictEqual( byteLength( num ), 10, 'Numbers 0-9' ); + assert.strictEqual( byteLength( x ), 1, 'An asterisk' ); + assert.strictEqual( byteLength( space ), 3, '3 spaces' ); } ); diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.String.trimByteLength.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.String.trimByteLength.test.js index e2eea94e84..0898afdd7f 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.String.trimByteLength.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.String.trimByteLength.test.js @@ -40,7 +40,7 @@ QUnit.test( opt.description, function ( assert ) { var res = trimByteLength( opt.initial, opt.sample, opt.limit, opt.fn ); - assert.equal( + assert.strictEqual( res.newVal, opt.expected, 'New value matches the expected string' diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js index d6fe744fc0..8d67b4b4be 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js @@ -150,14 +150,14 @@ QUnit.test( 'newFromText', function ( assert ) { var i; for ( i = 0; i < cases.valid.length; i++ ) { - assert.equal( + assert.strictEqual( $.type( mw.Title.newFromText( cases.valid[ i ] ) ), 'object', cases.valid[ i ] ); } for ( i = 0; i < cases.invalid.length; i++ ) { - assert.equal( + assert.strictEqual( $.type( mw.Title.newFromText( cases.invalid[ i ] ) ), 'null', cases.invalid[ i ] @@ -195,100 +195,100 @@ var title; title = new mw.Title( 'File:Foo_bar.JPG' ); - assert.equal( title.getNamespaceId(), 6 ); - assert.equal( title.getNamespacePrefix(), 'File:' ); - assert.equal( title.getName(), 'Foo_bar' ); - assert.equal( title.getNameText(), 'Foo bar' ); - assert.equal( title.getExtension(), 'JPG' ); - assert.equal( title.getDotExtension(), '.JPG' ); - assert.equal( title.getMain(), 'Foo_bar.JPG' ); - assert.equal( title.getMainText(), 'Foo bar.JPG' ); - assert.equal( title.getPrefixedDb(), 'File:Foo_bar.JPG' ); - assert.equal( title.getPrefixedText(), 'File:Foo bar.JPG' ); + assert.strictEqual( title.getNamespaceId(), 6 ); + assert.strictEqual( title.getNamespacePrefix(), 'File:' ); + assert.strictEqual( title.getName(), 'Foo_bar' ); + assert.strictEqual( title.getNameText(), 'Foo bar' ); + assert.strictEqual( title.getExtension(), 'JPG' ); + assert.strictEqual( title.getDotExtension(), '.JPG' ); + assert.strictEqual( title.getMain(), 'Foo_bar.JPG' ); + assert.strictEqual( title.getMainText(), 'Foo bar.JPG' ); + assert.strictEqual( title.getPrefixedDb(), 'File:Foo_bar.JPG' ); + assert.strictEqual( title.getPrefixedText(), 'File:Foo bar.JPG' ); title = new mw.Title( 'Foo#bar' ); - assert.equal( title.getPrefixedText(), 'Foo' ); - assert.equal( title.getFragment(), 'bar' ); + assert.strictEqual( title.getPrefixedText(), 'Foo' ); + assert.strictEqual( title.getFragment(), 'bar' ); title = new mw.Title( '.foo' ); - assert.equal( title.getPrefixedText(), '.foo' ); - assert.equal( title.getName(), '' ); - assert.equal( title.getNameText(), '' ); - assert.equal( title.getExtension(), 'foo' ); - assert.equal( title.getDotExtension(), '.foo' ); - assert.equal( title.getMain(), '.foo' ); - assert.equal( title.getMainText(), '.foo' ); - assert.equal( title.getPrefixedDb(), '.foo' ); - assert.equal( title.getPrefixedText(), '.foo' ); + assert.strictEqual( title.getPrefixedText(), '.foo' ); + assert.strictEqual( title.getName(), '' ); + assert.strictEqual( title.getNameText(), '' ); + assert.strictEqual( title.getExtension(), 'foo' ); + assert.strictEqual( title.getDotExtension(), '.foo' ); + assert.strictEqual( title.getMain(), '.foo' ); + assert.strictEqual( title.getMainText(), '.foo' ); + assert.strictEqual( title.getPrefixedDb(), '.foo' ); + assert.strictEqual( title.getPrefixedText(), '.foo' ); } ); QUnit.test( 'Transformation', function ( assert ) { var title; title = new mw.Title( 'File:quux pif.jpg' ); - assert.equal( title.getNameText(), 'Quux pif', 'First character of title' ); + assert.strictEqual( title.getNameText(), 'Quux pif', 'First character of title' ); title = new mw.Title( 'File:Glarg_foo_glang.jpg' ); - assert.equal( title.getNameText(), 'Glarg foo glang', 'Underscores' ); + assert.strictEqual( title.getNameText(), 'Glarg foo glang', 'Underscores' ); title = new mw.Title( 'User:ABC.DEF' ); - assert.equal( title.toText(), 'User:ABC.DEF', 'Round trip text' ); - assert.equal( title.getNamespaceId(), 2, 'Parse canonical namespace prefix' ); + assert.strictEqual( title.toText(), 'User:ABC.DEF', 'Round trip text' ); + assert.strictEqual( title.getNamespaceId(), 2, 'Parse canonical namespace prefix' ); title = new mw.Title( 'Image:quux pix.jpg' ); - assert.equal( title.getNamespacePrefix(), 'File:', 'Transform alias to canonical namespace' ); + assert.strictEqual( title.getNamespacePrefix(), 'File:', 'Transform alias to canonical namespace' ); title = new mw.Title( 'uSEr:hAshAr' ); - assert.equal( title.toText(), 'User:HAshAr' ); - assert.equal( title.getNamespaceId(), 2, 'Case-insensitive namespace prefix' ); + assert.strictEqual( title.toText(), 'User:HAshAr' ); + assert.strictEqual( title.getNamespaceId(), 2, 'Case-insensitive namespace prefix' ); title = new mw.Title( 'Foo \u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u2028\u2029\u202F\u205F\u3000 bar' ); - assert.equal( title.getMain(), 'Foo_bar', 'Merge multiple types of whitespace/underscores into a single underscore' ); + assert.strictEqual( title.getMain(), 'Foo_bar', 'Merge multiple types of whitespace/underscores into a single underscore' ); title = new mw.Title( 'Foo\u200E\u200F\u202A\u202B\u202C\u202D\u202Ebar' ); - assert.equal( title.getMain(), 'Foobar', 'Strip Unicode bidi override characters' ); + assert.strictEqual( title.getMain(), 'Foobar', 'Strip Unicode bidi override characters' ); // Regression test: Previously it would only detect an extension if there is no space after it title = new mw.Title( 'Example.js ' ); - assert.equal( title.getExtension(), 'js', 'Space after an extension is stripped' ); + assert.strictEqual( title.getExtension(), 'js', 'Space after an extension is stripped' ); title = new mw.Title( 'Example#foo' ); - assert.equal( title.getFragment(), 'foo', 'Fragment' ); + assert.strictEqual( title.getFragment(), 'foo', 'Fragment' ); title = new mw.Title( 'Example#_foo_bar baz_' ); - assert.equal( title.getFragment(), ' foo bar baz', 'Fragment' ); + assert.strictEqual( title.getFragment(), ' foo bar baz', 'Fragment' ); } ); QUnit.test( 'Namespace detection and conversion', function ( assert ) { var title; title = new mw.Title( 'File:User:Example' ); - assert.equal( title.getNamespaceId(), 6, 'Titles can contain namespace prefixes, which are otherwise ignored' ); + assert.strictEqual( title.getNamespaceId(), 6, 'Titles can contain namespace prefixes, which are otherwise ignored' ); title = new mw.Title( 'Example', 6 ); - assert.equal( title.getNamespaceId(), 6, 'Default namespace passed is used' ); + assert.strictEqual( title.getNamespaceId(), 6, 'Default namespace passed is used' ); title = new mw.Title( 'User:Example', 6 ); - assert.equal( title.getNamespaceId(), 2, 'Included namespace prefix overrides the given default' ); + assert.strictEqual( title.getNamespaceId(), 2, 'Included namespace prefix overrides the given default' ); title = new mw.Title( ':Example', 6 ); - assert.equal( title.getNamespaceId(), 0, 'Colon forces main namespace' ); + assert.strictEqual( title.getNamespaceId(), 0, 'Colon forces main namespace' ); title = new mw.Title( 'something.PDF', 6 ); - assert.equal( title.toString(), 'File:Something.PDF' ); + assert.strictEqual( title.toString(), 'File:Something.PDF' ); title = new mw.Title( 'NeilK', 3 ); - assert.equal( title.toString(), 'User_talk:NeilK' ); - assert.equal( title.toText(), 'User talk:NeilK' ); + assert.strictEqual( title.toString(), 'User_talk:NeilK' ); + assert.strictEqual( title.toText(), 'User talk:NeilK' ); title = new mw.Title( 'Frobisher', 100 ); - assert.equal( title.toString(), 'Penguins:Frobisher' ); + assert.strictEqual( title.toString(), 'Penguins:Frobisher' ); title = new mw.Title( 'antarctic_waterfowl:flightless_yet_cute.jpg' ); - assert.equal( title.toString(), 'Penguins:Flightless_yet_cute.jpg' ); + assert.strictEqual( title.toString(), 'Penguins:Flightless_yet_cute.jpg' ); title = new mw.Title( 'Penguins:flightless_yet_cute.jpg' ); - assert.equal( title.toString(), 'Penguins:Flightless_yet_cute.jpg' ); + assert.strictEqual( title.toString(), 'Penguins:Flightless_yet_cute.jpg' ); } ); QUnit.test( 'Throw error on invalid title', function ( assert ) { @@ -304,35 +304,35 @@ mw.config.set( 'wgCaseSensitiveNamespaces', [] ); title = new mw.Title( 'article' ); - assert.equal( title.toString(), 'Article', 'Default config: No sensitive namespaces by default. First-letter becomes uppercase' ); + assert.strictEqual( title.toString(), 'Article', 'Default config: No sensitive namespaces by default. First-letter becomes uppercase' ); title = new mw.Title( 'ß' ); - assert.equal( title.toString(), 'ß', 'Uppercasing matches PHP behaviour (ß -> ß, not SS)' ); + assert.strictEqual( title.toString(), 'ß', 'Uppercasing matches PHP behaviour (ß -> ß, not SS)' ); title = new mw.Title( 'dž (digraph)' ); - assert.equal( title.toString(), 'Dž_(digraph)', 'Uppercasing matches PHP behaviour (dž -> Dž, not DŽ)' ); + assert.strictEqual( title.toString(), 'Dž_(digraph)', 'Uppercasing matches PHP behaviour (dž -> Dž, not DŽ)' ); // $wgCapitalLinks = false; mw.config.set( 'wgCaseSensitiveNamespaces', [ 0, -2, 1, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15 ] ); title = new mw.Title( 'article' ); - assert.equal( title.toString(), 'article', '$wgCapitalLinks=false: Article namespace is sensitive, first-letter case stays lowercase' ); + assert.strictEqual( title.toString(), 'article', '$wgCapitalLinks=false: Article namespace is sensitive, first-letter case stays lowercase' ); title = new mw.Title( 'john', 2 ); - assert.equal( title.toString(), 'User:John', '$wgCapitalLinks=false: User namespace is insensitive, first-letter becomes uppercase' ); + assert.strictEqual( title.toString(), 'User:John', '$wgCapitalLinks=false: User namespace is insensitive, first-letter becomes uppercase' ); } ); QUnit.test( 'toString / toText', function ( assert ) { var title = new mw.Title( 'Some random page' ); - assert.equal( title.toString(), title.getPrefixedDb() ); - assert.equal( title.toText(), title.getPrefixedText() ); + assert.strictEqual( title.toString(), title.getPrefixedDb() ); + assert.strictEqual( title.toText(), title.getPrefixedText() ); } ); QUnit.test( 'getExtension', function ( assert ) { function extTest( pagename, ext, description ) { var title = new mw.Title( pagename ); - assert.equal( title.getExtension(), ext, description || pagename ); + assert.strictEqual( title.getExtension(), ext, description || pagename ); } extTest( 'MediaWiki:Vector.js', 'js' ); @@ -374,14 +374,14 @@ } ); title = new mw.Title( 'Foobar' ); - assert.equal( title.getUrl(), '/wiki/Foobar', 'Basic functionality, getUrl uses mw.util.getUrl' ); - assert.equal( title.getUrl( { action: 'edit' } ), '/w/index.php?title=Foobar&action=edit', 'Basic functionality, \'params\' parameter' ); + assert.strictEqual( title.getUrl(), '/wiki/Foobar', 'Basic functionality, getUrl uses mw.util.getUrl' ); + assert.strictEqual( title.getUrl( { action: 'edit' } ), '/w/index.php?title=Foobar&action=edit', 'Basic functionality, \'params\' parameter' ); title = new mw.Title( 'John Doe', 3 ); - assert.equal( title.getUrl(), '/wiki/User_talk:John_Doe', 'Escaping in title and namespace for urls' ); + assert.strictEqual( title.getUrl(), '/wiki/User_talk:John_Doe', 'Escaping in title and namespace for urls' ); title = new mw.Title( 'John Cena#And_His_Name_Is', 3 ); - assert.equal( title.getUrl( { meme: true } ), '/w/index.php?title=User_talk:John_Cena&meme=true#And_His_Name_Is', 'title with fragment and query parameter' ); + assert.strictEqual( title.getUrl( { meme: true } ), '/w/index.php?title=User_talk:John_Cena&meme=true#And_His_Name_Is', 'title with fragment and query parameter' ); } ); QUnit.test( 'newFromImg', function ( assert ) { @@ -486,9 +486,9 @@ prefix = '[' + thisCase.typeOfUrl + ' URL] '; assert.notStrictEqual( title, null, prefix + 'Parses successfully' ); - assert.equal( title.getNameText(), thisCase.nameText, prefix + 'Filename matches original' ); - assert.equal( title.getPrefixedText(), thisCase.prefixedText, prefix + 'File page title matches original' ); - assert.equal( title.getNamespaceId(), 6, prefix + 'Namespace ID matches File namespace' ); + assert.strictEqual( title.getNameText(), thisCase.nameText, prefix + 'Filename matches original' ); + assert.strictEqual( title.getPrefixedText(), thisCase.prefixedText, prefix + 'File page title matches original' ); + assert.strictEqual( title.getNamespaceId(), 6, prefix + 'Namespace ID matches File namespace' ); } else { assert.strictEqual( title, null, thisCase.typeOfUrl + ', should not produce an mw.Title object' ); } @@ -529,7 +529,7 @@ thisCase = cases[ i ]; title = mw.Title.newFromText( thisCase.text ); - assert.equal( title.getRelativeText( thisCase.relativeTo ), thisCase.expectedResult ); + assert.strictEqual( title.getRelativeText( thisCase.relativeTo ), thisCase.expectedResult ); } } ); @@ -568,7 +568,7 @@ extension = mw.Title.normalizeExtension( thisCase.extension ); prefix = '[' + thisCase.description + '] '; - assert.equal( extension, thisCase.expected, prefix + 'Extension as expected' ); + assert.strictEqual( extension, thisCase.expected, prefix + 'Extension as expected' ); } } ); @@ -620,7 +620,7 @@ prefix = '[' + thisCase.description + '] '; assert.notStrictEqual( title, null, prefix + 'Parses successfully' ); - assert.equal( title.toText(), thisCase.expected, prefix + 'Title as expected' ); + assert.strictEqual( title.toText(), thisCase.expected, prefix + 'Title as expected' ); } else { assert.strictEqual( title, null, thisCase.description + ', should not produce an mw.Title object' ); } @@ -726,9 +726,9 @@ prefix = '[' + thisCase.typeOfName + '] '; assert.notStrictEqual( title, null, prefix + 'Parses successfully' ); - assert.equal( title.getNameText(), thisCase.nameText, prefix + 'Filename matches original' ); - assert.equal( title.getPrefixedText(), thisCase.prefixedText, prefix + 'File page title matches original' ); - assert.equal( title.getNamespaceId(), 6, prefix + 'Namespace ID matches File namespace' ); + assert.strictEqual( title.getNameText(), thisCase.nameText, prefix + 'Filename matches original' ); + assert.strictEqual( title.getPrefixedText(), thisCase.prefixedText, prefix + 'File page title matches original' ); + assert.strictEqual( title.getNamespaceId(), 6, prefix + 'Namespace ID matches File namespace' ); } else { assert.strictEqual( title, null, thisCase.typeOfName + ', should not produce an mw.Title object' ); } diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js index f2cb70b8af..eece8c0a54 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js @@ -130,7 +130,7 @@ uri = new mw.Uri( 'example.com/bar/baz', { strictMode: false } ); - assert.equal( uri.toString(), 'http://example.com/bar/baz', 'normalize URI without protocol or // in loose mode' ); + assert.strictEqual( uri.toString(), 'http://example.com/bar/baz', 'normalize URI without protocol or // in loose mode' ); uri = new mw.Uri( 'http://example.com/index.php?key=key&hasOwnProperty=hasOwnProperty&constructor=constructor&watch=watch' ); assert.deepEqual( @@ -151,7 +151,7 @@ host: 'www.foo.local', path: '/this' } ); - assert.equal( uri.toString(), 'http://www.foo.local/this', 'Basic properties' ); + assert.strictEqual( uri.toString(), 'http://www.foo.local/this', 'Basic properties' ); uri = new mw.Uri( { protocol: 'http', @@ -160,7 +160,7 @@ query: { hi: 'there' }, fragment: 'blah' } ); - assert.equal( uri.toString(), 'http://www.foo.local/this?hi=there#blah', 'More complex properties' ); + assert.strictEqual( uri.toString(), 'http://www.foo.local/this?hi=there#blah', 'More complex properties' ); assert.throws( function () { @@ -183,16 +183,16 @@ MyUri = mw.UriRelative( testuri ); uri = new MyUri(); - assert.equal( uri.toString(), testuri, 'no arguments' ); + assert.strictEqual( uri.toString(), testuri, 'no arguments' ); uri = new MyUri( undefined ); - assert.equal( uri.toString(), testuri, 'undefined' ); + assert.strictEqual( uri.toString(), testuri, 'undefined' ); uri = new MyUri( null ); - assert.equal( uri.toString(), testuri, 'null' ); + assert.strictEqual( uri.toString(), testuri, 'null' ); uri = new MyUri( '' ); - assert.equal( uri.toString(), testuri, 'empty string' ); + assert.strictEqual( uri.toString(), testuri, 'empty string' ); uri = new MyUri( null, { overrideKeys: true } ); assert.deepEqual( uri.query, { a: '2' }, 'null, with options' ); @@ -205,32 +205,32 @@ uri = uriBase.clone(); uri.fragment = 'frag'; - assert.equal( uri.toString(), 'http://en.wiki.local/w/api.php#frag', 'add a fragment' ); + assert.strictEqual( uri.toString(), 'http://en.wiki.local/w/api.php#frag', 'add a fragment' ); uri.fragment = 'café'; - assert.equal( uri.toString(), 'http://en.wiki.local/w/api.php#caf%C3%A9', 'fragment is url-encoded' ); + assert.strictEqual( uri.toString(), 'http://en.wiki.local/w/api.php#caf%C3%A9', 'fragment is url-encoded' ); uri = uriBase.clone(); uri.host = 'fr.wiki.local'; uri.port = '8080'; - assert.equal( uri.toString(), 'http://fr.wiki.local:8080/w/api.php', 'change host and port' ); + assert.strictEqual( uri.toString(), 'http://fr.wiki.local:8080/w/api.php', 'change host and port' ); uri = uriBase.clone(); uri.query.foo = 'bar'; - assert.equal( uri.toString(), 'http://en.wiki.local/w/api.php?foo=bar', 'add query arguments' ); + assert.strictEqual( uri.toString(), 'http://en.wiki.local/w/api.php?foo=bar', 'add query arguments' ); delete uri.query.foo; - assert.equal( uri.toString(), 'http://en.wiki.local/w/api.php', 'delete query arguments' ); + assert.strictEqual( uri.toString(), 'http://en.wiki.local/w/api.php', 'delete query arguments' ); uri = uriBase.clone(); uri.query.foo = 'bar'; - assert.equal( uri.toString(), 'http://en.wiki.local/w/api.php?foo=bar', 'extend query arguments' ); + assert.strictEqual( uri.toString(), 'http://en.wiki.local/w/api.php?foo=bar', 'extend query arguments' ); uri.extend( { foo: 'quux', pif: 'paf' } ); - assert.equal( uri.toString().indexOf( 'foo=quux' ) !== -1, true, 'extend query arguments' ); - assert.equal( uri.toString().indexOf( 'foo=bar' ) !== -1, false, 'extend query arguments' ); - assert.equal( uri.toString().indexOf( 'pif=paf' ) !== -1, true, 'extend query arguments' ); + assert.strictEqual( uri.toString().indexOf( 'foo=quux' ) !== -1, true, 'extend query arguments' ); + assert.strictEqual( uri.toString().indexOf( 'foo=bar' ) !== -1, false, 'extend query arguments' ); + assert.strictEqual( uri.toString().indexOf( 'pif=paf' ) !== -1, true, 'extend query arguments' ); } ); QUnit.test( '.getQueryString()', function ( assert ) { @@ -259,7 +259,7 @@ ); uri = new mw.Uri( 'https://example.com/mw/index.php?title=Sandbox/7&other=Sandbox/7&foo' ); - assert.equal( + assert.strictEqual( uri.getQueryString(), 'title=Sandbox/7&other=Sandbox%2F7&foo', 'title parameter is escaped the wiki-way' @@ -274,7 +274,7 @@ clone = original.clone(); assert.deepEqual( clone, original, 'clone has equivalent properties' ); - assert.equal( original.toString(), clone.toString(), 'toString matches original' ); + assert.strictEqual( original.toString(), clone.toString(), 'toString matches original' ); assert.notStrictEqual( clone, original, 'clone is a different object when compared by reference' ); @@ -302,9 +302,9 @@ // Verify parts and total length instead of entire string because order // of iteration can vary. - assert.equal( uri.toString().indexOf( 'm=bar' ) !== -1, true, 'toString preserves other values' ); - assert.equal( uri.toString().indexOf( 'n=x&n=y&n=z' ) !== -1, true, 'toString parameter includes all values of an array query parameter' ); - assert.equal( uri.toString().length, 'http://www.example.com/dir/?m=bar&n=x&n=y&n=z'.length, 'toString matches expected string' ); + assert.strictEqual( uri.toString().indexOf( 'm=bar' ) !== -1, true, 'toString preserves other values' ); + assert.strictEqual( uri.toString().indexOf( 'n=x&n=y&n=z' ) !== -1, true, 'toString parameter includes all values of an array query parameter' ); + assert.strictEqual( uri.toString().length, 'http://www.example.com/dir/?m=bar&n=x&n=y&n=z'.length, 'toString matches expected string' ); uri = new mw.Uri( 'http://www.example.com/dir/?m=foo&m=bar&n=1', { overrideKeys: false @@ -315,19 +315,19 @@ // Verify parts and total length instead of entire string because order // of iteration can vary. - assert.equal( uri.toString().indexOf( 'm=foo&m=bar' ) !== -1, true, 'toString preserves other values' ); - assert.equal( uri.toString().indexOf( 'n=x&n=y&n=z' ) !== -1, true, 'toString parameter includes all values of an array query parameter' ); - assert.equal( uri.toString().length, 'http://www.example.com/dir/?m=foo&m=bar&n=x&n=y&n=z'.length, 'toString matches expected string' ); + assert.strictEqual( uri.toString().indexOf( 'm=foo&m=bar' ) !== -1, true, 'toString preserves other values' ); + assert.strictEqual( uri.toString().indexOf( 'n=x&n=y&n=z' ) !== -1, true, 'toString parameter includes all values of an array query parameter' ); + assert.strictEqual( uri.toString().length, 'http://www.example.com/dir/?m=foo&m=bar&n=x&n=y&n=z'.length, 'toString matches expected string' ); // Remove query values uri.query.m.splice( 0, 1 ); delete uri.query.n; - assert.equal( uri.toString(), 'http://www.example.com/dir/?m=bar', 'deletion properties' ); + assert.strictEqual( uri.toString(), 'http://www.example.com/dir/?m=bar', 'deletion properties' ); // Remove more query values, leaving an empty array uri.query.m.splice( 0, 1 ); - assert.equal( uri.toString(), 'http://www.example.com/dir/', 'empty array value is ommitted' ); + assert.strictEqual( uri.toString(), 'http://www.example.com/dir/', 'empty array value is ommitted' ); } ); QUnit.test( 'Variable defaultUri', function ( assert ) { @@ -419,17 +419,17 @@ 'basic object properties' ); - assert.equal( uri.getUserInfo(), 'auth', 'user info' ); + assert.strictEqual( uri.getUserInfo(), 'auth', 'user info' ); - assert.equal( uri.getAuthority(), 'auth@www.example.com:81', 'authority equal to auth@hostport' ); + assert.strictEqual( uri.getAuthority(), 'auth@www.example.com:81', 'authority equal to auth@hostport' ); - assert.equal( uri.getHostPort(), 'www.example.com:81', 'hostport equal to host:port' ); + assert.strictEqual( uri.getHostPort(), 'www.example.com:81', 'hostport equal to host:port' ); queryString = uri.getQueryString(); - assert.equal( queryString.indexOf( 'q1=0' ) !== -1, true, 'query param with numbers' ); - assert.equal( queryString.indexOf( 'test1' ) !== -1, true, 'query param with null value is included' ); - assert.equal( queryString.indexOf( 'test1=' ) !== -1, false, 'query param with null value does not generate equals sign' ); - assert.equal( queryString.indexOf( 'test2=value+%28escaped%29' ) !== -1, true, 'query param is url escaped' ); + assert.strictEqual( queryString.indexOf( 'q1=0' ) !== -1, true, 'query param with numbers' ); + assert.strictEqual( queryString.indexOf( 'test1' ) !== -1, true, 'query param with null value is included' ); + assert.strictEqual( queryString.indexOf( 'test1=' ) !== -1, false, 'query param with null value does not generate equals sign' ); + assert.strictEqual( queryString.indexOf( 'test2=value+%28escaped%29' ) !== -1, true, 'query param is url escaped' ); relativePath = uri.getRelativePath(); assert.ok( relativePath.indexOf( uri.path ) >= 0, 'path in relative path' ); @@ -473,19 +473,19 @@ UriRel = mw.UriRelative( 'glork://en.wiki.local/foo.php' ); uri = new UriRel( '//en.wiki.local/w/api.php' ); - assert.equal( uri.protocol, 'glork', 'create protocol-relative URLs with same protocol as document' ); + assert.strictEqual( uri.protocol, 'glork', 'create protocol-relative URLs with same protocol as document' ); uri = new UriRel( '/foo.com' ); - assert.equal( uri.toString(), 'glork://en.wiki.local/foo.com', 'handle absolute paths by supplying protocol and host from document in loose mode' ); + assert.strictEqual( uri.toString(), 'glork://en.wiki.local/foo.com', 'handle absolute paths by supplying protocol and host from document in loose mode' ); uri = new UriRel( 'http:/foo.com' ); - assert.equal( uri.toString(), 'http://en.wiki.local/foo.com', 'handle absolute paths by supplying host from document in loose mode' ); + assert.strictEqual( uri.toString(), 'http://en.wiki.local/foo.com', 'handle absolute paths by supplying host from document in loose mode' ); uri = new UriRel( '/foo.com', true ); - assert.equal( uri.toString(), 'glork://en.wiki.local/foo.com', 'handle absolute paths by supplying protocol and host from document in strict mode' ); + assert.strictEqual( uri.toString(), 'glork://en.wiki.local/foo.com', 'handle absolute paths by supplying protocol and host from document in strict mode' ); uri = new UriRel( 'http:/foo.com', true ); - assert.equal( uri.toString(), 'http://en.wiki.local/foo.com', 'handle absolute paths by supplying host from document in strict mode' ); + assert.strictEqual( uri.toString(), 'http://en.wiki.local/foo.com', 'handle absolute paths by supplying host from document in strict mode' ); } ); QUnit.test( 'T37658', function ( assert ) { @@ -499,11 +499,11 @@ UriClass = mw.UriRelative( testProtocol + testServer + '/some/path/index.html' ); uri = new UriClass( testPath ); href = uri.toString(); - assert.equal( href, testProtocol + testServer + testPath, 'Root-relative URL gets host & protocol supplied' ); + assert.strictEqual( href, testProtocol + testServer + testPath, 'Root-relative URL gets host & protocol supplied' ); UriClass = mw.UriRelative( testProtocol + testServer + ':' + testPort + '/some/path.php' ); uri = new UriClass( testPath ); href = uri.toString(); - assert.equal( href, testProtocol + testServer + ':' + testPort + testPath, 'Root-relative URL gets host, protocol, and port supplied' ); + assert.strictEqual( href, testProtocol + testServer + ':' + testPort + testPath, 'Root-relative URL gets host, protocol, and port supplied' ); } ); }( mediaWiki ) ); diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js index 4170897c28..17eaa7e1e6 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js @@ -65,7 +65,7 @@ QUnit.test( 'Plural Test for ' + langCode, function ( assert ) { var i; for ( i = 0; i < tests.length; i++ ) { - assert.equal( + assert.strictEqual( mw.language.convertPlural( tests[ i ][ 0 ], tests[ i ][ 1 ] ), tests[ i ][ 2 ], tests[ i ][ 3 ] diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js index 9bff988e39..c2abc08641 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js @@ -21,7 +21,7 @@ var experiment = createExperiment(), token = '123457890'; - assert.equal( + assert.strictEqual( getBucket( experiment, token ), getBucket( experiment, token ), 'It returns the same bucket for the same experiment-token pair.' @@ -33,7 +33,7 @@ A: 0.314159265359 }; - assert.equal( + assert.strictEqual( getBucket( experiment, token ), 'A', 'It returns the bucket if only one is defined.' @@ -43,7 +43,7 @@ experiment = createExperiment(); experiment.enabled = false; - assert.equal( + assert.strictEqual( getBucket( experiment, token ), 'control', 'It returns "control" if the experiment is disabled.' @@ -53,7 +53,7 @@ experiment = createExperiment(); experiment.buckets = {}; - assert.equal( + assert.strictEqual( getBucket( experiment, token ), 'control', 'It returns "control" if the experiment doesn\'t have any buckets.' diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.html.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.html.test.js index 16f8cf3b8c..91afec3bfb 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.html.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.html.test.js @@ -10,7 +10,7 @@ 'throw a TypeError if argument is not a string' ); - assert.equal( + assert.strictEqual( mw.html.escape( '' ), '<mw awesome="awesome" value='test' />', 'Escape special characters to html entities' @@ -18,7 +18,7 @@ } ); QUnit.test( 'element()', function ( assert ) { - assert.equal( + assert.strictEqual( mw.html.element(), '', 'return valid html even without arguments' @@ -26,13 +26,13 @@ } ); QUnit.test( 'element( tagName )', function ( assert ) { - assert.equal( mw.html.element( 'div' ), '
', 'DIV' ); + assert.strictEqual( mw.html.element( 'div' ), '
', 'DIV' ); } ); QUnit.test( 'element( tagName, attrs )', function ( assert ) { - assert.equal( mw.html.element( 'div', {} ), '
', 'DIV' ); + assert.strictEqual( mw.html.element( 'div', {} ), '
', 'DIV' ); - assert.equal( + assert.strictEqual( mw.html.element( 'div', { id: 'foobar' @@ -45,13 +45,13 @@ QUnit.test( 'element( tagName, attrs, content )', function ( assert ) { - assert.equal( mw.html.element( 'div', {}, '' ), '
', 'DIV with empty attributes and content' ); + assert.strictEqual( mw.html.element( 'div', {}, '' ), '
', 'DIV with empty attributes and content' ); - assert.equal( mw.html.element( 'p', {}, 12 ), '

12

', 'numbers as content cast to strings' ); + assert.strictEqual( mw.html.element( 'p', {}, 12 ), '

12

', 'numbers as content cast to strings' ); - assert.equal( mw.html.element( 'p', { title: 12 }, '' ), '

', 'number as attribute value' ); + assert.strictEqual( mw.html.element( 'p', { title: 12 }, '' ), '

', 'number as attribute value' ); - assert.equal( + assert.strictEqual( mw.html.element( 'div', {}, @@ -63,7 +63,7 @@ 'unescaped content with mw.html.Raw' ); - assert.equal( + assert.strictEqual( mw.html.element( 'option', { @@ -75,7 +75,7 @@ 'boolean true attribute value' ); - assert.equal( + assert.strictEqual( mw.html.element( 'option', { @@ -88,12 +88,12 @@ 'boolean false attribute value' ); - assert.equal( + assert.strictEqual( mw.html.element( 'div', null, 'a' ), '
a
', 'Skip attributes with null' ); - assert.equal( + assert.strictEqual( mw.html.element( 'a', { href: 'http://mediawiki.org/w/index.php?title=RL&action=history' }, 'a' ), diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.inspect.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.inspect.test.js index 1f7a5eceb5..3d3eeddd1d 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.inspect.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.inspect.test.js @@ -9,7 +9,7 @@ ); return mw.loader.using( 'test.inspect.script' ).then( function () { - assert.equal( + assert.strictEqual( mw.inspect.getModuleSize( 'test.inspect.script' ), // name, script function 43, @@ -26,7 +26,7 @@ ); return mw.loader.using( 'test.inspect.both' ).then( function () { - assert.equal( + assert.strictEqual( mw.inspect.getModuleSize( 'test.inspect.both' ), // name, script function, styles object 64, @@ -44,7 +44,7 @@ ); return mw.loader.using( 'test.inspect.scriptmsg' ).then( function () { - assert.equal( + assert.strictEqual( mw.inspect.getModuleSize( 'test.inspect.scriptmsg' ), // name, script function, empty styles object, messages object 74, @@ -63,7 +63,7 @@ ); return mw.loader.using( 'test.inspect.all' ).then( function () { - assert.equal( + assert.strictEqual( mw.inspect.getModuleSize( 'test.inspect.all' ), // name, script function, styles object, messages object, templates object 126, diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js index 71362fd0d1..7701170b96 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js @@ -7,8 +7,8 @@ // When the expected result is the same in both modes function assertBothModes( assert, parserArguments, expectedResult, assertMessage ) { - assert.equal( formatText.apply( null, parserArguments ), expectedResult, assertMessage + ' when format is \'text\'' ); - assert.equal( formatParse.apply( null, parserArguments ), expectedResult, assertMessage + ' when format is \'parse\'' ); + assert.strictEqual( formatText.apply( null, parserArguments ), expectedResult, assertMessage + ' when format is \'text\'' ); + assert.strictEqual( formatParse.apply( null, parserArguments ), expectedResult, assertMessage + ' when format is \'parse\'' ); } QUnit.module( 'mediawiki.jqueryMsg', QUnit.newMwEnvironment( { @@ -152,13 +152,13 @@ QUnit.test( 'Replace', function ( assert ) { mw.messages.set( 'simple', 'Foo $1 baz $2' ); - assert.equal( formatParse( 'simple' ), 'Foo $1 baz $2', 'Replacements with no substitutes' ); - assert.equal( formatParse( 'simple', 'bar' ), 'Foo bar baz $2', 'Replacements with less substitutes' ); - assert.equal( formatParse( 'simple', 'bar', 'quux' ), 'Foo bar baz quux', 'Replacements with all substitutes' ); + assert.strictEqual( formatParse( 'simple' ), 'Foo $1 baz $2', 'Replacements with no substitutes' ); + assert.strictEqual( formatParse( 'simple', 'bar' ), 'Foo bar baz $2', 'Replacements with less substitutes' ); + assert.strictEqual( formatParse( 'simple', 'bar', 'quux' ), 'Foo bar baz quux', 'Replacements with all substitutes' ); mw.messages.set( 'plain-input', 'x$1y<z' ); - assert.equal( + assert.strictEqual( formatParse( 'plain-input', 'bar' ), '<foo foo="foo">xbary&lt;</foo>z', 'Input is not considered html' @@ -166,7 +166,7 @@ mw.messages.set( 'plain-replace', 'Foo $1' ); - assert.equal( + assert.strictEqual( formatParse( 'plain-replace', '>' ), 'Foo <bar bar="bar">&gt;</bar>', 'Replacement is not considered html' @@ -174,55 +174,55 @@ mw.messages.set( 'object-replace', 'Foo $1' ); - assert.equal( + assert.strictEqual( formatParse( 'object-replace', $( '
>
' ) ), 'Foo
>
', 'jQuery objects are preserved as raw html' ); - assert.equal( + assert.strictEqual( formatParse( 'object-replace', $( '
>
' ).get( 0 ) ), 'Foo
>
', 'HTMLElement objects are preserved as raw html' ); - assert.equal( + assert.strictEqual( formatParse( 'object-replace', $( '
>
' ).toArray() ), 'Foo
>
', 'HTMLElement[] arrays are preserved as raw html' ); - assert.equal( + assert.strictEqual( formatParse( 'external-link-replace', 'http://example.org/?x=y&z' ), 'Foo bar', 'Href is not double-escaped in wikilink function' ); - assert.equal( + assert.strictEqual( formatParse( 'external-link-plural', 1, 'http://example.org' ), 'Foo is one things.', 'Link is expanded inside plural and is not escaped html' ); - assert.equal( + assert.strictEqual( formatParse( 'external-link-plural', 2, 'http://example.org' ), 'Foo two things.', 'Link is expanded inside an explicit plural form and is not escaped html' ); - assert.equal( + assert.strictEqual( formatParse( 'external-link-plural', 3 ), 'Foo three things.', 'A simple explicit plural form co-existing with complex explicit plural forms' ); - assert.equal( + assert.strictEqual( formatParse( 'external-link-plural', 4, 'http://example.org' ), 'Foo a=b things.', 'Only first equal sign is used as delimiter for explicit plural form. Repeated equal signs does not create issue' ); - assert.equal( + assert.strictEqual( formatParse( 'external-link-plural', 6, 'http://example.org' ), 'Foo are some things.', 'Plural fallback to the "other" plural form' ); - assert.equal( + assert.strictEqual( formatParse( 'plural-only-explicit-forms', 2 ), 'It is a double room.', 'Plural with explicit forms alone.' @@ -230,15 +230,15 @@ } ); QUnit.test( 'Plural', function ( assert ) { - assert.equal( formatParse( 'plural-msg', 0 ), 'Found 0 items', 'Plural test for english with zero as count' ); - assert.equal( formatParse( 'plural-msg', 1 ), 'Found 1 item', 'Singular test for english' ); - assert.equal( formatParse( 'plural-msg', 2 ), 'Found 2 items', 'Plural test for english' ); - assert.equal( formatParse( 'plural-msg-explicit-forms-nested', 6 ), 'Found 6 results', 'Plural message with explicit plural forms' ); - assert.equal( formatParse( 'plural-msg-explicit-forms-nested', 0 ), 'Found no results in Wiki', 'Plural message with explicit plural forms, with nested {{SITENAME}}' ); - assert.equal( formatParse( 'plural-msg-explicit-forms-nested', 1 ), 'Found 1 result', 'Plural message with explicit plural forms with placeholder nested' ); - assert.equal( formatParse( 'plural-empty-explicit-form', 0 ), 'There is me.' ); - assert.equal( formatParse( 'plural-empty-explicit-form', 1 ), 'There is me and other people.' ); - assert.equal( formatParse( 'plural-empty-explicit-form', 2 ), 'There is me and other people.' ); + assert.strictEqual( formatParse( 'plural-msg', 0 ), 'Found 0 items', 'Plural test for english with zero as count' ); + assert.strictEqual( formatParse( 'plural-msg', 1 ), 'Found 1 item', 'Singular test for english' ); + assert.strictEqual( formatParse( 'plural-msg', 2 ), 'Found 2 items', 'Plural test for english' ); + assert.strictEqual( formatParse( 'plural-msg-explicit-forms-nested', 6 ), 'Found 6 results', 'Plural message with explicit plural forms' ); + assert.strictEqual( formatParse( 'plural-msg-explicit-forms-nested', 0 ), 'Found no results in Wiki', 'Plural message with explicit plural forms, with nested {{SITENAME}}' ); + assert.strictEqual( formatParse( 'plural-msg-explicit-forms-nested', 1 ), 'Found 1 result', 'Plural message with explicit plural forms with placeholder nested' ); + assert.strictEqual( formatParse( 'plural-empty-explicit-form', 0 ), 'There is me.' ); + assert.strictEqual( formatParse( 'plural-empty-explicit-form', 1 ), 'There is me and other people.' ); + assert.strictEqual( formatParse( 'plural-empty-explicit-form', 2 ), 'There is me and other people.' ); } ); QUnit.test( 'Gender', function ( assert ) { @@ -247,53 +247,53 @@ // TODO: These tests should be for mw.msg once mw.msg integrated with mw.jqueryMsg // TODO: English may not be the best language for these tests. Use a language like Arabic or Russian mw.user.options.set( 'gender', 'male' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg', 'Bob', 'male' ), 'Bob: blue', 'Masculine from string "male"' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg', 'Bob', mw.user ), 'Bob: blue', 'Masculine from mw.user object' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg-currentuser' ), 'blue', 'Masculine for current user' ); mw.user.options.set( 'gender', 'female' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg', 'Alice', 'female' ), 'Alice: pink', 'Feminine from string "female"' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg', 'Alice', mw.user ), 'Alice: pink', 'Feminine from mw.user object' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg-currentuser' ), 'pink', 'Feminine for current user' ); mw.user.options.set( 'gender', 'unknown' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg', 'Foo', mw.user ), 'Foo: green', 'Neutral from mw.user object' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg', 'User' ), 'User: green', 'Neutral when no parameter given' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg', 'User', 'unknown' ), 'User: green', 'Neutral from string "unknown"' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg-currentuser' ), 'green', 'Neutral for current user' @@ -301,31 +301,31 @@ mw.messages.set( 'gender-msg-one-form', '{{GENDER:$1|User}}: $2 {{PLURAL:$2|edit|edits}}' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg-one-form', 'male', 10 ), 'User: 10 edits', 'Gender neutral and plural form' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg-one-form', 'female', 1 ), 'User: 1 edit', 'Gender neutral and singular form' ); mw.messages.set( 'gender-msg-lowercase', '{{gender:$1|he|she}} is awesome' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg-lowercase', 'male' ), 'he is awesome', 'Gender masculine' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg-lowercase', 'female' ), 'she is awesome', 'Gender feminine' ); mw.messages.set( 'gender-msg-wrong', '{{gender}} test' ); - assert.equal( + assert.strictEqual( formatParse( 'gender-msg-wrong', 'female' ), ' test', 'Invalid syntax should result in {{gender}} simply being stripped away' @@ -336,32 +336,32 @@ QUnit.test( 'Case changing', function ( assert ) { mw.messages.set( 'to-lowercase', '{{lc:thIS hAS MEsSed uP CapItaliZatiON}}' ); - assert.equal( formatParse( 'to-lowercase' ), 'this has messed up capitalization', 'To lowercase' ); + assert.strictEqual( formatParse( 'to-lowercase' ), 'this has messed up capitalization', 'To lowercase' ); mw.messages.set( 'to-caps', '{{uc:thIS hAS MEsSed uP CapItaliZatiON}}' ); - assert.equal( formatParse( 'to-caps' ), 'THIS HAS MESSED UP CAPITALIZATION', 'To caps' ); + assert.strictEqual( formatParse( 'to-caps' ), 'THIS HAS MESSED UP CAPITALIZATION', 'To caps' ); mw.messages.set( 'uc-to-lcfirst', '{{lcfirst:THis hAS MEsSed uP CapItaliZatiON}}' ); mw.messages.set( 'lc-to-lcfirst', '{{lcfirst:thIS hAS MEsSed uP CapItaliZatiON}}' ); - assert.equal( formatParse( 'uc-to-lcfirst' ), 'tHis hAS MEsSed uP CapItaliZatiON', 'Lcfirst caps' ); - assert.equal( formatParse( 'lc-to-lcfirst' ), 'thIS hAS MEsSed uP CapItaliZatiON', 'Lcfirst lowercase' ); + assert.strictEqual( formatParse( 'uc-to-lcfirst' ), 'tHis hAS MEsSed uP CapItaliZatiON', 'Lcfirst caps' ); + assert.strictEqual( formatParse( 'lc-to-lcfirst' ), 'thIS hAS MEsSed uP CapItaliZatiON', 'Lcfirst lowercase' ); mw.messages.set( 'uc-to-ucfirst', '{{ucfirst:THis hAS MEsSed uP CapItaliZatiON}}' ); mw.messages.set( 'lc-to-ucfirst', '{{ucfirst:thIS hAS MEsSed uP CapItaliZatiON}}' ); - assert.equal( formatParse( 'uc-to-ucfirst' ), 'THis hAS MEsSed uP CapItaliZatiON', 'Ucfirst caps' ); - assert.equal( formatParse( 'lc-to-ucfirst' ), 'ThIS hAS MEsSed uP CapItaliZatiON', 'Ucfirst lowercase' ); + assert.strictEqual( formatParse( 'uc-to-ucfirst' ), 'THis hAS MEsSed uP CapItaliZatiON', 'Ucfirst caps' ); + assert.strictEqual( formatParse( 'lc-to-ucfirst' ), 'ThIS hAS MEsSed uP CapItaliZatiON', 'Ucfirst lowercase' ); mw.messages.set( 'mixed-to-sentence', '{{ucfirst:{{lc:thIS hAS MEsSed uP CapItaliZatiON}}}}' ); - assert.equal( formatParse( 'mixed-to-sentence' ), 'This has messed up capitalization', 'To sentence case' ); + assert.strictEqual( formatParse( 'mixed-to-sentence' ), 'This has messed up capitalization', 'To sentence case' ); mw.messages.set( 'all-caps-except-first', '{{lcfirst:{{uc:thIS hAS MEsSed uP CapItaliZatiON}}}}' ); - assert.equal( formatParse( 'all-caps-except-first' ), 'tHIS HAS MESSED UP CAPITALIZATION', 'To opposite sentence case' ); + assert.strictEqual( formatParse( 'all-caps-except-first' ), 'tHIS HAS MESSED UP CAPITALIZATION', 'To opposite sentence case' ); } ); QUnit.test( 'Grammar', function ( assert ) { - assert.equal( formatParse( 'grammar-msg' ), 'Przeszukaj Wiki', 'Grammar Test with sitename' ); + assert.strictEqual( formatParse( 'grammar-msg' ), 'Przeszukaj Wiki', 'Grammar Test with sitename' ); mw.messages.set( 'grammar-msg-wrong-syntax', 'Przeszukaj {{GRAMMAR:grammar_case_xyz}}' ); - assert.equal( formatParse( 'grammar-msg-wrong-syntax' ), 'Przeszukaj ', 'Grammar Test with wrong grammar template syntax' ); + assert.strictEqual( formatParse( 'grammar-msg-wrong-syntax' ), 'Przeszukaj ', 'Grammar Test with wrong grammar template syntax' ); } ); QUnit.test( 'Match PHP parser', function ( assert ) { @@ -375,7 +375,7 @@ var parser; mw.config.set( 'wgUserLanguage', test.lang ); parser = new mw.jqueryMsg.Parser( { language: langClass } ); - assert.equal( + assert.strictEqual( parser.parse( test.key, test.args ).html(), test.result, test.name @@ -427,17 +427,17 @@ mw.messages.set( 'reverse-pipe-trick', '[[|Tampa, Florida]]' ); mw.messages.set( 'empty-link', '[[]]' ); this.suppressWarnings(); - assert.equal( + assert.strictEqual( formatParse( 'pipe-trick' ), '[[Tampa, Florida|]]', 'Pipe trick should not be parsed.' ); - assert.equal( + assert.strictEqual( formatParse( 'reverse-pipe-trick' ), '[[|Tampa, Florida]]', 'Reverse pipe trick should not be parsed.' ); - assert.equal( + assert.strictEqual( formatParse( 'empty-link' ), '[[]]', 'Empty link should not be parsed.' @@ -623,7 +623,7 @@ // Test non-{{ wikitext, where behavior differs // Wikilink - assert.equal( + assert.strictEqual( formatText( 'jquerymsg-test-statistics-users' ), mw.messages.get( 'jquerymsg-test-statistics-users' ), 'Internal link message unchanged when format is \'text\'' @@ -635,7 +635,7 @@ ); // External link - assert.equal( + assert.strictEqual( formatText( 'jquerymsg-test-version-entrypoints-index-php' ), mw.messages.get( 'jquerymsg-test-version-entrypoints-index-php' ), 'External link message unchanged when format is \'text\'' @@ -647,7 +647,7 @@ ); // External link with parameter - assert.equal( + assert.strictEqual( formatText( 'external-link-replace', 'http://example.com' ), 'Foo [http://example.com bar]', 'External link message only substitutes parameter when format is \'text\'' @@ -689,7 +689,7 @@ 'Link with nested message' ); - assert.equal( + assert.strictEqual( formatParse( 'see-portal-url' ), 'Project:Community portal is an important community page.', 'Nested message' @@ -706,7 +706,7 @@ mw.messages.set( 'uses-missing-int', '{{int:doesnt-exist}}' ); - assert.equal( + assert.strictEqual( formatParse( 'uses-missing-int' ), '⧼doesnt-exist⧽', 'int: where nested message does not exist' @@ -715,28 +715,28 @@ QUnit.test( 'Ns', function ( assert ) { mw.messages.set( 'ns-template-talk', '{{ns:Template talk}}' ); - assert.equal( + assert.strictEqual( formatParse( 'ns-template-talk' ), 'Dyskusja szablonu', 'ns: returns localised namespace when used with a canonical namespace name' ); mw.messages.set( 'ns-10', '{{ns:10}}' ); - assert.equal( + assert.strictEqual( formatParse( 'ns-10' ), 'Szablon', 'ns: returns localised namespace when used with a namespace number' ); mw.messages.set( 'ns-unknown', '{{ns:doesnt-exist}}' ); - assert.equal( + assert.strictEqual( formatParse( 'ns-unknown' ), '', 'ns: returns empty string for unknown namespace name' ); mw.messages.set( 'ns-in-a-link', '[[{{ns:template}}:Foo]]' ); - assert.equal( + assert.strictEqual( formatParse( 'ns-in-a-link' ), 'Szablon:Foo', 'ns: works when used inside a wikilink' @@ -810,7 +810,7 @@ { lang: 'ar', number: '٩٨٧٦٥٤٣٢١٫٦٥٤٣٢١', - result: 987654321, + result: '987654321', integer: true, description: 'formatnum test for Arabic, with decimal separator, reverse' }, @@ -823,7 +823,7 @@ { lang: 'ar', number: '-١٢٫٨٩', - result: -12, + result: '-12', integer: true, description: 'formatnum test for Arabic, negative number, reverse' }, @@ -905,7 +905,7 @@ var parser; mw.config.set( 'wgUserLanguage', test.lang ); parser = new mw.jqueryMsg.Parser( { language: langClass } ); - assert.equal( + assert.strictEqual( parser.parse( test.integer ? 'formatnum-msg-int' : 'formatnum-msg', [ test.number ] ).html(), test.result, @@ -944,7 +944,7 @@ 'Italics with link inside in parse mode' ); - assert.equal( + assert.strictEqual( formatText( 'jquerymsg-italics-with-link' ), mw.messages.get( 'jquerymsg-italics-with-link' ), 'Italics with link unchanged in text mode' @@ -971,7 +971,7 @@ 'Tag outside whitelist escaped in parse mode' ); - assert.equal( + assert.strictEqual( formatText( 'jquerymsg-script-msg' ), mw.messages.get( 'jquerymsg-script-msg' ), 'Tag outside whitelist unchanged in text mode' @@ -1007,14 +1007,14 @@ // Intentionally not using htmlEqual for the quote tests mw.messages.set( 'jquerymsg-double-quotes-preserved', 'Double' ); - assert.equal( + assert.strictEqual( formatParse( 'jquerymsg-double-quotes-preserved' ), mw.messages.get( 'jquerymsg-double-quotes-preserved' ), 'Attributes with double quotes are preserved as such' ); mw.messages.set( 'jquerymsg-single-quotes-normalized-to-double', 'Single' ); - assert.equal( + assert.strictEqual( formatParse( 'jquerymsg-single-quotes-normalized-to-double' ), 'Single', 'Attributes with single quotes are normalized to double' @@ -1110,21 +1110,21 @@ QUnit.test( 'Nowiki', function ( assert ) { mw.messages.set( 'jquerymsg-nowiki-link', 'Foo [[bar]] baz.' ); - assert.equal( + assert.strictEqual( formatParse( 'jquerymsg-nowiki-link' ), 'Foo [[bar]] baz.', 'Link inside nowiki is not parsed' ); mw.messages.set( 'jquerymsg-nowiki-htmltag', 'Foo bar baz.' ); - assert.equal( + assert.strictEqual( formatParse( 'jquerymsg-nowiki-htmltag' ), 'Foo <b>bar</b> baz.', 'HTML inside nowiki is not parsed and escaped' ); mw.messages.set( 'jquerymsg-nowiki-template', 'Foo {{bar}} baz.' ); - assert.equal( + assert.strictEqual( formatParse( 'jquerymsg-nowiki-template' ), 'Foo {{bar}} baz.', 'Template inside nowiki is not parsed and does not cause a parse error' @@ -1138,19 +1138,19 @@ this.suppressWarnings(); logSpy = this.sandbox.spy( mw.log, 'warn' ); - assert.equal( + assert.strictEqual( formatParse( 'invalid-wikitext' ), '<b>{{FAIL}}</b>', 'Invalid wikitext: \'parse\' format' ); - assert.equal( + assert.strictEqual( formatText( 'invalid-wikitext' ), '{{FAIL}}', 'Invalid wikitext: \'text\' format' ); - assert.equal( logSpy.callCount, 2, 'mw.log.warn calls' ); + assert.strictEqual( logSpy.callCount, 2, 'mw.log.warn calls' ); } ); QUnit.test( 'Integration', function ( assert ) { @@ -1159,13 +1159,13 @@ expected = 'Bold!'; mw.messages.set( 'integration-test', '[[Bold]]!' ); - assert.equal( + assert.strictEqual( mw.message( 'integration-test' ).parse(), expected, 'mw.message().parse() works correctly' ); - assert.equal( + assert.strictEqual( $( '' ).msg( 'integration-test' ).html(), expected, 'jQuery plugin $.fn.msg() works correctly' @@ -1177,7 +1177,7 @@ $( '' ).attr( 'href', 'http://example.com/' ) ); msg.parse(); // Not a no-op - assert.equal( + assert.strictEqual( msg.parse(), 'Link', 'Calling .parse() multiple times does not duplicate link contents' diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js index 6cb5d76e59..54d4285445 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js @@ -60,10 +60,10 @@ expected = repeat( '\n', n ) + 'some text'; $textarea = $( '' ); - assert.equal( $textarea.val(), expected, 'Expecting ' + n + ' newlines (HTML contained ' + ( n + 1 ) + ')' ); + assert.strictEqual( $textarea.val(), expected, 'Expecting ' + n + ' newlines (HTML contained ' + ( n + 1 ) + ')' ); $textarea = $( '