(bug 37390) Clean up QUnit test suites
[lhc/web/wiklou.git] / tests / qunit / suites / resources / mediawiki / mediawiki.jqueryMsg.test.js
1 QUnit.module( 'mediawiki.jqueryMsg' );
2
3 QUnit.test( 'mw.jqueryMsg Plural', 3, function ( assert ) {
4 var parser = mw.jqueryMsg.getMessageFunction();
5
6 mw.messages.set( 'plural-msg', 'Found $1 {{PLURAL:$1|item|items}}' );
7 assert.equal( parser( 'plural-msg', 0 ), 'Found 0 items', 'Plural test for english with zero as count' );
8 assert.equal( parser( 'plural-msg', 1 ), 'Found 1 item', 'Singular test for english' );
9 assert.equal( parser( 'plural-msg', 2 ), 'Found 2 items', 'Plural test for english' );
10 } );
11
12
13 QUnit.test( 'mw.jqueryMsg Gender', 11, function ( assert ) {
14 // TODO: These tests should be for mw.msg once mw.msg integrated with mw.jqueryMsg
15 // TODO: English may not be the best language for these tests. Use a language like Arabic or Russian
16 var user = mw.user,
17 parser = mw.jqueryMsg.getMessageFunction();
18
19 // The values here are not significant,
20 // what matters is which of the values is choosen by the parser
21 mw.messages.set( 'gender-msg', '$1: {{GENDER:$2|blue|pink|green}}' );
22
23 user.options.set( 'gender', 'male' );
24 assert.equal(
25 parser( 'gender-msg', 'Bob', 'male' ),
26 'Bob: blue',
27 'Masculine from string "male"'
28 );
29 assert.equal(
30 parser( 'gender-msg', 'Bob', user ),
31 'Bob: blue',
32 'Masculine from mw.user object'
33 );
34
35 user.options.set( 'gender', 'unknown' );
36 assert.equal(
37 parser( 'gender-msg', 'Foo', user ),
38 'Foo: green',
39 'Neutral from mw.user object' );
40 assert.equal(
41 parser( 'gender-msg', 'Alice', 'female' ),
42 'Alice: pink',
43 'Feminine from string "female"' );
44 assert.equal(
45 parser( 'gender-msg', 'User' ),
46 'User: green',
47 'Neutral when no parameter given' );
48 assert.equal(
49 parser( 'gender-msg', 'User', 'unknown' ),
50 'User: green',
51 'Neutral from string "unknown"'
52 );
53
54 mw.messages.set( 'gender-msg-one-form', '{{GENDER:$1|User}}: $2 {{PLURAL:$2|edit|edits}}' );
55
56 assert.equal(
57 parser( 'gender-msg-one-form', 'male', 10 ),
58 'User: 10 edits',
59 'Gender neutral and plural form'
60 );
61 assert.equal(
62 parser( 'gender-msg-one-form', 'female', 1 ),
63 'User: 1 edit',
64 'Gender neutral and singular form'
65 );
66
67 mw.messages.set( 'gender-msg-lowercase', '{{gender:$1|he|she}} is awesome' );
68 assert.equal(
69 parser( 'gender-msg-lowercase', 'male' ),
70 'he is awesome',
71 'Gender masculine'
72 );
73 assert.equal(
74 parser( 'gender-msg-lowercase', 'female' ),
75 'she is awesome',
76 'Gender feminine'
77 );
78
79 mw.messages.set( 'gender-msg-wrong', '{{gender}} test' );
80 assert.equal(
81 parser( 'gender-msg-wrong', 'female' ),
82 ' test',
83 'Invalid syntax should result in {{gender}} simply being stripped away'
84 );
85 } );
86
87
88 QUnit.test( 'mw.jqueryMsg Grammar', 2, function ( assert ) {
89 var parser = mw.jqueryMsg.getMessageFunction();
90
91 // Assume the grammar form grammar_case_foo is not valid in any language
92 mw.messages.set( 'grammar-msg', 'Przeszukaj {{GRAMMAR:grammar_case_foo|{{SITENAME}}}}' );
93 assert.equal( parser( 'grammar-msg' ), 'Przeszukaj ' + mw.config.get( 'wgSiteName' ), 'Grammar Test with sitename' );
94
95 mw.messages.set( 'grammar-msg-wrong-syntax', 'Przeszukaj {{GRAMMAR:grammar_case_xyz}}' );
96 assert.equal( parser( 'grammar-msg-wrong-syntax' ), 'Przeszukaj ' , 'Grammar Test with wrong grammar template syntax' );
97 } );