WMDE-leszek has uploaded a new change for review.

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

Change subject: Improve SliderView rendering tests
......................................................................

Improve SliderView rendering tests

Current rendering test passes but not really because test results meet
expectations but rather by accident.
Test revisions lacked ids, and current way of rendering revision made
all revision bars have id equal to "undefined" string. That made test
pass, although it is not what is expected (we expect three revisions
in tests but not that three revisions have the same id, and each of them
gets a pointer assigned to - the might look interesting in the browser,
though). Also the test will fail as soon as the way of rendering
revisions is switched to standard use of jquery's attr() instead of
handcrafting the HTML in the RevisionListView class.

This patch adds missing IDs to test Revisions where needed, and also
set config vars that are required to render Slider properly.
This also adds tests for cases where the exception is thrown.

This also makes RevisionList initialization consistent. RevisionList
expect to receive an array of revision data in a format that API
returns. Tests provided arrays of Revision objects instead. That
also works with a difference that API-like format uses "revid" as a field
containing revision ID, while Revision objects use a field named "id".
The way RevisionList was used in tests actually lead to have each
revision initialized twice, and on the second initialization it lost
its ID (due to field name difference). This changes test to provide
a API-like array instead of arrays of Revision objects to RevisionList.

Change-Id: I147270f28381038d05f8bcfd2317e8c269b2e458
---
M tests/RevisionSlider.RevisionList.test.js
M tests/RevisionSlider.Slider.test.js
M tests/RevisionSlider.SliderView.test.js
3 files changed, 62 insertions(+), 18 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/RevisionSlider 
refs/changes/96/291896/1

