mediawiki-extensions-Revisi.../tests/qunit/RevisionSlider.RevisionListView.test.js
thiemowmde 3d93003dcc Drop wikitext comment in favor of parsedcomment
The plain wikitext comment is apparently not used for anything,
anywhere. It was for some reason used for an "is empty" check. But
we can do the same with the `parsedcomment`. I checked and an empty
comment doesn't result in something non-empty like `<div></div>`, but
stays as an empty string.

Change-Id: Iedc5898b7b0f82231328ab3e0e46b1461ca845b1
2023-08-25 14:42:32 +02:00

168 lines
6.3 KiB
JavaScript

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