UNPKG

dojo

Version:

Dojo core is a powerful, lightweight library that makes common tasks quicker and easier. Animate elements, manipulate the DOM, and query with easy CSS syntax, all without sacrificing performance.

84 lines (71 loc) 2.52 kB
define([ 'require', 'intern!object', 'intern/chai!assert', '../../i18n', 'dojo/_base/array', 'dojo/Deferred', 'dojo/_base/lang' ], function (require, registerSuite, assert, i18n, array, Deferred, lang) { var bundlePath = require.toAbsMid('./support/i18n'); function localePluginTest(locale, expected) { return function () { var dfd = new Deferred(); var modulePath = i18n.getL10nName(bundlePath, 'salutations', locale); require([modulePath], function (bundle) { dfd.resolve(bundle); }); return dfd.then(function (bundle) { assert.equal(bundle.hello, expected); }); }; } function getLocalizationTest(locale, expected) { return function() { var actual = i18n.getLocalization(bundlePath, 'salutations', locale).hello; assert.equal(actual, expected); }; } function buildParameterizedTests(testData, testFn) { var tests = {}; // Parameterized tests array.forEach(testData, function (parameters) { tests[parameters[0]] = testFn(parameters[1], parameters[2]); }); return tests; } registerSuite(function () { var PARAMS = [ ['Locale which overrides root translation', 'de', 'Hallo'], ['Locale which does not override root translation', 'en', 'Hello'], ['Locale which overrides its parent', 'en-au', 'G\'day'], ['Locale which does not override its parent', 'en-us', 'Hello'], ['Locale which overrides its parent and ancestor', 'en-us-texas', 'Howdy'], ['3rd level variant which overrides its parent', 'en-us-new_york', 'Hello'], ['Locale which overrides its grandparent', 'en-us-new_york-brooklyn', 'Yo'], ['Locale which does not have any translation available', 'xx', 'Hello'], ['A double-byte string should be read in as UTF-8 and treated as unicode', 'zh-cn', '\u4f60\u597d'] ]; return { name: 'dojo/i18n', 'construction': function () { assert.isDefined(i18n.getLocalization); }, 'plugin .load()': buildParameterizedTests(PARAMS, localePluginTest), '.getLocalization': lang.mixin(buildParameterizedTests(PARAMS, getLocalizationTest), { 'missing bundle throws': function () { assert.throws(function () { getLocalizationTest('lolipop-guild', undefined)(); }); }, 'cached results': function () { var l10n = i18n.getLocalization(bundlePath, 'salutations', 'en'); assert.equal(l10n.hello, 'Hello'); l10n.hello = 'test'; l10n = i18n.getLocalization(bundlePath, 'salutations', 'en'); assert.equal(l10n.hello, 'test'); } }) }; }); });