UNPKG

computed-types

Version:

Runtime validation types for TypeScript.

78 lines (62 loc) 8.8 kB
"use strict"; require("mocha"); var _chai = require("chai"); var _utils = require("./schema/utils"); var _ = _interopRequireWildcard(require("./")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } /* eslint-disable @typescript-eslint/no-explicit-any */ describe('README', () => { it('Usage', () => { const UserSchema = (0, _.default)({ name: _.string.trim().normalize().between(3, 40).optional(), username: /^[a-z0-9]{3,10}$/, status: _.default.either('active', 'suspended'), items: _.array.of({ id: _.string, amount: _.number.gte(1).integer() }).min(1) }); (0, _utils.typeCheck)('ok'); const validator = UserSchema.destruct(); const [err, user] = validator({ username: 'john1', // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore Type '"unregistered"' is not assignable to type '"active" | "suspended"'. status: 'unregistered', items: [{ id: 'item-1', amount: 20 }] }); _chai.assert.notEqual(err, null); _chai.assert.equal(user, undefined); _chai.assert.equal(JSON.stringify(err, null, 2), `{ "message": "status: Expect value to equal \\"suspended\\"", "errors": [ { "path": [ "status" ], "error": { "message": "Expect value to equal \\"suspended\\"" } } ] }`); if (err) { var _err$errors; _chai.assert.equal(err.message, 'status: Expect value to equal "suspended"'); _chai.assert.equal((_err$errors = err.errors) == null ? void 0 : _err$errors.length, 1); if (err.errors) { _chai.assert.deepEqual(err.errors[0].path, ['status']); _chai.assert.equal(err.errors[0].error.message, 'Expect value to equal "suspended"'); } } }); it('Validator chain', () => { const validator = _.unknown.number().gt(0).toFixed(2); _chai.assert.equal(validator('123.4567'), '123.46'); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9SRUFETUUudGVzdC50cyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwiVXNlclNjaGVtYSIsIm5hbWUiLCJzdHJpbmciLCJ0cmltIiwibm9ybWFsaXplIiwiYmV0d2VlbiIsIm9wdGlvbmFsIiwidXNlcm5hbWUiLCJzdGF0dXMiLCJTY2hlbWEiLCJlaXRoZXIiLCJpdGVtcyIsImFycmF5Iiwib2YiLCJpZCIsImFtb3VudCIsIm51bWJlciIsImd0ZSIsImludGVnZXIiLCJtaW4iLCJ2YWxpZGF0b3IiLCJkZXN0cnVjdCIsImVyciIsInVzZXIiLCJhc3NlcnQiLCJub3RFcXVhbCIsImVxdWFsIiwidW5kZWZpbmVkIiwiSlNPTiIsInN0cmluZ2lmeSIsIm1lc3NhZ2UiLCJlcnJvcnMiLCJsZW5ndGgiLCJkZWVwRXF1YWwiLCJwYXRoIiwiZXJyb3IiLCJ1bmtub3duIiwiZ3QiLCJ0b0ZpeGVkIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7QUFFQTtBQUVBQSxRQUFRLENBQUMsUUFBRCxFQUFXLE1BQU07QUFDdkJDLEVBQUFBLEVBQUUsQ0FBQyxPQUFELEVBQVUsTUFBTTtBQUNoQixVQUFNQyxVQUFVLEdBQUcsZUFBTztBQUN4QkMsTUFBQUEsSUFBSSxFQUFFQyxTQUFPQyxJQUFQLEdBQWNDLFNBQWQsR0FBMEJDLE9BQTFCLENBQWtDLENBQWxDLEVBQXFDLEVBQXJDLEVBQXlDQyxRQUF6QyxFQURrQjtBQUV4QkMsTUFBQUEsUUFBUSxFQUFFLGtCQUZjO0FBR3hCQyxNQUFBQSxNQUFNLEVBQUVDLFVBQU9DLE1BQVAsQ0FBYyxRQUFkLEVBQWlDLFdBQWpDLENBSGdCO0FBSXhCQyxNQUFBQSxLQUFLLEVBQUVDLFFBQ0pDLEVBREksQ0FDRDtBQUNGQyxRQUFBQSxFQUFFLEVBQUVaLFFBREY7QUFFRmEsUUFBQUEsTUFBTSxFQUFFQyxTQUFPQyxHQUFQLENBQVcsQ0FBWCxFQUFjQyxPQUFkO0FBRk4sT0FEQyxFQUtKQyxHQUxJLENBS0EsQ0FMQTtBQUppQixLQUFQLENBQW5CO0FBYUEsMEJBUUUsSUFSRjtBQVVBLFVBQU1DLFNBQVMsR0FBR3BCLFVBQVUsQ0FBQ3FCLFFBQVgsRUFBbEI7QUFFQSxVQUFNLENBQUNDLEdBQUQsRUFBTUMsSUFBTixJQUFjSCxTQUFTLENBQUM7QUFDNUJiLE1BQUFBLFFBQVEsRUFBRSxPQURrQjtBQUU1QjtBQUNBO0FBQ0FDLE1BQUFBLE1BQU0sRUFBRSxjQUpvQjtBQUs1QkcsTUFBQUEsS0FBSyxFQUFFLENBQUM7QUFBRUcsUUFBQUEsRUFBRSxFQUFFLFFBQU47QUFBZ0JDLFFBQUFBLE1BQU0sRUFBRTtBQUF4QixPQUFEO0FBTHFCLEtBQUQsQ0FBN0I7O0FBUUFTLGlCQUFPQyxRQUFQLENBQWdCSCxHQUFoQixFQUFxQixJQUFyQjs7QUFDQUUsaUJBQU9FLEtBQVAsQ0FBYUgsSUFBYixFQUFtQkksU0FBbkI7O0FBRUFILGlCQUFPRSxLQUFQLENBQ0VFLElBQUksQ0FBQ0MsU0FBTCxDQUFlUCxHQUFmLEVBQW9CLElBQXBCLEVBQTBCLENBQTFCLENBREYsRUFFRztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFQWRJOztBQWlCQSxRQUFJQSxHQUFKLEVBQVM7QUFBQTs7QUFDUEUsbUJBQU9FLEtBQVAsQ0FBYUosR0FBRyxDQUFDUSxPQUFqQixFQUEwQiwyQ0FBMUI7O0FBQ0FOLG1CQUFPRSxLQUFQLGdCQUFhSixHQUFHLENBQUNTLE1BQWpCLHFCQUFhLFlBQVlDLE1BQXpCLEVBQWlDLENBQWpDOztBQUVBLFVBQUlWLEdBQUcsQ0FBQ1MsTUFBUixFQUFnQjtBQUNkUCxxQkFBT1MsU0FBUCxDQUFpQlgsR0FBRyxDQUFDUyxNQUFKLENBQVcsQ0FBWCxFQUFjRyxJQUEvQixFQUFxQyxDQUFDLFFBQUQsQ0FBckM7O0FBQ0FWLHFCQUFPRSxLQUFQLENBQ0VKLEdBQUcsQ0FBQ1MsTUFBSixDQUFXLENBQVgsRUFBY0ksS0FBZCxDQUFvQkwsT0FEdEIsRUFFRSxtQ0FGRjtBQUlEO0FBQ0Y7QUFDRixHQWxFQyxDQUFGO0FBb0VBL0IsRUFBQUEsRUFBRSxDQUFDLGlCQUFELEVBQW9CLE1BQU07QUFDMUIsVUFBTXFCLFNBQVMsR0FBR2dCLFVBQVFwQixNQUFSLEdBQWlCcUIsRUFBakIsQ0FBb0IsQ0FBcEIsRUFBdUJDLE9BQXZCLENBQStCLENBQS9CLENBQWxCOztBQUVBZCxpQkFBT0UsS0FBUCxDQUFhTixTQUFTLENBQUMsVUFBRCxDQUF0QixFQUFvQyxRQUFwQztBQUNELEdBSkMsQ0FBRjtBQUtELENBMUVPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ21vY2hhJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ2NoYWknO1xuaW1wb3J0IHsgdHlwZUNoZWNrIH0gZnJvbSAnLi9zY2hlbWEvdXRpbHMnO1xuaW1wb3J0IFNjaGVtYSwgeyBUeXBlLCBzdHJpbmcsIG51bWJlciwgYXJyYXksIHVua25vd24gfSBmcm9tICcuLyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuZGVzY3JpYmUoJ1JFQURNRScsICgpID0+IHtcbiAgaXQoJ1VzYWdlJywgKCkgPT4ge1xuICAgIGNvbnN0IFVzZXJTY2hlbWEgPSBTY2hlbWEoe1xuICAgICAgbmFtZTogc3RyaW5nLnRyaW0oKS5ub3JtYWxpemUoKS5iZXR3ZWVuKDMsIDQwKS5vcHRpb25hbCgpLFxuICAgICAgdXNlcm5hbWU6IC9eW2EtejAtOV17MywxMH0kLyxcbiAgICAgIHN0YXR1czogU2NoZW1hLmVpdGhlcignYWN0aXZlJyBhcyBjb25zdCwgJ3N1c3BlbmRlZCcgYXMgY29uc3QpLFxuICAgICAgaXRlbXM6IGFycmF5XG4gICAgICAgIC5vZih7XG4gICAgICAgICAgaWQ6IHN0cmluZyxcbiAgICAgICAgICBhbW91bnQ6IG51bWJlci5ndGUoMSkuaW50ZWdlcigpLFxuICAgICAgICB9KVxuICAgICAgICAubWluKDEpLFxuICAgIH0pO1xuICAgIHR5cGUgVXNlciA9IFR5cGU8dHlwZW9mIFVzZXJTY2hlbWE+O1xuXG4gICAgdHlwZUNoZWNrPFxuICAgICAgVXNlcixcbiAgICAgIHtcbiAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICAgICAgc3RhdHVzOiAnYWN0aXZlJyB8ICdzdXNwZW5kZWQnO1xuICAgICAgICBpdGVtczogeyBpZDogc3RyaW5nOyBhbW91bnQ6IG51bWJlciB9W107XG4gICAgICB9XG4gICAgPignb2snKTtcblxuICAgIGNvbnN0IHZhbGlkYXRvciA9IFVzZXJTY2hlbWEuZGVzdHJ1Y3QoKTtcblxuICAgIGNvbnN0IFtlcnIsIHVzZXJdID0gdmFsaWRhdG9yKHtcbiAgICAgIHVzZXJuYW1lOiAnam9objEnLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZSBUeXBlICdcInVucmVnaXN0ZXJlZFwiJyBpcyBub3QgYXNzaWduYWJsZSB0byB0eXBlICdcImFjdGl2ZVwiIHwgXCJzdXNwZW5kZWRcIicuXG4gICAgICBzdGF0dXM6ICd1bnJlZ2lzdGVyZWQnLFxuICAgICAgaXRlbXM6IFt7IGlkOiAnaXRlbS0xJywgYW1vdW50OiAyMCB9XSxcbiAgICB9KTtcblxuICAgIGFzc2VydC5ub3RFcXVhbChlcnIsIG51bGwpO1xuICAgIGFzc2VydC5lcXVhbCh1c2VyLCB1bmRlZmluZWQpO1xuXG4gICAgYXNzZXJ0LmVxdWFsKFxuICAgICAgSlNPTi5zdHJpbmdpZnkoZXJyLCBudWxsLCAyKSxcbiAgICAgIGB7XG4gIFwibWVzc2FnZVwiOiBcInN0YXR1czogRXhwZWN0IHZhbHVlIHRvIGVxdWFsIFxcXFxcInN1c3BlbmRlZFxcXFxcIlwiLFxuICBcImVycm9yc1wiOiBbXG4gICAge1xuICAgICAgXCJwYXRoXCI6IFtcbiAgICAgICAgXCJzdGF0dXNcIlxuICAgICAgXSxcbiAgICAgIFwiZXJyb3JcIjoge1xuICAgICAgICBcIm1lc3NhZ2VcIjogXCJFeHBlY3QgdmFsdWUgdG8gZXF1YWwgXFxcXFwic3VzcGVuZGVkXFxcXFwiXCJcbiAgICAgIH1cbiAgICB9XG4gIF1cbn1gLFxuICAgICk7XG5cbiAgICBpZiAoZXJyKSB7XG4gICAgICBhc3NlcnQuZXF1YWwoZXJyLm1lc3NhZ2UsICdzdGF0dXM6IEV4cGVjdCB2YWx1ZSB0byBlcXVhbCBcInN1c3BlbmRlZFwiJyk7XG4gICAgICBhc3NlcnQuZXF1YWwoZXJyLmVycm9ycz8ubGVuZ3RoLCAxKTtcblxuICAgICAgaWYgKGVyci5lcnJvcnMpIHtcbiAgICAgICAgYXNzZXJ0LmRlZXBFcXVhbChlcnIuZXJyb3JzWzBdLnBhdGgsIFsnc3RhdHVzJ10pO1xuICAgICAgICBhc3NlcnQuZXF1YWwoXG4gICAgICAgICAgZXJyLmVycm9yc1swXS5lcnJvci5tZXNzYWdlLFxuICAgICAgICAgICdFeHBlY3QgdmFsdWUgdG8gZXF1YWwgXCJzdXNwZW5kZWRcIicsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBpdCgnVmFsaWRhdG9yIGNoYWluJywgKCkgPT4ge1xuICAgIGNvbnN0IHZhbGlkYXRvciA9IHVua25vd24ubnVtYmVyKCkuZ3QoMCkudG9GaXhlZCgyKTtcblxuICAgIGFzc2VydC5lcXVhbCh2YWxpZGF0b3IoJzEyMy40NTY3JyksICcxMjMuNDYnKTtcbiAgfSk7XG59KTtcbiJdfQ==