'test _getLookupPaths': function() { var dims = readFixtureFile('dimensions.json'), ycb = new libycb.Ycb(dims), context, paths, expected; context = { 'region': 'ir', 'environment': 'preproduction', 'lang': 'fr_FR' }; paths = ycb._getLookupPaths(context, {useAllDimensions: true}); expected = [ "*/*/*/*/*/*/*/*/*/*/*", "*/*/*/*/*/*/*/gb/*/*/*", "*/*/*/*/*/*/*/ir/*/*/*", "*/*/*/*/*/*/fr/*/*/*/*", "*/*/*/*/*/*/fr/gb/*/*/*", "*/*/*/*/*/*/fr/ir/*/*/*", "*/*/*/*/*/*/fr_FR/*/*/*/*", "*/*/*/*/*/*/fr_FR/gb/*/*/*", "*/*/*/*/*/*/fr_FR/ir/*/*/*", "preproduction/*/*/*/*/*/*/*/*/*/*", "preproduction/*/*/*/*/*/*/gb/*/*/*", "preproduction/*/*/*/*/*/*/ir/*/*/*", "preproduction/*/*/*/*/*/fr/*/*/*/*", "preproduction/*/*/*/*/*/fr/gb/*/*/*", "preproduction/*/*/*/*/*/fr/ir/*/*/*", "preproduction/*/*/*/*/*/fr_FR/*/*/*/*", "preproduction/*/*/*/*/*/fr_FR/gb/*/*/*", "preproduction/*/*/*/*/*/fr_FR/ir/*/*/*" ]; AA.itemsAreEqual(expected, paths); },
'test _flattenDimension': function() { var dims = readFixtureFile('dimensions.json'), ycb = new libycb.Ycb(dims), flat = ycb._flattenDimension('', dims[0].dimensions[6]['lang']); A.areSame('en', flat['en']); A.areSame('en_CA', flat['en/en_CA']); A.areSame('fr', flat['fr']); A.areSame('fr_CA', flat['fr/fr_FR/fr_CA']); },
'test _getLookupPath': function() { var dims = readFixtureFile('dimensions.json'), ycb = new libycb.Ycb(dims), context, path; context = { 'region': 'ir', 'environment': 'preproduction', 'lang': 'fr_FR' }; path = ycb._getLookupPath(context, {useAllDimensions: true}); A.areSame('preproduction/*/*/*/*/*/fr_FR/ir/*/*/*', path); },
'test _applySubstitutions': function() { var config, ycb; config = readFixtureFile('substitutions.json'); ycb = new libycb.Ycb([]); ycb._applySubstitutions(config); A.isTrue(config.key0.key4 === 'The value of key0.key2 is value2'); A.isTrue(config.key5.key4 === 'The value of key0.key2 is value2'); A.isTrue(config.key6.key7.key8.key4 === 'The value of key0.key2 is value2'); A.isTrue(config.key6.key9[2] === 'The value of key0.key2 is value2'); A.isTrue(config['$$key0.key1$$'] === '--YCB-SUBSTITUTION-ERROR--'); A.isTrue(config.key10.key11.key4 === 'The value of key0.key2 is value2'); A.isTrue(config.key11[4] === 'The value of key0.key2 is value2'); A.isTrue(config.key8.key4 === 'The value of key0.key2 is value2'); },
'test _makeOrderedLookupList': function() { var dims = readFixtureFile('dimensions.json'), ycb = new libycb.Ycb(dims), context, list; context = { 'region': 'ir', 'environment': 'preproduction', 'lang': 'fr_CA' }; list = ycb._makeOrderedLookupList(context, {useAllDimensions: true}); A.areSame('preproduction', list['environment'][0]); A.areSame('*', list['environment'][1]); A.areSame('fr_CA', list['lang'][0]); A.areSame('fr_FR', list['lang'][1]); A.areSame('fr', list['lang'][2]); A.areSame('*', list['lang'][3]); A.areSame('ir', list['region'][0]); A.areSame('gb', list['region'][1]); A.areSame('*', list['region'][2]); },
'walk settings': function() { var bundle, ycb; bundle = readFixtureFile('dimensions.json') .concat(readFixtureFile('simple-1.json')) .concat(readFixtureFile('simple-3.json')); ycb = new libycb.Ycb(bundle); var ctxs = {}; ycb.walkSettings(function(settings, config) { ctxs[JSON.stringify(settings)] = true; return true; }); A.areSame(9, Object.keys(ctxs).length); A.isTrue(ctxs['{}']); A.isTrue(ctxs['{"region":"ca"}']); A.isTrue(ctxs['{"region":"gb"}']); A.isTrue(ctxs['{"lang":"fr"}']); A.isTrue(ctxs['{"region":"fr"}']); A.isTrue(ctxs['{"flavor":"att"}']); A.isTrue(ctxs['{"region":"ca","flavor":"att"}']); A.isTrue(ctxs['{"region":"gb","flavor":"bt"}']); A.isTrue(ctxs['{"region":"fr","flavor":"bt"}']); }
'skip unused dimensions': function() { var bundle, ycb; bundle = readFixtureFile('dimensions.json') .concat(readFixtureFile('simple-1.json')) .concat(readFixtureFile('simple-3.json')); ycb = new libycb.Ycb(bundle); A.areSame(3, Object.keys(ycb.dimsUsed).length); A.isNotUndefined(ycb.dimsUsed.region); A.areSame(3, Object.keys(ycb.dimsUsed.region).length); A.isTrue(ycb.dimsUsed.region.ca); A.isTrue(ycb.dimsUsed.region.gb); A.isTrue(ycb.dimsUsed.region.fr); A.areSame(1, Object.keys(ycb.dimsUsed.lang).length); A.isTrue(ycb.dimsUsed.lang.fr); A.areSame(2, Object.keys(ycb.dimsUsed.flavor).length); A.isTrue(ycb.dimsUsed.flavor.att); A.isTrue(ycb.dimsUsed.flavor.bt); var context = { 'region': 'ir', 'environment': 'preproduction', 'lang': 'fr_FR' }; var paths = ycb._getLookupPaths(context, {}); var expected = [ '*/*/*/*/*/*/*/*/*/*/*', '*/*/*/*/*/*/*/gb/*/*/*', '*/*/*/*/*/*/*/ir/*/*/*', '*/*/*/*/*/*/fr/*/*/*/*', '*/*/*/*/*/*/fr/gb/*/*/*', '*/*/*/*/*/*/fr/ir/*/*/*', '*/*/*/*/*/*/fr_FR/*/*/*/*', '*/*/*/*/*/*/fr_FR/gb/*/*/*', '*/*/*/*/*/*/fr_FR/ir/*/*/*' ]; AA.itemsAreEqual(expected, paths); },
'get dimensions': function() { var bundle, ycb; bundle = readFixtureFile('dimensions.json'); ycb = new libycb.Ycb(Y.clone(bundle, true)); cmp(bundle[0].dimensions, ycb.getDimensions()); },