Merge "[FileBackend] Rewrote FileBackendStoreShardListIterator to actually work."
[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( 3 );
10 var parser = mw.jqueryMsg.getMessageFunction();
11
12 mw.messages.set( 'plural-msg', 'Found $1 {{PLURAL:$1|item|items}}' );
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( 11 );
21 // TODO: These tests should be for mw.msg once mw.msg integrated with mw.jqueryMsg
22 // TODO: English may not be the best language for these tests. Use a language like Arabic or Russian
23 var user = mw.user,
24 parser = mw.jqueryMsg.getMessageFunction();
25
26 // The values here are not significant,
27 // what matters is which of the values is choosen by the parser
28 mw.messages.set( 'gender-msg', '$1: {{GENDER:$2|blue|pink|green}}' );
29
30 user.options.set( 'gender', 'male' );
31 equal(
32 parser( 'gender-msg', 'Bob', 'male' ),
33 'Bob: blue',
34 'Masculine from string "male"'
35 );
36 equal(
37 parser( 'gender-msg', 'Bob', user ),
38 'Bob: blue',
39 'Masculine from mw.user object'
40 );
41
42 user.options.set( 'gender', 'unknown' );
43 equal(
44 parser( 'gender-msg', 'Foo', user ),
45 'Foo: green',
46 'Neutral from mw.user object' );
47 equal(
48 parser( 'gender-msg', 'Alice', 'female' ),
49 'Alice: pink',
50 'Feminine from string "female"' );
51 equal(
52 parser( 'gender-msg', 'User' ),
53 'User: green',
54 'Neutral when no parameter given' );
55 equal(
56 parser( 'gender-msg', 'User', 'unknown' ),
57 'User: green',
58 'Neutral from string "unknown"'
59 );
60
61 mw.messages.set( 'gender-msg-one-form', '{{GENDER:$1|User}}: $2 {{PLURAL:$2|edit|edits}}' );
62
63 equal(
64 parser( 'gender-msg-one-form', 'male', 10 ),
65 'User: 10 edits',
66 'Gender neutral and plural form'
67 );
68 equal(
69 parser( 'gender-msg-one-form', 'female', 1 ),
70 'User: 1 edit',
71 'Gender neutral and singular form'
72 );
73
74 mw.messages.set( 'gender-msg-lowercase', '{{gender:$1|he|she}} is awesome' );
75 equal(
76 parser( 'gender-msg-lowercase', 'male' ),
77 'he is awesome',
78 'Gender masculine'
79 );
80 equal(
81 parser( 'gender-msg-lowercase', 'female' ),
82 'she is awesome',
83 'Gender feminine'
84 );
85
86 mw.messages.set( 'gender-msg-wrong', '{{gender}} test' );
87 equal(
88 parser( 'gender-msg-wrong', 'female' ),
89 ' test',
90 'Invalid syntax should result in {{gender}} simply being stripped away'
91 );
92 } );
93
94
95 test( 'mw.jqueryMsg Grammar', function () {
96 expect( 2 );
97 var parser = mw.jqueryMsg.getMessageFunction();
98
99 // Assume the grammar form grammar_case_foo is not valid in any language
100 mw.messages.set( 'grammar-msg', 'Przeszukaj {{GRAMMAR:grammar_case_foo|{{SITENAME}}}}' );
101 equal( parser( 'grammar-msg' ), 'Przeszukaj ' + mw.config.get( 'wgSiteName' ), 'Grammar Test with sitename' );
102
103 mw.messages.set( 'grammar-msg-wrong-syntax', 'Przeszukaj {{GRAMMAR:grammar_case_xyz}}' );
104 equal( parser( 'grammar-msg-wrong-syntax' ), 'Przeszukaj ' , 'Grammar Test with wrong grammar template syntax' );
105 } );