UNPKG

funval

Version:

A minimalist library for data validation using functions interfaces.

43 lines (35 loc) 4.1 kB
"use strict"; 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=