summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/UniversalLanguageSelector/tests/qunit/ext.uls.tests.js
blob: 4d7e428ca1747d44c6fa82cc155f77a537b14a77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*!
 * QUnit tests for ULS.
 *
 * Copyright (C) 2012 Alolita Sharma, Amir Aharoni, Arun Ganesh, Brandon Harris,
 * Niklas Laxström, Pau Giner, Santhosh Thottingal, Siebrand Mazeland and other
 * contributors. See CREDITS for a list.
 *
 * UniversalLanguageSelector is dual licensed GPLv2 or later and MIT. You don't
 * have to do anything special to choose one license or the other and you don't
 * have to notify anyone which license you are using. You are free to use
 * UniversalLanguageSelector in commercial projects as long as the copyright
 * header is left intact. See files GPL-LICENSE and MIT-LICENSE for details.
 *
 * @file
 * @ingroup Extensions
 * @licence GNU General Public Licence 2.0 or later
 * @licence MIT License
 */

( function () {
	'use strict';

	QUnit.module( 'ext.uls', QUnit.newMwEnvironment() );

	QUnit.test( 'Initial check', function ( assert ) {
		assert.ok( $.fn.uls, '$.fn.uls is defined' );
	} );

	QUnit.test( 'Custom langdb', function ( assert ) {
		// This is a custom non-standard language code used in MW.
		// If it's not defined, then, for example,
		// its direction cannot be acquired using the langdb utils.
		assert.strictEqual( $.uls.data.getDir( 'als' ), 'ltr', 'The direction of custom MW language als is ltr.' );
	} );

	QUnit.test( 'User preferences', function ( assert ) {
		var prefName, prefs, prefsToSave, readPrefs, done;

		// 'gofanim' means "fonts" in Hebrew.
		// Here it's used as a meaningless word, to test
		// the preferences without changing anything useful.
		prefName = 'gofanim';
		prefs = mw.uls.preferences();
		prefsToSave = {};

		prefsToSave[ prefName ] = {
			fonts: {
				qqy: 'Megafont'
			}
		};

		prefs.set( prefName, prefsToSave );

		readPrefs = prefs.get( prefName );
		assert.strictEqual(
			readPrefs[ prefName ].fonts.qqy,
			'Megafont',
			'Correct value for the font name'
		);

		done = assert.async();
		prefs.save( function ( successSave ) {
			assert.ok( successSave, 'Options saving API did not produce an error.' );
			// Delete old options
			prefs.set( prefName, undefined );
			prefs.save( function () {
				done();
			} );
		} );
	} );

	QUnit.test( 'Common languages', function ( assert ) {
		var i, foundTagalog, languagesInPH;

		// Bug 49847
		foundTagalog = false;
		languagesInPH = mw.uls.getFrequentLanguageList( 'PH' );

		for ( i = 0; i < languagesInPH.length; i++ ) {
			if ( $.uls.data.isRedirect( languagesInPH[ i ] ) === 'tl' ||
				languagesInPH[ i ] === 'tl'
			) {
				foundTagalog = true;

				break;
			}
		}
		assert.ok(
			foundTagalog,
			'Tagalog is one of the languages presented to users in the Philippines.'
		);
	} );
}() );