All files / lib/rules execute-rule.js

100% Statements 21/21
100% Branches 10/10
100% Functions 1/1
100% Lines 21/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 406x 6x 6x 6x 6x 6x 6x 6x     44x 44x         5x   39x   1x   6x   1x   1x   11x   9x   9x   1x       6x  
const getInputFromRule = require('./get-input-from-rule');
const executeRuleList = require('./execute-rule-list');
const executeRuleEqual = require('./execute-rule-equal');
const executeRulePathEqual = require('./execute-rule-path-equal');
const executeRulePercent = require('./execute-rule-percent');
const executeRuleIncludes = require('./execute-rule-includes');
const executeRuleIncludesListAny = require('./execute-rule-includes-list-any');
const executeRuleIncludesListAll = require('./execute-rule-includes-list-all');
 
function executeRule(input, rule, values) {
  const extractedInput = getInputFromRule(input, rule);
  if (extractedInput === undefined) {
    // Can't execute rule if input was not found.
    // A missing input will skip rule execution
    // and either return the default value for that key,
    // or undefined if no default value is set.
    return;
  }
  switch (rule.type) {
    case 'list':
      return executeRuleList(extractedInput, rule, values);
    case 'equal':
      return executeRuleEqual(extractedInput, rule, values);
    case 'pathEqual':
      return executeRulePathEqual(extractedInput, rule, values);
    case 'percent':
      return executeRulePercent(extractedInput, rule, values);
    case 'includes':
      return executeRuleIncludes(extractedInput, rule, values);
    case 'includesListAny':
      return executeRuleIncludesListAny(extractedInput, rule, values);
    case 'includesListAll':
      return executeRuleIncludesListAll(extractedInput, rule, values);
    default:
      throw new Error(`executeRule: rule.type not recognized: ${rule.type}`);
  }
}
 
module.exports = executeRule;