tests/utils/i18n.test.js

/**
 * Tests for the 'utils/i18n' file.
 */
// Do not warn if these variables were not defined before.
/* global QUnit */

/**
 * Initialise i18n and check it.
 *
 * @param {string} language The test language.
 * @param {Array} keys The language keys.
 * @param {Function} assert The QUnit assert.
 */
function checkLanguage(language, keys, assert) {
  var done = assert.async();
  // fail test if load fails
  dwv.i18nOnFailedLoad(function (lng /*, ns, msg*/) {
    assert.ok(false, 'Failed loading \'' + lng + '\' language.');
    // stop linstening
    dwv.i18nOffFailedLoad();
    // finish async test
    done();
  });
  // test once initialised
  dwv.i18nOnInitialised(function (/*options*/) {
    // stop linstening
    dwv.i18nOffInitialised();
    // check some values
    for (var i = 0; i < keys.length; ++i) {
      assert.equal(
        dwv.i18nExists(keys[i][0]),
        true,
        'i18n ' + language + ' translation exists');
      assert.equal(
        dwv.i18n(keys[i][0]),
        keys[i][1],
        'i18n ' + language + ' translation is ok');
    }
    // finish async test
    done();
  });
  // initialise with input language
  dwv.i18nInitialise(language, '..');
}

/**
 * Tests for {@link dwv.i18n} with en language.
 *
 * @function module:tests/utils~i18nEn
 */
QUnit.test('Test i18n en.', function (assert) {
  var keys = [['basics.open', 'Open'], ['basics.close', 'Close']];
  checkLanguage('en', keys, assert);
});

/**
 * Tests for {@link dwv.i18n} with fr language.
 *
 * @function module:tests/utils~i18nFr
 */
QUnit.test('Test i18n fr.', function (assert) {
  var keys = [['basics.open', 'Ouvrir'], ['basics.close', 'Fermer']];
  checkLanguage('fr', keys, assert);
});