Merge "(bug 33658) support for {{GRAMMAR:}} in jqueryMsg"
[lhc/web/wiklou.git] / tests / qunit / suites / resources / mediawiki / mediawiki.jqueryMsg.test.js
1 module( 'mediawiki.jqueryMsg' );
2
3 test( '-- Initial check', function() {
4 expect( 1 );
5 ok( mw.jqueryMsg, 'mw.jqueryMsg defined' );
6 } );
7
8 test( 'mw.jqueryMsg Plural', function() {
9 expect( 5 );
10 var parser = mw.jqueryMsg.getMessageFunction();
11 ok( parser, 'Parser Function initialized' );
12 ok( mw.messages.set( 'plural-msg', 'Found $1 {{PLURAL:$1|item|items}}' ), 'mw.messages.set: Register' );
13 equal( parser( 'plural-msg', 0 ) , 'Found 0 items', 'Plural test for english with zero as count' );
14 equal( parser( 'plural-msg', 1 ) , 'Found 1 item', 'Singular test for english' );
15 equal( parser( 'plural-msg', 2 ) , 'Found 2 items', 'Plural test for english' );
16 } );
17
18
19 test( 'mw.jqueryMsg Gender', function() {
20 expect( 16 );
21 //TODO: These tests should be for mw.msg once mw.msg integrated with mw.jqueryMsg
22 var user = mw.user;
23 user.options.set( 'gender', 'male' );
24 var parser = mw.jqueryMsg.getMessageFunction();
25 ok( parser, 'Parser Function initialized' );
26 //TODO: English may not be the best language for these tests. Use a language like Arabic or Russian
27 ok( mw.messages.set( 'gender-msg', '$1 reverted {{GENDER:$2|his|her|their}} last edit' ), 'mw.messages.set: Register' );
28 equal( parser( 'gender-msg', 'Bob', 'male' ) , 'Bob reverted his last edit', 'Gender masculine' );
29 equal( parser( 'gender-msg', 'Bob', user ) , 'Bob reverted his last edit', 'Gender masculine' );
30 user.options.set( 'gender', 'unknown' );
31 equal( parser( 'gender-msg', 'They', user ) , 'They reverted their last edit', 'Gender neutral or unknown' );
32 equal( parser( 'gender-msg', 'Alice', 'female' ) , 'Alice reverted her last edit', 'Gender feminine' );
33 equal( parser( 'gender-msg', 'User' ) , 'User reverted their last edit', 'Gender neutral' );
34 equal( parser( 'gender-msg', 'User', 'unknown' ) , 'User reverted their last edit', 'Gender neutral' );
35 ok( mw.messages.set( 'gender-msg-one-form', '{{GENDER:$1|User}} reverted last $2 {{PLURAL:$2|edit|edits}}' ), 'mw.messages.set: Register' );
36 equal( parser( 'gender-msg-one-form', 'male', 10 ) , 'User reverted last 10 edits', 'Gender neutral and plural form' );
37 equal( parser( 'gender-msg-one-form', 'female', 1 ) , 'User reverted last 1 edit', 'Gender neutral and singular form' );
38 ok( mw.messages.set( 'gender-msg-lowercase', '{{gender:$1|he|she}} is awesome' ), 'mw.messages.set: Register' );
39 equal( parser( 'gender-msg-lowercase', 'male' ) , 'he is awesome', 'Gender masculine' );
40 equal( parser( 'gender-msg-lowercase', 'female' ) , 'she is awesome', 'Gender feminine' );
41 ok( mw.messages.set( 'gender-msg-wrong', '{{gender}} is awesome' ), 'mw.messages.set: Register' );
42 equal( parser( 'gender-msg-wrong', 'female' ) , ' is awesome', 'Wrong syntax used, but ignore the {{gender}}' );
43 } );
44
45
46 test( 'mw.jqueryMsg Grammar', function() {
47 expect( 5 );
48 var parser = mw.jqueryMsg.getMessageFunction();
49 ok( parser, 'Parser Function initialized' );
50 // Hope the grammar form grammar_case_foo is not valid in any language
51 ok( mw.messages.set( 'grammar-msg', 'Przeszukaj {{GRAMMAR:grammar_case_foo|{{SITENAME}}}}' ), 'mw.messages.set: Register' );
52 equal( parser( 'grammar-msg' ) , 'Przeszukaj ' + mw.config.get( 'wgSiteName' ) , 'Grammar Test with sitename' );
53 ok( mw.messages.set( 'grammar-msg-wrong-syntax', 'Przeszukaj {{GRAMMAR:grammar_case_xyz}}' ), 'mw.messages.set: Register' );
54 equal( parser( 'grammar-msg-wrong-syntax' ) , 'Przeszukaj ' , 'Grammar Test with wrong grammar template syntax' );
55 } );