..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 | if (typeof module !== 'undefined') {
var assert = require('assert');
var sinon = require('sinon');
var blaver = require('../../index');
}
var functionHelpers = {};
module.exports = functionHelpers;
var IGNORED_MODULES = ['locales', 'locale', 'localeFallback', 'definitions', 'fake', 'helpers', 'mersenne'];
var IGNORED_METHODS = {
system: ['directoryPath', 'filePath'] // these are TODOs
};
function isTestableModule(mod) {
return IGNORED_MODULES.indexOf(mod) === -1;
}
function isMethodOf(mod) {
return function(meth) {
return typeof blaver[mod][meth] === 'function';
};
}
function isTestableMethod(mod) {
return function(meth) {
return !(mod in IGNORED_METHODS && IGNORED_METHODS[mod].indexOf(meth) >= 0);
};
}
function both(pred1, pred2) {
return function(value) {
return pred1(value) && pred2(value);
};
}
// Basic smoke tests to make sure each method is at least implemented and returns a value.
functionHelpers.modulesList = function modulesList () {
var modules = Object.keys(blaver)
.filter(isTestableModule)
.reduce(function(result, mod) {
result[mod] = Object.keys(blaver[mod]).filter(both(isMethodOf(mod), isTestableMethod(mod)));
return result;
}, {});
return modules;
}
|
|