funval
Version:
A minimalist library for data validation using functions interfaces.
54 lines (40 loc) • 5.34 kB
JavaScript
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==
;