/* global it, describe */
let assert = require('assert');

describe('Localization', () => {
  it('has all keys in all locales', async () => {
    let en = require('./loc/en');
    let noErrors = true;
    for (let key1 of Object.keys(en)) {
      for (let key2 of Object.keys(en[key1])) {
        // iterating all keys and subkeys in EN locale, which is main

        for (let lang of ['es', 'pt_BR', 'pt_PT', 'ru', 'ua']) {
          // iteratin all locales except EN
          let locale = require('./loc/' + lang);

          if (typeof locale[key1] === 'undefined') {
            console.error('Missing: ' + lang + '.' + key1);
            noErrors = false;
          } else if (typeof locale[key1][key2] === 'undefined') {
            console.error('Missing: ' + lang + '.' + key1 + '.' + key2);
            noErrors = false;
          }

          // level 1 & 2 done, doing level 3 (if it exists):

          if (typeof en[key1][key2] !== 'string') {
            for (let key3 of Object.keys(en[key1][key2])) {
              if (typeof locale[key1][key2][key3] === 'undefined') {
                console.error('Missing: ' + lang + '.' + key1 + '.' + key2 + '.' + key3);
                noErrors = false;
              }
            }
          }
        }
      }
    }
    assert.ok(noErrors, 'Some localizations are missing keys');
  });
});