mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Popups
synced 2024-12-02 19:26:24 +00:00
ef283c2509
Page Previews should be able to consume HTML response generated by MediaWiki. First we need to move out plain text crunching from renderer.js and model.js. Mediawiki and Restbase gateways will have to parse/htmlize plaintext into nice HTML by themselves. Bug: T165018 Change-Id: I5d7e9f610bb809aa9fb035a4a9f96e9e8796c9d8
95 lines
2.2 KiB
JavaScript
95 lines
2.2 KiB
JavaScript
var $ = jQuery,
|
|
formatter = require( '../../src/formatter' );
|
|
|
|
QUnit.module( 'ext.popups.formatter', {
|
|
beforeEach: function () {
|
|
window.mediaWiki.RegExp = {
|
|
escape: this.sandbox.spy( function ( str ) {
|
|
return str.replace( /([\\{}()|.?*+\-\^$\[\]])/g, '\\$1' );
|
|
} )
|
|
};
|
|
},
|
|
afterEach: function () {
|
|
window.mediaWiki.RegExp = null;
|
|
}
|
|
} );
|
|
|
|
QUnit.test( 'Title is bold', function ( assert ) {
|
|
var cases = [
|
|
[
|
|
'Isaac Newton was born in', 'Isaac Newton',
|
|
'<b>Isaac Newton</b> was born in',
|
|
'Title as first word'
|
|
],
|
|
[
|
|
'The C* language not to be confused with C# or C', 'C*',
|
|
'The <b>C*</b> language not to be confused with C# or C',
|
|
'Title containing *'
|
|
],
|
|
[
|
|
'I like trains', 'Train',
|
|
'I like <b>train</b>s',
|
|
'Make the simple plural bold'
|
|
],
|
|
[
|
|
'Foo\'s pub is a pub in Bar', 'Foo\'s pub',
|
|
'<b>Foo\'s pub</b> is a pub in Bar',
|
|
'Correct escaping'
|
|
],
|
|
[
|
|
'\"Heroes\" is a David Bowie album', '\"Heroes\"',
|
|
'<b>\"Heroes\"</b> is a David Bowie album',
|
|
'Quotes in title'
|
|
],
|
|
[
|
|
'*Testing if Things are correctly identified', 'Things',
|
|
'*Testing if <b>Things</b> are correctly identified',
|
|
'Article that begins with asterisk'
|
|
],
|
|
[
|
|
'Testing if repeated words are not matched when repeated', 'Repeated',
|
|
'Testing if <b>repeated</b> words are not matched when repeated',
|
|
'Repeated title'
|
|
]
|
|
];
|
|
|
|
function test( extract, title, expected, msg ) {
|
|
var $div = $( '<div>' ).append(
|
|
formatter.htmlize( extract, title )
|
|
);
|
|
assert.equal( $div.html(), expected, msg );
|
|
}
|
|
|
|
cases.forEach( function ( case_ ) {
|
|
test( case_[ 0 ], case_[ 1 ], case_[ 2 ], case_[ 3 ] );
|
|
} );
|
|
} );
|
|
|
|
QUnit.test( 'it strips ellipsis and parentheticals', function ( assert ) {
|
|
var i, testCase, cases = [
|
|
// removeEllipsis
|
|
[ 'Extract...', 'Extract' ],
|
|
[ 'Extract.', 'Extract.' ],
|
|
[ '..Extract..', '..Extract..' ],
|
|
[ '...', '' ],
|
|
|
|
// removeParentheticals
|
|
[ 'Foo', 'Foo' ],
|
|
[ 'Foo (', 'Foo (' ],
|
|
[ 'Foo (Bar)', 'Foo' ],
|
|
[ 'Foo (Bar))', 'Foo (Bar))' ],
|
|
[ 'Foo )(Bar)', 'Foo )(Bar)' ],
|
|
[ '(Bar)', '' ]
|
|
], $div;
|
|
|
|
for ( i = 0; i < cases.length; i++ ) {
|
|
testCase = cases[ i ];
|
|
|
|
$div = $( '<div>' ).append(
|
|
formatter.htmlize( testCase[ 0 ], 'Test' )
|
|
);
|
|
|
|
assert.equal( $div.html(), testCase[ 1 ] );
|
|
}
|
|
} );
|