Skip to content

Commit

Permalink
Compare object values too
Browse files Browse the repository at this point in the history
  • Loading branch information
njb-said committed Jan 8, 2019
1 parent 838ffd6 commit c80f01c
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 6 deletions.
1 change: 1 addition & 0 deletions en.json
Expand Up @@ -65,6 +65,7 @@
"randomiser" : "randomiser",
"about" : {
"dropdown" : "about",
"translate" : "translate",
"about" : "about fnbr.co",
"privacy" : "privacy policy",
"donate" : "Donate",
Expand Down
2 changes: 1 addition & 1 deletion es.json
@@ -1,6 +1,6 @@
{
"name" : "Español",
"name-en" : "Spain",
"name-en" : "Spainish",
"live" : true,
"translations" : {
"meta" : {
Expand Down
32 changes: 27 additions & 5 deletions test/compare.js
Expand Up @@ -33,7 +33,10 @@ console.log('Testing ' + code + '.json\n');

Promise.all([
new Promise((resolve, reject) => {
return parsedLanguage.hasOwnProperty('name') && parsedLanguage.name.length > 1 ? resolve('Name found') : reject('Missing name');
return parsedLanguage.hasOwnProperty('name') && parsedLanguage.name.length > 1 ? resolve('Name found - ' + parsedLanguage.name) : reject('Missing name');
}),
new Promise((resolve, reject) => {
return parsedLanguage.hasOwnProperty('name-en') && parsedLanguage['name-en'].length > 1 ? resolve('Name in English found - ' + parsedLanguage['name-en']) : resolve('Missing name in English');
}),
new Promise((resolve, reject) => {
return parsedLanguage.hasOwnProperty('translations') && typeof parsedLanguage.translations == 'object' ? resolve('Found translations object') : reject('Missing translations object');
Expand All @@ -50,6 +53,8 @@ Promise.all([
};

var mismatch = [];
var equal = [];
var ignoreDuplications = ['translations.meta.dateFormat', 'translations.nav.about.discord', 'translations.nav.about.twitter', 'translations.nav.api', 'translations.shop.countdown.wordyFormat'];
var compareObjects = function(obj, path) {
return new Promise((res, rej) => {
Object.keys(obj).forEach((key) => {
Expand All @@ -58,26 +63,43 @@ Promise.all([
if(type == 'undefined') {
return rej({path: path + '.' + key, reason: 'source undefined'});
} else {
var directType = typeof directFind(parsedLanguage, path + '.' + key);
var directValue = directFind(parsedLanguage, path + '.' + key);
var directType = typeof directValue;
if(directType != type) {
if(directType == 'undefined' && (path + '.' + key).split('.').length <= 2) {
mismatch.push((path + '.' + key));
mismatch.push(path + '.' + key);
return res();
}

return rej({path: path + '.' + key, reason: 'type mismatch (' + directType + ' vs ' + type + ')'});
} else if(type == 'object') {
return compareObjects(obj[key], path + '.' + key).then(() => res()).catch((e) => rej(e));
} else {
return typeof directFind(parsedLanguage, path + '.' + key) == 'undefined' ? rej({path: path + '.' + key, reason: 'language undefined'}) : res();
if(directType != 'undefined' && directType != 'object' && directType != 'boolean' && ignoreDuplications.indexOf(path + '.' + key) < 0) {
if(directValue === obj[key]) {
equal.push(path + '.' + key);
}
}

return directType == 'undefined' ? rej({path: path + '.' + key, reason: 'language undefined'}) : res();
}
}
});
});
};

compareObjects(parsedEnglish.translations, 'translations').then(() => {
return resolve('Translations object keys ' + (mismatch.length > 0 ? 'mostly match, failed keys (highest level):\n * ' + mismatch.join('\n * ') : 'match'));
var str = 'Translations object keys ' + (mismatch.length > 0 ? 'mostly match, failed keys (highest level):' : 'match');
if(mismatch.length > 0) {
str = str + '\n * ' + mismatch.join('\n * ');
}

str = str + '\n - Translations object values ' + (equal.length > 0 ? 'match in some cases' : 'are all unique');
if(equal.length > 0) {
str = str + '\n * ' + equal.join('\n * ');
}

return resolve(str);
}).catch((err) => reject(err));
})
]).then(function(results) {
Expand Down

0 comments on commit c80f01c

Please sign in to comment.