All files / lib/joi-to-json-schema/types alternatives.ts

85.71% Statements 12/14
58.33% Branches 7/12
100% Functions 2/2
85.71% Lines 12/14

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 271x 3x   3x 5x 4x     1x     1x       1x 1x     1x 1x       3x    
export const alternatives = (convert, schema, joi, transformer) => {
  const result = (schema.oneOf = []);
 
  joi.$_terms.matches.forEach(match => {
    if (match.schema) {
      return result.push(convert(match.schema, transformer));
    }
 
    Iif (!match.is) {
      throw new Error('joi.when requires an "is"');
    }
    Iif (!(match.then || match.otherwise)) {
      throw new Error('joi.when requires one or both of "then" and "otherwise"');
    }
 
    Eif (match.then) {
      result.push(convert(match.then, transformer));
    }
 
    Eif (match.otherwise) {
      result.push(convert(match.otherwise, transformer));
    }
  });
 
  return schema;
};