X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fqunit%2Fsuites%2Fresources%2Fmediawiki%2Fmediawiki.jqueryMsg.test.js;h=1c7d8ee14a2535fea339de2240f33b9a6d42c815;hb=bb084a35739e3f3c54c8680f756ebebb90e13f28;hp=e4cf4461d553603cdd07a8fb83d81264d2bb1fa8;hpb=6704cbe78f5817baff78308ad27145002d40ccec;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js index e4cf4461d5..1c7d8ee14a 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js @@ -1,4 +1,4 @@ -( function ( mw, $ ) { +( function () { /* eslint-disable camelcase */ var formatText, formatParse, formatnumTests, specialCharactersPageName, expectedListUsers, expectedListUsersSitename, expectedLinkPagenamee, expectedEntrypoints, @@ -1154,11 +1154,78 @@ assert.strictEqual( logSpy.callCount, 2, 'mw.log.warn calls' ); } ); + QUnit.test( 'Non-string parameters to various functions', function ( assert ) { + var i, cases; + + // For jquery-param-int + mw.messages.set( 'x', 'y' ); + // For jquery-param-grammar + mw.language.setData( 'en', 'grammarTransformations', { + test: [ + [ 'x', 'y' ] + ] + } ); + + cases = [ + { + key: 'jquery-param-wikilink', + msg: '[[$1]] [[$1|a]]', + expected: 'x a' + }, + { + key: 'jquery-param-plural', + msg: '{{PLURAL:$1|a|b}}', + expected: 'b' + }, + { + key: 'jquery-param-gender', + msg: '{{GENDER:$1|a|b}}', + expected: 'a' + }, + { + key: 'jquery-param-grammar', + msg: '{{GRAMMAR:test|$1}}', + expected: 'x' + }, + { + key: 'jquery-param-int', + msg: '{{int:$1}}', + expected: 'y' + }, + { + key: 'jquery-param-ns', + msg: '{{ns:$1}}', + expected: '' + }, + { + key: 'jquery-param-formatnum', + msg: '{{formatnum:$1}}', + expected: 'x' + }, + { + key: 'jquery-param-case', + msg: '{{lc:$1}} {{uc:$1}} {{lcfirst:$1}} {{ucfirst:$1}}', + expected: 'x X x X' + } + ]; + + for ( i = 0; i < cases.length; i++ ) { + mw.messages.set( cases[ i ].key, cases[ i ].msg ); + assert.strictEqual( + mw.message( cases[ i ].key, $( '' ).text( 'x' ) ).parse(), + cases[ i ].expected, + cases[ i ].key + ); + } + } ); + QUnit.test( 'Integration', function ( assert ) { - var expected, msg; + var expected, msg, $bar; expected = 'Bold!'; mw.messages.set( 'integration-test', '[[Bold]]!' ); + mw.messages.set( 'param-test', 'Hello $1' ); + mw.messages.set( 'param-test-with-link', 'Hello $1 [[$2|$3]]' ); assert.strictEqual( mw.message( 'integration-test' ).parse(), @@ -1172,6 +1239,35 @@ 'jQuery plugin $.fn.msg() works correctly' ); + assert.strictEqual( + mw.message( 'param-test', $( '' ).text( 'World' ) ).parse(), + 'Hello World', + 'Passing a jQuery object as a parameter to a message without wikitext works correctly' + ); + + assert.strictEqual( + mw.message( 'param-test', $( '' ).text( 'World' ).get( 0 ) ).parse(), + 'Hello World', + 'Passing a DOM node as a parameter to a message without wikitext works correctly' + ); + + assert.strictEqual( + mw.message( 'param-test', undefined ).parse(), + 'Hello $1', + 'Passing undefined as a parameter to a message does not throw an exception' + ); + + assert.strictEqual( + mw.message( + 'param-test-with-link', + $( '' ).text( 'cruel' ), + 'Globe', + 'world' + ).parse(), + 'Hello cruel world', + 'Message with a jQuery parameter and a parsed link' + ); + mw.messages.set( 'integration-test-extlink', '[$1 Link]' ); msg = mw.message( 'integration-test-extlink', @@ -1183,6 +1279,10 @@ 'Link', 'Calling .parse() multiple times does not duplicate link contents' ); + + mw.config.set( 'wgUserLanguage', 'qqx' ); + $bar = $( '' ).text( 'bar' ); + assert.strictEqual( mw.message( 'foo', $bar, 'baz' ).parse(), '(foo: bar, baz)', 'qqx message with parameters' ); } ); QUnit.test( 'setParserDefaults', function ( assert ) { @@ -1221,4 +1321,4 @@ 'setParserDefaults is deep if requested' ); } ); -}( mediaWiki, jQuery ) ); +}() );