mediawiki-extensions-Revisi.../tests/qunit/RevisionSlider.RevisionListView.test.js
Leszek Manicki b46c105202 Reset custom separator transform tables in number formatting tests
Looks like custom settings used in a test for number separator
transformation added in Icc9bc09675151645055c7e7f706472a15cc81b0f
influenced RevisonSlider's tests resulting in test failure if
that core test was run before RS test.
Relevant RevisionSlider tests now are ignoring any custom value.
Any value before the test is restored after the test run, though,
in case other tests relied on this (which does not seem to be a case).

Bug: T153121
Change-Id: Ida81b93e4d081b6948e760995a92d182ad79fe0f
2016-12-14 11:23:28 +01:00

204 lines
7.5 KiB
JavaScript

( function ( mw ) {
var RevisionListView = mw.libs.revisionSlider.RevisionListView,
RevisionList = mw.libs.revisionSlider.RevisionList,
Revision = mw.libs.revisionSlider.Revision;
QUnit.module( 'ext.RevisionSlider.RevisionListView' );
QUnit.test( 'render adds revisions', function ( assert ) {
var revisionListView = new RevisionListView( new RevisionList( [
new Revision( { revid: 1, size: 5, comment: '' } ),
new Revision( { revid: 3, size: 213, comment: '' } ),
new Revision( { revid: 37, size: 100, comment: '' } )
] ) ),
$resultHtml, $revisionWrapperDivs, $revisionDivs;
$resultHtml = revisionListView.render( 11 );
$revisionWrapperDivs = $resultHtml.find( '.mw-revslider-revision-wrapper' );
$revisionDivs = $resultHtml.find( '.mw-revslider-revision' );
assert.equal( $revisionWrapperDivs.length, 3 );
assert.equal( $( $revisionDivs[ 0 ] ).attr( 'data-revid' ), 1 );
assert.equal( $( $revisionDivs[ 2 ] ).attr( 'data-revid' ), 37 );
assert.equal( $( $revisionDivs[ 1 ] ).css( 'width' ), '11px' );
assert.equal( $( $revisionDivs[ 1 ] ).css( 'height' ), '70px' ); // max relative size
assert.ok( $( $revisionDivs[ 1 ] ).hasClass( 'mw-revslider-revision-up' ) );
assert.ok( $( $revisionDivs[ 2 ] ).hasClass( 'mw-revslider-revision-down' ) );
} );
QUnit.test( 'tooltip is composed correctly', function ( assert ) {
var revisionListView = new RevisionListView(),
revision = new Revision( {
revid: 1,
size: 230,
comment: 'Hello',
parsedcomment: '<strong>Hello</strong>',
timestamp: '2016-04-26T10:27:14Z', // 10:27, 26 Apr 2016
user: 'User1',
minor: true
} ),
tooltip,
tooltipHtml;
revision.setRelativeSize( 210 );
mw.libs.revisionSlider.userOffset = 0;
tooltip = revisionListView.makeTooltip( revision );
tooltipHtml = tooltip.$element.html();
assert.ok( tooltipHtml.match( /User1/ ), 'Test the user.' );
assert.ok( tooltipHtml.match( /Hello/ ), 'Test the comment.' );
assert.ok( tooltipHtml.match( /230/ ), 'Test the page size.' );
assert.ok( tooltipHtml.match( /\+210/ ), 'Test the change size.' );
} );
QUnit.revisionSlider.testOrSkip( 'tooltip 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
} ),
tooltip,
tooltipHtml,
originalSeparatorTransformTable = mw.language.getData( 'en', 'separatorTransformTable' );
revision.setRelativeSize( 2100 );
mw.libs.revisionSlider.userOffset = 0;
mw.language.setData( 'en', 'separatorTransformTable', null );
tooltip = revisionListView.makeTooltip( revision );
tooltipHtml = tooltip.$element.html();
mw.language.setData( 'en', 'separatorTransformTable', originalSeparatorTransformTable );
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( /26 April 2016 10:27 AM/ ), '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(),
$userLineHtml;
$userLineHtml = revisionListView.makeUserLine( null );
assert.equal( $userLineHtml, '' );
} );
QUnit.test( 'user line is composed correctly', function ( assert ) {
var revisionListView = new RevisionListView(),
$userLineHtml;
$userLineHtml = revisionListView.makeUserLine( 'User1' );
assert.equal( $userLineHtml.find( 'a' ).text(), 'User1' );
assert.ok( $userLineHtml.find( 'a' ).attr( 'href' ).match( /User:User1/ ) );
} );
QUnit.test( 'IP user line is composed correctly', function ( assert ) {
var revisionListView = new RevisionListView(),
$userLineHtml;
$userLineHtml = revisionListView.makeUserLine( '127.0.0.1' );
assert.equal( $userLineHtml.find( 'a' ).text(), '127.0.0.1' );
assert.ok( $userLineHtml.find( 'a' ).attr( 'href' ).match( /Special:Contributions\/127.0.0.1/ ) );
} );
QUnit.test( 'empty comment leads to no comment line', function ( assert ) {
var revisionListView = new RevisionListView(),
$commentHtml;
$commentHtml = revisionListView.makeCommentLine( new Revision( {
comment: ' ',
parsedcomment: ' '
} ) );
assert.equal( $commentHtml, '' );
} );
QUnit.test( 'comment line is composed correctly', function ( assert ) {
var revisionListView = new RevisionListView(),
$commentLineHtml;
$commentLineHtml = revisionListView.makeCommentLine( new Revision( {
comment: 'Hello',
parsedcomment: '<strong>Hello</strong>'
} ) );
assert.equal( $commentLineHtml.find( 'strong' ).length, 2 );
} );
QUnit.test( 'positive change is composed correctly', function ( assert ) {
var revisionListView = new RevisionListView(),
$changeSizeLineHtml;
$changeSizeLineHtml = revisionListView.makeChangeSizeLine( 9 );
assert.equal( $changeSizeLineHtml.find( '.mw-revslider-change-positive' ).length, 1 );
assert.equal( $changeSizeLineHtml.find( '.mw-revslider-change-positive' ).text(), '+9' );
} );
QUnit.test( 'negative change is composed correctly', function ( assert ) {
var revisionListView = new RevisionListView(),
$changeSizeLineHtml;
$changeSizeLineHtml = revisionListView.makeChangeSizeLine( -9 );
assert.equal( $changeSizeLineHtml.find( '.mw-revslider-change-negative' ).length, 1 );
assert.equal( $changeSizeLineHtml.find( '.mw-revslider-change-negative' ).text(), '-9' );
} );
QUnit.test( 'neutral change is composed correctly', function ( assert ) {
var revisionListView = new RevisionListView(),
$changeSizeLineHtml;
$changeSizeLineHtml = revisionListView.makeChangeSizeLine( 0 );
assert.equal( $changeSizeLineHtml.find( '.mw-revslider-change-none' ).length, 1 );
assert.equal( $changeSizeLineHtml.find( '.mw-revslider-change-none' ).text(), '0' );
} );
QUnit.test( 'big change number is formatted correctly', function ( assert ) {
var revisionListView = new RevisionListView(),
originalUserLangSetting = mw.config.get( 'wgUserLanguage' ),
originalSeparatorTransformTable = mw.language.getData( 'en', 'separatorTransformTable' ),
$changeSizeLineHtml;
mw.config.set( 'wgUserLanguage', 'en' );
mw.language.setData( 'en', 'separatorTransformTable', null );
$changeSizeLineHtml = revisionListView.makeChangeSizeLine( 1000 );
mw.config.set( 'wgUserLanguage', originalUserLangSetting );
mw.language.setData( 'en', 'separatorTransformTable', originalSeparatorTransformTable );
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' ),
originalSeparatorTransformTable = mw.language.getData( 'en', 'separatorTransformTable' ),
$pageSizeLineHtml;
mw.config.set( 'wgUserLanguage', 'en' );
mw.language.setData( 'en', 'separatorTransformTable', null );
$pageSizeLineHtml = revisionListView.makePageSizeLine( 1337 );
mw.config.set( 'wgUserLanguage', originalUserLangSetting );
mw.language.setData( 'en', 'separatorTransformTable', originalSeparatorTransformTable );
assert.ok( $pageSizeLineHtml.text().match( /1,337/ ) );
} );
}( mediaWiki ) );