( function ( $, mw ) { QUnit.module( 'ext.popups' ); QUnit.test( 'render.article.getProcessedElements', function ( assert ) { QUnit.expect( 9 ); function test ( extract, title, expected, msg ) { var $div = $( '
' ).append( mw.popups.render.article.getProcessedElements( extract, title ) ); assert.equal( $div.html(), expected, msg ); } test( 'Isaac Newton was born in', 'Isaac Newton', 'Isaac Newton was born in', 'Title as first word' ); test( 'The C* language not to be confused with C# or C', 'C*', 'The C* language not to be confused with C# or C', 'Title containing *' ); test( 'Person (was born in Location) is good', 'Person', 'Person is good', 'Extract with text in parentheses' ); test( 'Person (was born in Location (at Time)) is good', 'Person', 'Person is good', 'Extract with nested parentheses' ); test( 'Person (was born in Location (at Time) ) is good', 'Person', 'Person is good', 'Extract with nested parentheses and random spaces' ); test( 'Brackets ) are funny ( when not used properly', 'Brackets', 'Brackets ) are funny ( when not used properly', 'Extract with unbalanced parentheses' ); test( 'Epic XSS is epic', 'Epic XSS', 'Epic XSS <script>alert</script> is epic', 'XSS Attack' ); test( 'Foo\'s pub is a pub in Bar', 'Foo\'s pub', 'Foo&#039;s pub is a pub in Bar', 'Correct escaping' ); test( '*Testing if Things are correctly identified', 'Things', '*Testing if Things are correctly identified', 'Article that begins with asterisk' ); } ); } ) ( jQuery, mediaWiki );