UNPKG

funval

Version:

A minimalist library for data validation using functions interfaces.

54 lines (40 loc) 5.34 kB
"use strict"; require("mocha"); var _chai = require("chai"); var _Error = require("./Error"); describe('Error', () => { it('toError', () => { _chai.assert.instanceOf((0, _Error.toError)('foo'), TypeError); _chai.assert.instanceOf((0, _Error.toError)(new ReferenceError()), ReferenceError); _chai.assert.equal((0, _Error.toError)('foo').message, 'foo'); _chai.assert.equal((0, _Error.toError)(new Error('bar')).message, 'bar'); }); it('createValidationError', () => { _chai.assert.throws(() => (0, _Error.createValidationError)([], 'foo'), /^foo$/); _chai.assert.throws(() => (0, _Error.createValidationError)([]), /^Unknown Validation Error$/); const paths = [{ path: ['foo'], error: new Error('test') }]; const err = (0, _Error.createValidationError)(paths, 'foo'); _chai.assert.equal(err.message, 'foo'); _chai.assert.equal(err.paths, paths); }); it('getErrorPaths', () => { const test = new Error('test'); _chai.assert.deepEqual((0, _Error.getErrorPaths)(test, ['foo']), [{ error: test, path: ['foo'] }]); const paths = [{ path: ['foo'], error: test }]; const err = (0, _Error.createValidationError)(paths, 'error'); _chai.assert.deepEqual((0, _Error.getErrorPaths)(err, ['bar']), [{ error: test, path: ['bar', 'foo'] }]); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9FcnJvci50ZXN0LnRzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiaXQiLCJhc3NlcnQiLCJpbnN0YW5jZU9mIiwiVHlwZUVycm9yIiwiUmVmZXJlbmNlRXJyb3IiLCJlcXVhbCIsIm1lc3NhZ2UiLCJFcnJvciIsInRocm93cyIsInBhdGhzIiwicGF0aCIsImVycm9yIiwiZXJyIiwidGVzdCIsImRlZXBFcXVhbCJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFDQTs7QUFFQTs7QUFFQUEsUUFBUSxDQUFDLE9BQUQsRUFBVSxNQUFNO0FBQ3RCQyxFQUFBQSxFQUFFLENBQUMsU0FBRCxFQUFZLE1BQU07QUFDbEJDLGlCQUFPQyxVQUFQLENBQWtCLG9CQUFRLEtBQVIsQ0FBbEIsRUFBa0NDLFNBQWxDOztBQUNBRixpQkFBT0MsVUFBUCxDQUFrQixvQkFBUSxJQUFJRSxjQUFKLEVBQVIsQ0FBbEIsRUFBaURBLGNBQWpEOztBQUVBSCxpQkFBT0ksS0FBUCxDQUFhLG9CQUFRLEtBQVIsRUFBZUMsT0FBNUIsRUFBcUMsS0FBckM7O0FBQ0FMLGlCQUFPSSxLQUFQLENBQWEsb0JBQVEsSUFBSUUsS0FBSixDQUFVLEtBQVYsQ0FBUixFQUEwQkQsT0FBdkMsRUFBZ0QsS0FBaEQ7QUFDRCxHQU5DLENBQUY7QUFRQU4sRUFBQUEsRUFBRSxDQUFDLHVCQUFELEVBQTBCLE1BQU07QUFDaENDLGlCQUFPTyxNQUFQLENBQWMsTUFBTSxrQ0FBc0IsRUFBdEIsRUFBMEIsS0FBMUIsQ0FBcEIsRUFBc0QsT0FBdEQ7O0FBQ0FQLGlCQUFPTyxNQUFQLENBQ0UsTUFBTSxrQ0FBc0IsRUFBdEIsQ0FEUixFQUVFLDRCQUZGOztBQUtBLFVBQU1DLEtBQUssR0FBRyxDQUFDO0FBQUVDLE1BQUFBLElBQUksRUFBRSxDQUFDLEtBQUQsQ0FBUjtBQUFpQkMsTUFBQUEsS0FBSyxFQUFFLElBQUlKLEtBQUosQ0FBVSxNQUFWO0FBQXhCLEtBQUQsQ0FBZDtBQUNBLFVBQU1LLEdBQUcsR0FBRyxrQ0FBc0JILEtBQXRCLEVBQTZCLEtBQTdCLENBQVo7O0FBRUFSLGlCQUFPSSxLQUFQLENBQWFPLEdBQUcsQ0FBQ04sT0FBakIsRUFBMEIsS0FBMUI7O0FBQ0FMLGlCQUFPSSxLQUFQLENBQWFPLEdBQUcsQ0FBQ0gsS0FBakIsRUFBd0JBLEtBQXhCO0FBQ0QsR0FaQyxDQUFGO0FBY0FULEVBQUFBLEVBQUUsQ0FBQyxlQUFELEVBQWtCLE1BQU07QUFDeEIsVUFBTWEsSUFBSSxHQUFHLElBQUlOLEtBQUosQ0FBVSxNQUFWLENBQWI7O0FBRUFOLGlCQUFPYSxTQUFQLENBQWlCLDBCQUFjRCxJQUFkLEVBQW9CLENBQUMsS0FBRCxDQUFwQixDQUFqQixFQUErQyxDQUM3QztBQUFFRixNQUFBQSxLQUFLLEVBQUVFLElBQVQ7QUFBZUgsTUFBQUEsSUFBSSxFQUFFLENBQUMsS0FBRDtBQUFyQixLQUQ2QyxDQUEvQzs7QUFJQSxVQUFNRCxLQUFLLEdBQUcsQ0FBQztBQUFFQyxNQUFBQSxJQUFJLEVBQUUsQ0FBQyxLQUFELENBQVI7QUFBaUJDLE1BQUFBLEtBQUssRUFBRUU7QUFBeEIsS0FBRCxDQUFkO0FBQ0EsVUFBTUQsR0FBRyxHQUFHLGtDQUFzQkgsS0FBdEIsRUFBNkIsT0FBN0IsQ0FBWjs7QUFFQVIsaUJBQU9hLFNBQVAsQ0FBaUIsMEJBQWNGLEdBQWQsRUFBbUIsQ0FBQyxLQUFELENBQW5CLENBQWpCLEVBQThDLENBQzVDO0FBQUVELE1BQUFBLEtBQUssRUFBRUUsSUFBVDtBQUFlSCxNQUFBQSxJQUFJLEVBQUUsQ0FBQyxLQUFELEVBQVEsS0FBUjtBQUFyQixLQUQ0QyxDQUE5QztBQUdELEdBYkMsQ0FBRjtBQWNELENBckNPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ21vY2hhJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ2NoYWknO1xuXG5pbXBvcnQgeyBjcmVhdGVWYWxpZGF0aW9uRXJyb3IsIGdldEVycm9yUGF0aHMsIHRvRXJyb3IgfSBmcm9tICcuL0Vycm9yJztcblxuZGVzY3JpYmUoJ0Vycm9yJywgKCkgPT4ge1xuICBpdCgndG9FcnJvcicsICgpID0+IHtcbiAgICBhc3NlcnQuaW5zdGFuY2VPZih0b0Vycm9yKCdmb28nKSwgVHlwZUVycm9yKTtcbiAgICBhc3NlcnQuaW5zdGFuY2VPZih0b0Vycm9yKG5ldyBSZWZlcmVuY2VFcnJvcigpKSwgUmVmZXJlbmNlRXJyb3IpO1xuXG4gICAgYXNzZXJ0LmVxdWFsKHRvRXJyb3IoJ2ZvbycpLm1lc3NhZ2UsICdmb28nKTtcbiAgICBhc3NlcnQuZXF1YWwodG9FcnJvcihuZXcgRXJyb3IoJ2JhcicpKS5tZXNzYWdlLCAnYmFyJyk7XG4gIH0pO1xuXG4gIGl0KCdjcmVhdGVWYWxpZGF0aW9uRXJyb3InLCAoKSA9PiB7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBjcmVhdGVWYWxpZGF0aW9uRXJyb3IoW10sICdmb28nKSwgL15mb28kLyk7XG4gICAgYXNzZXJ0LnRocm93cyhcbiAgICAgICgpID0+IGNyZWF0ZVZhbGlkYXRpb25FcnJvcihbXSksXG4gICAgICAvXlVua25vd24gVmFsaWRhdGlvbiBFcnJvciQvLFxuICAgICk7XG5cbiAgICBjb25zdCBwYXRocyA9IFt7IHBhdGg6IFsnZm9vJ10sIGVycm9yOiBuZXcgRXJyb3IoJ3Rlc3QnKSB9XTtcbiAgICBjb25zdCBlcnIgPSBjcmVhdGVWYWxpZGF0aW9uRXJyb3IocGF0aHMsICdmb28nKTtcblxuICAgIGFzc2VydC5lcXVhbChlcnIubWVzc2FnZSwgJ2ZvbycpO1xuICAgIGFzc2VydC5lcXVhbChlcnIucGF0aHMsIHBhdGhzKTtcbiAgfSk7XG5cbiAgaXQoJ2dldEVycm9yUGF0aHMnLCAoKSA9PiB7XG4gICAgY29uc3QgdGVzdCA9IG5ldyBFcnJvcigndGVzdCcpO1xuXG4gICAgYXNzZXJ0LmRlZXBFcXVhbChnZXRFcnJvclBhdGhzKHRlc3QsIFsnZm9vJ10pLCBbXG4gICAgICB7IGVycm9yOiB0ZXN0LCBwYXRoOiBbJ2ZvbyddIH0sXG4gICAgXSk7XG5cbiAgICBjb25zdCBwYXRocyA9IFt7IHBhdGg6IFsnZm9vJ10sIGVycm9yOiB0ZXN0IH1dO1xuICAgIGNvbnN0IGVyciA9IGNyZWF0ZVZhbGlkYXRpb25FcnJvcihwYXRocywgJ2Vycm9yJyk7XG5cbiAgICBhc3NlcnQuZGVlcEVxdWFsKGdldEVycm9yUGF0aHMoZXJyLCBbJ2JhciddKSwgW1xuICAgICAgeyBlcnJvcjogdGVzdCwgcGF0aDogWydiYXInLCAnZm9vJ10gfSxcbiAgICBdKTtcbiAgfSk7XG59KTtcbiJdfQ==