diff --git a/tests/RevisionSlider.RevisionList.test.js 
b/tests/RevisionSlider.RevisionList.test.js
index 2c8ea06..ffe79ec 100644
--- a/tests/RevisionSlider.RevisionList.test.js
+++ b/tests/RevisionSlider.RevisionList.test.js
@@ -1,14 +1,13 @@
 ( function ( mw ) {
-       var RevisionList = mw.libs.revisionSlider.RevisionList,
-               Revision = mw.libs.revisionSlider.Revision;
+       var RevisionList = mw.libs.revisionSlider.RevisionList;
 
        QUnit.module( 'ext.RevisionSlider.RevisionList' );
 
        QUnit.test( 'Find biggest Revision', function ( assert ) {
                var revs = new RevisionList( [
-                       new Revision( { size: 5 } ),
-                       new Revision( { size: 21 } ),
-                       new Revision( { size: 13 } )
+                       { size: 5 },
+                       { size: 21 },
+                       { size: 13 }
                ] );
 
                assert.equal( revs.getBiggestChangeSize(), 16 );
@@ -16,9 +15,9 @@
 
        QUnit.test( 'calculate relative size on init', function ( assert ) {
                var revs = new RevisionList( [
-                       new Revision( { size: 5 } ),
-                       new Revision( { size: 21 } ),
-                       new Revision( { size: 13 } )
+                       { size: 5 },
+                       { size: 21 },
+                       { size: 13 }
                ] );
 
                assert.equal( revs.getRevisions()[ 0 ].getRelativeSize(), 5 );
diff --git a/tests/RevisionSlider.Slider.test.js 
b/tests/RevisionSlider.Slider.test.js
index 15b3b73..44c0c2e 100644
--- a/tests/RevisionSlider.Slider.test.js
+++ b/tests/RevisionSlider.Slider.test.js
@@ -1,12 +1,11 @@
 ( function ( mw ) {
        var Slider = mw.libs.revisionSlider.Slider,
                RevisionList = mw.libs.revisionSlider.RevisionList,
-               Revision = mw.libs.revisionSlider.Revision,
                makeNRevisions = function ( n ) {
                        var revs = [],
                                i;
                        for ( i = 0; i < n; i++ ) {
-                               revs.push( new Revision( { user: 'Fooo' } ) );
+                               revs.push( { user: 'Fooo' } );
                        }
                        return new RevisionList( revs );
                };
@@ -14,7 +13,7 @@
        QUnit.module( 'ext.RevisionSlider.Slider' );
 
        QUnit.test( 'has revisions', function ( assert ) {
-               var revs = new RevisionList( [ new Revision( {} ), new 
Revision( {} ) ] ),
+               var revs = new RevisionList( [ {}, {} ] ),
                        slider = new Slider( revs );
 
                assert.equal( slider.getRevisions(), revs );
diff --git a/tests/RevisionSlider.SliderView.test.js 
b/tests/RevisionSlider.SliderView.test.js
index c2c7cf6..eef91a3 100644
--- a/tests/RevisionSlider.SliderView.test.js
+++ b/tests/RevisionSlider.SliderView.test.js
@@ -1,7 +1,6 @@
 ( function ( mw ) {
        var SliderView = mw.libs.revisionSlider.SliderView,
                Slider = mw.libs.revisionSlider.Slider,
-               Revision = mw.libs.revisionSlider.Revision,
                RevisionList = mw.libs.revisionSlider.RevisionList,
                startHistoryState, startHref;
 
@@ -16,16 +15,63 @@
                history.replaceState( startHistoryState, 'QUnit', startHref );
        } );
 
-       QUnit.test( 'render', function ( assert ) {
-               var $container = $( '<div/>' ),
+       QUnit.test( 'render adds the slider view with defined revisions 
selected', function ( assert ) {
+               var $container = $( '<div>' ),
                        view = new SliderView( new Slider( new RevisionList( [
-                               new Revision( { size: 5, comment: 'Comment1', 
user: 'User1' } ),
-                               new Revision( { size: 21, comment: 'Comment2', 
user: 'User2' } ),
-                               new Revision( { size: 13, comment: 'Comment3', 
user: 'User3' } )
-                       ] ) ) );
+                               { revid: 1, size: 5, comment: 'Comment1', user: 
'User1' },
+                               { revid: 3, size: 21, comment: 'Comment2', 
user: 'User2' },
+                               { revid: 37, size: 13, comment: 'Comment3', 
user: 'User3' }
+                       ] ) ) ),
+                       $revisionOld,
+                       $revisionNew;
+
+               mw.config.values.extRevisionSliderOldRev = 1;
+               mw.config.values.extRevisionSliderNewRev = 37;
 
                view.render( $container );
+
                assert.ok( $container.find( '.revision-slider' ).length > 0 );
+               $revisionOld = $container.find( '.revision-old' );
+               $revisionNew = $container.find( '.revision-new' );
+               assert.ok( $revisionOld.length > 0 );
+               assert.ok( $revisionOld.attr( 'data-revid' ) === '1' );
+               assert.ok( $revisionNew.length > 0 );
+               assert.ok( $revisionNew.attr( 'data-revid' ) === '37' );
+       } );
+
+       QUnit.test( 'render throws an exception when selected revision not in 
available range', function ( assert ) {
+               var $container = $( '<div>' ),
+                       view = new SliderView( new Slider( new RevisionList( [
+                               { revid: 3, size: 21, comment: 'Comment2', 
user: 'User2' },
+                               { revid: 37, size: 13, comment: 'Comment3', 
user: 'User3' }
+                       ] ) ) );
+
+               mw.config.values.extRevisionSliderOldRev = 1;
+               mw.config.values.extRevisionSliderNewRev = 37;
+
+               assert.throws(
+                       function () {
+                               view.render( $container );
+                       },
+                       function ( e ) {
+                               return e === 'RS-rev-out-of-range';
+                       }
+               );
+       } );
+
+       QUnit.test( 'render throws an exception when no selected revisions 
provided', function ( assert ) {
+               var $container = $( '<div>' ),
+                       view = new SliderView( new Slider( new RevisionList( [
+                               { revid: 1, size: 5, comment: 'Comment1', user: 
'User1' },
+                               { revid: 3, size: 21, comment: 'Comment2', 
user: 'User2' },
+                               { revid: 37, size: 13, comment: 'Comment3', 
user: 'User3' }
+                       ] ) ) );
+
+               assert.throws(
+                       function () {
+                               view.render( $container );
+                       }
+               );
        } );
 
 } )( mediaWiki );

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I147270f28381038d05f8bcfd2317e8c269b2e458
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/RevisionSlider
Gerrit-Branch: master
Gerrit-Owner: WMDE-leszek <leszek.mani...@wikimedia.de>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to