All files / bookings/schema index.js

100% Statements 12/12
100% Branches 2/2
100% Functions 2/2
100% Lines 12/12

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 241x 1x     1x 1x 1x     1x         4x 4x 4x 3x   1x     1x  
const Ajv = require('ajv');
const getBooking = require('./getBooking');
 
function getAjvValidator(schema) {
  const ajv = new Ajv();
  const validator = ajv.compile(schema);
  return { ajv, validator };
}
 
const ajvValidators = {
  list: getAjvValidator(getBooking),
};
 
function validate(schema, data) {
  const { ajv, validator } = ajvValidators[schema];
  const valid = validator(data);
  if (valid) {
    return;
  }
  throw new Error(ajv.errorsText(validator.errors));
}
 
module.exports = validate;