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

Reply via email to