Socialify

Folder ..

Viewing function-helpers.js
49 lines (39 loc) • 1.2 KB

 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;
}