jenkins-bot has submitted this change and it was merged. Change subject: Make QUnit tests language-setting-proof ......................................................................
Make QUnit tests language-setting-proof There seems to be no good way to enforce language on the QUnit tests. It works for the number formatting by setting the user language on the fly but for everything else it fails. I simplified some tests and skip some tests or asserts when the language is not 'en'. I also added a helper to have conditions for skipping tests. This should be part of QUnit IMO. Still I dont know if this is something we should care about at all or just assume, that devs will know what they do when they try to run tests. Change-Id: I624ccf3984434e06200abffe7ccdd25b396251af --- M RevisionSlider.hooks.php A tests/qunit/QUnit.revisionSlider.testOrSkip.js M tests/qunit/RevisionSlider.Revision.test.js M tests/qunit/RevisionSlider.RevisionListView.test.js 4 files changed, 76 insertions(+), 53 deletions(-) Approvals: Addshore: Looks good to me, approved jenkins-bot: Verified diff --git a/RevisionSlider.hooks.php b/RevisionSlider.hooks.php index a1a1109..d2b059c 100644 --- a/RevisionSlider.hooks.php +++ b/RevisionSlider.hooks.php @@ -80,6 +80,7 @@ public static function onResourceLoaderTestModules( array &$testModules, ResourceLoader $rl ) { $testModules['qunit']['ext.RevisionSlider.tests'] = [ 'scripts' => [ + 'tests/qunit/QUnit.revisionSlider.testOrSkip.js', 'tests/qunit/RevisionSlider.Revision.test.js', 'tests/qunit/RevisionSlider.Pointer.test.js', 'tests/qunit/RevisionSlider.PointerView.test.js', diff --git a/tests/qunit/QUnit.revisionSlider.testOrSkip.js b/tests/qunit/QUnit.revisionSlider.testOrSkip.js new file mode 100644 index 0000000..33c4e61 --- /dev/null +++ b/tests/qunit/QUnit.revisionSlider.testOrSkip.js @@ -0,0 +1,14 @@ +( function ( $ ) { + QUnit.revisionSlider = {}; + + $.extend( QUnit.revisionSlider, { + // Helper function to add conditions to QUnit skip methods. + testOrSkip: function ( name, testCallback, skipCondition ) { + if ( skipCondition ) { + QUnit.skip( name, testCallback ); + } else { + QUnit.test( name, testCallback ); + } + } + } ); +} )( jQuery ); diff --git a/tests/qunit/RevisionSlider.Revision.test.js b/tests/qunit/RevisionSlider.Revision.test.js index 707f08a..38ccc81 100644 --- a/tests/qunit/RevisionSlider.Revision.test.js +++ b/tests/qunit/RevisionSlider.Revision.test.js @@ -16,50 +16,27 @@ assert.equal( rev.getSize(), data.size ); assert.equal( rev.getComment(), data.comment ); assert.equal( rev.getParsedComment(), data.parsedcomment ); - assert.equal( rev.getFormattedDate(), '10:27, 26 Apr 2016' ); assert.equal( rev.getUser(), data.user ); assert.equal( rev.isMinor(), false ); + + if ( mw.config.get( 'wgUserLanguage' ) === 'en' ) { + assert.equal( rev.getFormattedDate(), '10:27, 26 Apr 2016' ); + } } ); - QUnit.test( 'create minor Revision (minor empty string)', function ( assert ) { - var data = { - size: 5, - comment: 'hello', - parsedcomment: '<b>hello</b>', - timestamp: '2016-04-26T10:27:14Z', // 10:27, 26 Apr 2016 - user: 'meh', - minor: '' - }, - rev = new mw.libs.revisionSlider.Revision( data ); + QUnit.test( 'isMinor with minor empty string', function ( assert ) { + var rev = new mw.libs.revisionSlider.Revision( { + minor: '' + } ); - mw.libs.revisionSlider.userOffset = 0; - - assert.equal( rev.getSize(), data.size ); - assert.equal( rev.getComment(), data.comment ); - assert.equal( rev.getParsedComment(), data.parsedcomment ); - assert.equal( rev.getFormattedDate(), '10:27, 26 Apr 2016' ); - assert.equal( rev.getUser(), data.user ); assert.equal( rev.isMinor(), true ); } ); - QUnit.test( 'create minor Revision (minor true, as if from another Revision object)', function ( assert ) { - var data = { - size: 5, - comment: 'hello', - parsedcomment: '<b>hello</b>', - timestamp: '2016-04-26T10:27:14Z', // 10:27, 26 Apr 2016 - user: 'meh', - minor: true - }, - rev = new mw.libs.revisionSlider.Revision( data ); + QUnit.test( 'isMinor with minor true', function ( assert ) { + var rev = new mw.libs.revisionSlider.Revision( { + minor: true + } ); - mw.libs.revisionSlider.userOffset = 0; - - assert.equal( rev.getSize(), data.size ); - assert.equal( rev.getComment(), data.comment ); - assert.equal( rev.getParsedComment(), data.parsedcomment ); - assert.equal( rev.getFormattedDate(), '10:27, 26 Apr 2016' ); - assert.equal( rev.getUser(), data.user ); assert.equal( rev.isMinor(), true ); } ); @@ -70,37 +47,37 @@ assert.equal( rev.getRelativeSize(), size ); } ); - QUnit.test( 'getFormattedDate, offset: 0', function ( assert ) { + QUnit.revisionSlider.testOrSkip( 'getFormattedDate, offset: 0', function ( assert ) { var rev = new mw.libs.revisionSlider.Revision( { - timestamp: '2016-04-26T10:27:14Z' // 10:27, 26 Apr 2016 - } ); + timestamp: '2016-04-26T10:27:14Z' // 10:27, 26 Apr 2016 + } ); mw.libs.revisionSlider.userOffset = 0; assert.equal( rev.getFormattedDate(), '10:27, 26 Apr 2016' ); - } ); + }, mw.config.get( 'wgUserLanguage' ) !== 'en' ); - QUnit.test( 'getFormattedDate, offset: 120 (treat as hours, +2h)', function ( assert ) { + QUnit.revisionSlider.testOrSkip( 'getFormattedDate, offset: 120 (treat as hours, +2h)', function ( assert ) { var rev = new mw.libs.revisionSlider.Revision( { - timestamp: '2016-04-26T10:27:14Z' // 10:27, 26 Apr 2016 - } ); + timestamp: '2016-04-26T10:27:14Z' // 10:27, 26 Apr 2016 + } ); // Berlin = 120 mw.libs.revisionSlider.userOffset = 120; assert.equal( rev.getFormattedDate(), '12:27, 26 Apr 2016' ); - } ); + }, mw.config.get( 'wgUserLanguage' ) !== 'en' ); - QUnit.test( 'getFormattedDate, negative offset: -420 (treat as hours, -7h)', function ( assert ) { + QUnit.revisionSlider.testOrSkip( 'getFormattedDate, negative offset: -420 (treat as hours, -7h)', function ( assert ) { var rev = new mw.libs.revisionSlider.Revision( { - timestamp: '2016-04-26T10:27:14Z' // 10:27, 26 Apr 2016 - } ); + timestamp: '2016-04-26T10:27:14Z' // 10:27, 26 Apr 2016 + } ); // San Francisco = -420 mw.libs.revisionSlider.userOffset = -420; assert.equal( rev.getFormattedDate(), '03:27, 26 Apr 2016' ); - } ); + }, mw.config.get( 'wgUserLanguage' ) !== 'en' ); QUnit.test( 'hasEmptyComment comment with whitespaces', function ( assert ) { var rev = new mw.libs.revisionSlider.Revision( { diff --git a/tests/qunit/RevisionSlider.RevisionListView.test.js b/tests/qunit/RevisionSlider.RevisionListView.test.js index 26d2194..5730e56 100644 --- a/tests/qunit/RevisionSlider.RevisionListView.test.js +++ b/tests/qunit/RevisionSlider.RevisionListView.test.js @@ -30,7 +30,7 @@ var revisionListView = new RevisionListView(), revision = new Revision( { revid: 1, - size: 1230, + size: 230, comment: 'Hello', parsedcomment: '<strong>Hello</strong>', timestamp: '2016-04-26T10:27:14Z', // 10:27, 26 Apr 2016 @@ -39,19 +39,44 @@ } ), $tooltipHtml; - revision.setRelativeSize( 3210 ); + revision.setRelativeSize( 210 ); mw.libs.revisionSlider.userOffset = 0; $tooltipHtml = revisionListView.makeTooltip( revision ); - assert.ok( $tooltipHtml.match( /10:27, 26 Apr 2016/ ), 'Test the date.' ); assert.ok( $tooltipHtml.match( /User1/ ), 'Test the user.' ); assert.ok( $tooltipHtml.match( /Hello/ ), 'Test the comment.' ); - assert.ok( $tooltipHtml.match( /1,230/ ), 'Test the page size.' ); - assert.ok( $tooltipHtml.match( /\+3,210/ ), 'Test the change size.' ); - assert.ok( $tooltipHtml.match( /This is a minor edit/ ), 'Test for minor edit.' ); + assert.ok( $tooltipHtml.match( /230/ ), 'Test the page size.' ); + assert.ok( $tooltipHtml.match( /\+210/ ), 'Test the change size.' ); } ); + + QUnit.revisionSlider.testOrSkip( 'tool tip is composed correctly with en lang', function ( assert ) { + var revisionListView = new RevisionListView(), + revision = new Revision( { + revid: 1, + size: 2300, + comment: 'Hello', + parsedcomment: '<strong>Hello</strong>', + timestamp: '2016-04-26T10:27:14Z', // 10:27, 26 Apr 2016 + user: 'User1', + minor: true + } ), + $tooltipHtml; + + revision.setRelativeSize( 2100 ); + + mw.libs.revisionSlider.userOffset = 0; + + $tooltipHtml = revisionListView.makeTooltip( revision ); + + assert.ok( $tooltipHtml.match( /User1/ ), 'Test the user.' ); + assert.ok( $tooltipHtml.match( /Hello/ ), 'Test the comment.' ); + assert.ok( $tooltipHtml.match( /2,300/ ), 'Test the page size.' ); + assert.ok( $tooltipHtml.match( /\+2,100/ ), 'Test the change size.' ); + assert.ok( $tooltipHtml.match( /10:27, 26 Apr 2016/ ), 'Test the date.' ); + assert.ok( $tooltipHtml.match( /minor/ ), 'Test minor.' ); + }, mw.config.get( 'wgUserLanguage' ) !== 'en' ); QUnit.test( 'empty user leads to no user line', function ( assert ) { var revisionListView = new RevisionListView(), @@ -138,18 +163,24 @@ QUnit.test( 'big change number is formatted correctly', function ( assert ) { var revisionListView = new RevisionListView(), + originalUserLangSetting = mw.config.get( 'wgUserLanguage' ), $changeSizeLineHtml; + mw.config.set( 'wgUserLanguage', 'en' ); $changeSizeLineHtml = revisionListView.makeChangeSizeLine( 1000 ); + mw.config.set( 'wgUserLanguage', originalUserLangSetting ); assert.equal( $changeSizeLineHtml.find( '.mw-revslider-change-positive' ).text(), '+1,000' ); } ); QUnit.test( 'page size is formatted correctly', function ( assert ) { var revisionListView = new RevisionListView(), + originalUserLangSetting = mw.config.get( 'wgUserLanguage' ), $pageSizeLineHtml; + mw.config.set( 'wgUserLanguage', 'en' ); $pageSizeLineHtml = revisionListView.makePageSizeLine( 1337 ); + mw.config.set( 'wgUserLanguage', originalUserLangSetting ); assert.ok( $pageSizeLineHtml.text().match( /1,337/ ) ); } ); -- To view, visit https://gerrit.wikimedia.org/r/297252 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I624ccf3984434e06200abffe7ccdd25b396251af Gerrit-PatchSet: 2 Gerrit-Project: mediawiki/extensions/RevisionSlider Gerrit-Branch: master Gerrit-Owner: WMDE-Fisch <christoph.fisc...@wikimedia.de> Gerrit-Reviewer: Addshore <addshorew...@gmail.com> Gerrit-Reviewer: Gabriel Birke <gabriel.bi...@wikimedia.de> Gerrit-Reviewer: Jakob <jakob.warkot...@wikimedia.de> Gerrit-Reviewer: Kai Nissen (WMDE) <kai.nis...@wikimedia.de> Gerrit-Reviewer: Tobias Gritschacher <tobias.gritschac...@wikimedia.de> Gerrit-Reviewer: WMDE-Fisch <christoph.fisc...@wikimedia.de> Gerrit-Reviewer: WMDE-leszek <leszek.mani...@wikimedia.de> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits