funval
Version:
A minimalist library for data validation using functions interfaces.
43 lines (35 loc) • 4.1 kB
JavaScript
require("mocha");
var _chai = require("chai");
var _ = require("./");
describe('README.md', () => {
it('Usage', () => {
const UserSchema = {
name: (0, _.Optional)(String),
username: /^[a-z0-9]{3,10}$/,
status: (0, _.Or)('active', 'suspended'),
amount: input => (0, _.Between)(1, 50)((0, _.Integer)(input))
};
const validator = (0, _.Schema)(UserSchema);
let user;
try {
user = validator({
username: 'john1',
// eslint-disable-next-line @typescript-eslint/ban-ts-ignore
// @ts-ignore Type '"unregistered"' is not assignable to type '"active" | "suspended"'.
status: 'unregistered',
amount: 20
});
} catch (err) {
// console.error(err.message, err.paths);
_chai.assert.equal(err.message, 'Expect value to equals "suspended" (given: "unregistered")');
_chai.assert.deepEqual(err.paths, [{
error: err,
path: ['status']
}]);
return;
}
throw user;
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZWFkbWUudGVzdC50cyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwiVXNlclNjaGVtYSIsIm5hbWUiLCJTdHJpbmciLCJ1c2VybmFtZSIsInN0YXR1cyIsImFtb3VudCIsImlucHV0IiwidmFsaWRhdG9yIiwidXNlciIsImVyciIsImFzc2VydCIsImVxdWFsIiwibWVzc2FnZSIsImRlZXBFcXVhbCIsInBhdGhzIiwiZXJyb3IiLCJwYXRoIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOztBQUNBOztBQUVBQSxRQUFRLENBQUMsV0FBRCxFQUFjLE1BQU07QUFDMUJDLEVBQUFBLEVBQUUsQ0FBQyxPQUFELEVBQVUsTUFBTTtBQUNoQixVQUFNQyxVQUFVLEdBQUc7QUFDakJDLE1BQUFBLElBQUksRUFBRSxnQkFBU0MsTUFBVCxDQURXO0FBRWpCQyxNQUFBQSxRQUFRLEVBQUUsa0JBRk87QUFHakJDLE1BQUFBLE1BQU0sRUFBRSxVQUFHLFFBQUgsRUFBeUIsV0FBekIsQ0FIUztBQUlqQkMsTUFBQUEsTUFBTSxFQUFHQyxLQUFELElBQTRCLGVBQVEsQ0FBUixFQUFXLEVBQVgsRUFBZSxlQUFRQSxLQUFSLENBQWY7QUFKbkIsS0FBbkI7QUFPQSxVQUFNQyxTQUFTLEdBQUcsY0FBT1AsVUFBUCxDQUFsQjtBQUVBLFFBQUlRLElBQUo7O0FBRUEsUUFBSTtBQUNGQSxNQUFBQSxJQUFJLEdBQUdELFNBQVMsQ0FBQztBQUNmSixRQUFBQSxRQUFRLEVBQUUsT0FESztBQUVmO0FBQ0E7QUFDQUMsUUFBQUEsTUFBTSxFQUFFLGNBSk87QUFLZkMsUUFBQUEsTUFBTSxFQUFFO0FBTE8sT0FBRCxDQUFoQjtBQU9ELEtBUkQsQ0FRRSxPQUFPSSxHQUFQLEVBQVk7QUFDWjtBQUVBQyxtQkFBT0MsS0FBUCxDQUNFRixHQUFHLENBQUNHLE9BRE4sRUFFRSw0REFGRjs7QUFLQUYsbUJBQU9HLFNBQVAsQ0FBaUJKLEdBQUcsQ0FBQ0ssS0FBckIsRUFBNEIsQ0FDMUI7QUFDRUMsUUFBQUEsS0FBSyxFQUFFTixHQURUO0FBRUVPLFFBQUFBLElBQUksRUFBRSxDQUFDLFFBQUQ7QUFGUixPQUQwQixDQUE1Qjs7QUFPQTtBQUNEOztBQUVELFVBQU1SLElBQU47QUFDRCxHQXZDQyxDQUFGO0FBd0NELENBekNPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ21vY2hhJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ2NoYWknO1xuaW1wb3J0IHsgU2NoZW1hLCBPciwgVHlwZSwgT3B0aW9uYWwsIEJldHdlZW4sIEludGVnZXIgfSBmcm9tICcuLyc7XG5cbmRlc2NyaWJlKCdSRUFETUUubWQnLCAoKSA9PiB7XG4gIGl0KCdVc2FnZScsICgpID0+IHtcbiAgICBjb25zdCBVc2VyU2NoZW1hID0ge1xuICAgICAgbmFtZTogT3B0aW9uYWwoU3RyaW5nKSxcbiAgICAgIHVzZXJuYW1lOiAvXlthLXowLTldezMsMTB9JC8sXG4gICAgICBzdGF0dXM6IE9yKCdhY3RpdmUnIGFzICdhY3RpdmUnLCAnc3VzcGVuZGVkJyBhcyAnc3VzcGVuZGVkJyksXG4gICAgICBhbW91bnQ6IChpbnB1dDogdW5rbm93bik6IG51bWJlciA9PiBCZXR3ZWVuKDEsIDUwKShJbnRlZ2VyKGlucHV0KSksXG4gICAgfTtcblxuICAgIGNvbnN0IHZhbGlkYXRvciA9IFNjaGVtYShVc2VyU2NoZW1hKTtcblxuICAgIGxldCB1c2VyOiBUeXBlPHR5cGVvZiBVc2VyU2NoZW1hPjtcblxuICAgIHRyeSB7XG4gICAgICB1c2VyID0gdmFsaWRhdG9yKHtcbiAgICAgICAgdXNlcm5hbWU6ICdqb2huMScsXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWlnbm9yZVxuICAgICAgICAvLyBAdHMtaWdub3JlIFR5cGUgJ1widW5yZWdpc3RlcmVkXCInIGlzIG5vdCBhc3NpZ25hYmxlIHRvIHR5cGUgJ1wiYWN0aXZlXCIgfCBcInN1c3BlbmRlZFwiJy5cbiAgICAgICAgc3RhdHVzOiAndW5yZWdpc3RlcmVkJyxcbiAgICAgICAgYW1vdW50OiAyMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gY29uc29sZS5lcnJvcihlcnIubWVzc2FnZSwgZXJyLnBhdGhzKTtcblxuICAgICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgICBlcnIubWVzc2FnZSxcbiAgICAgICAgJ0V4cGVjdCB2YWx1ZSB0byBlcXVhbHMgXCJzdXNwZW5kZWRcIiAoZ2l2ZW46IFwidW5yZWdpc3RlcmVkXCIpJyxcbiAgICAgICk7XG5cbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoZXJyLnBhdGhzLCBbXG4gICAgICAgIHtcbiAgICAgICAgICBlcnJvcjogZXJyLFxuICAgICAgICAgIHBhdGg6IFsnc3RhdHVzJ10sXG4gICAgICAgIH0sXG4gICAgICBdKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRocm93IHVzZXI7XG4gIH0pO1xufSk7XG4iXX0=
;