UNPKG

computed-types

Version:

Runtime validation types for TypeScript.

79 lines (68 loc) 7.03 kB
"use strict"; require("mocha"); var _chai = require("chai"); 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('index', () => { describe('Circular Types', () => { // testing issue: // https://github.com/neuledge/computed-types/issues/39 const NodeSchema = node => { return (0, _.default)({ name: _.string.trim().normalize(), nodes: _.array.of(NodeSchema) })(node); }; it('should validate correctly', () => { _chai.assert.deepEqual(NodeSchema({ name: 'root', nodes: [] }), { name: 'root', nodes: [] }); _chai.assert.deepEqual(NodeSchema({ name: 'root', nodes: [{ name: 'foo', nodes: [] }] }), { name: 'root', nodes: [{ name: 'foo', nodes: [] }] }); _chai.assert.throws(() => NodeSchema({ name: 'root' }), 'nodes: Expecting value to be an array'); }); it('should use it on other schemas', () => { const MainSchema = (0, _.default)({ type: _.string, node: NodeSchema }); _chai.assert.deepEqual(MainSchema({ type: 'test', node: { name: 'root', nodes: [] } }), { type: 'test', node: { name: 'root', nodes: [] } }); _chai.assert.throws(() => MainSchema({ type: 'test', node: null })); }); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50ZXN0LnRzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiTm9kZVNjaGVtYSIsIm5vZGUiLCJuYW1lIiwic3RyaW5nIiwidHJpbSIsIm5vcm1hbGl6ZSIsIm5vZGVzIiwiYXJyYXkiLCJvZiIsIml0IiwiYXNzZXJ0IiwiZGVlcEVxdWFsIiwidGhyb3dzIiwiTWFpblNjaGVtYSIsInR5cGUiXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBQ0E7O0FBQ0E7Ozs7OztBQUVBO0FBRUFBLFFBQVEsQ0FBQyxPQUFELEVBQVUsTUFBTTtBQUN0QkEsRUFBQUEsUUFBUSxDQUFDLGdCQUFELEVBQW1CLE1BQU07QUFDL0I7QUFDQTtBQU9BLFVBQU1DLFVBQVUsR0FBSUMsSUFBRCxJQUFzQjtBQUN2QyxhQUFPLGVBQU87QUFDWkMsUUFBQUEsSUFBSSxFQUFFQyxTQUFPQyxJQUFQLEdBQWNDLFNBQWQsRUFETTtBQUVaQyxRQUFBQSxLQUFLLEVBQUVDLFFBQU1DLEVBQU4sQ0FBU1IsVUFBVDtBQUZLLE9BQVAsRUFHSkMsSUFISSxDQUFQO0FBSUQsS0FMRDs7QUFPQVEsSUFBQUEsRUFBRSxDQUFDLDJCQUFELEVBQThCLE1BQU07QUFDcENDLG1CQUFPQyxTQUFQLENBQWlCWCxVQUFVLENBQUM7QUFBRUUsUUFBQUEsSUFBSSxFQUFFLE1BQVI7QUFBZ0JJLFFBQUFBLEtBQUssRUFBRTtBQUF2QixPQUFELENBQTNCLEVBQTBEO0FBQ3hESixRQUFBQSxJQUFJLEVBQUUsTUFEa0Q7QUFFeERJLFFBQUFBLEtBQUssRUFBRTtBQUZpRCxPQUExRDs7QUFLQUksbUJBQU9DLFNBQVAsQ0FDRVgsVUFBVSxDQUFDO0FBQUVFLFFBQUFBLElBQUksRUFBRSxNQUFSO0FBQWdCSSxRQUFBQSxLQUFLLEVBQUUsQ0FBQztBQUFFSixVQUFBQSxJQUFJLEVBQUUsS0FBUjtBQUFlSSxVQUFBQSxLQUFLLEVBQUU7QUFBdEIsU0FBRDtBQUF2QixPQUFELENBRFosRUFFRTtBQUNFSixRQUFBQSxJQUFJLEVBQUUsTUFEUjtBQUVFSSxRQUFBQSxLQUFLLEVBQUUsQ0FBQztBQUFFSixVQUFBQSxJQUFJLEVBQUUsS0FBUjtBQUFlSSxVQUFBQSxLQUFLLEVBQUU7QUFBdEIsU0FBRDtBQUZULE9BRkY7O0FBUUFJLG1CQUFPRSxNQUFQLENBQ0UsTUFBTVosVUFBVSxDQUFDO0FBQUVFLFFBQUFBLElBQUksRUFBRTtBQUFSLE9BQUQsQ0FEbEIsRUFFRSx1Q0FGRjtBQUlELEtBbEJDLENBQUY7QUFvQkFPLElBQUFBLEVBQUUsQ0FBQyxnQ0FBRCxFQUFtQyxNQUFNO0FBQ3pDLFlBQU1JLFVBQVUsR0FBRyxlQUFPO0FBQ3hCQyxRQUFBQSxJQUFJLEVBQUVYLFFBRGtCO0FBRXhCRixRQUFBQSxJQUFJLEVBQUVEO0FBRmtCLE9BQVAsQ0FBbkI7O0FBS0FVLG1CQUFPQyxTQUFQLENBQ0VFLFVBQVUsQ0FBQztBQUFFQyxRQUFBQSxJQUFJLEVBQUUsTUFBUjtBQUFnQmIsUUFBQUEsSUFBSSxFQUFFO0FBQUVDLFVBQUFBLElBQUksRUFBRSxNQUFSO0FBQWdCSSxVQUFBQSxLQUFLLEVBQUU7QUFBdkI7QUFBdEIsT0FBRCxDQURaLEVBRUU7QUFBRVEsUUFBQUEsSUFBSSxFQUFFLE1BQVI7QUFBZ0JiLFFBQUFBLElBQUksRUFBRTtBQUFFQyxVQUFBQSxJQUFJLEVBQUUsTUFBUjtBQUFnQkksVUFBQUEsS0FBSyxFQUFFO0FBQXZCO0FBQXRCLE9BRkY7O0FBS0FJLG1CQUFPRSxNQUFQLENBQWMsTUFBTUMsVUFBVSxDQUFDO0FBQUVDLFFBQUFBLElBQUksRUFBRSxNQUFSO0FBQWdCYixRQUFBQSxJQUFJLEVBQUU7QUFBdEIsT0FBRCxDQUE5QjtBQUNELEtBWkMsQ0FBRjtBQWFELEdBakRPLENBQVI7QUFrREQsQ0FuRE8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnbW9jaGEnO1xuaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSAnY2hhaSc7XG5pbXBvcnQgU2NoZW1hLCB7IHN0cmluZywgYXJyYXkgfSBmcm9tICcuLyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuZGVzY3JpYmUoJ2luZGV4JywgKCkgPT4ge1xuICBkZXNjcmliZSgnQ2lyY3VsYXIgVHlwZXMnLCAoKSA9PiB7XG4gICAgLy8gdGVzdGluZyBpc3N1ZTpcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbmV1bGVkZ2UvY29tcHV0ZWQtdHlwZXMvaXNzdWVzLzM5XG5cbiAgICB0eXBlIE5vZGUgPSB7XG4gICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICBub2RlczogTm9kZVtdO1xuICAgIH07XG5cbiAgICBjb25zdCBOb2RlU2NoZW1hID0gKG5vZGU6IE5vZGUpOiBOb2RlID0+IHtcbiAgICAgIHJldHVybiBTY2hlbWEoe1xuICAgICAgICBuYW1lOiBzdHJpbmcudHJpbSgpLm5vcm1hbGl6ZSgpLFxuICAgICAgICBub2RlczogYXJyYXkub2YoTm9kZVNjaGVtYSksXG4gICAgICB9KShub2RlKTtcbiAgICB9O1xuXG4gICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBjb3JyZWN0bHknLCAoKSA9PiB7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKE5vZGVTY2hlbWEoeyBuYW1lOiAncm9vdCcsIG5vZGVzOiBbXSB9KSwge1xuICAgICAgICBuYW1lOiAncm9vdCcsXG4gICAgICAgIG5vZGVzOiBbXSxcbiAgICAgIH0pO1xuXG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKFxuICAgICAgICBOb2RlU2NoZW1hKHsgbmFtZTogJ3Jvb3QnLCBub2RlczogW3sgbmFtZTogJ2ZvbycsIG5vZGVzOiBbXSB9XSB9KSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdyb290JyxcbiAgICAgICAgICBub2RlczogW3sgbmFtZTogJ2ZvbycsIG5vZGVzOiBbXSB9XSxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIGFzc2VydC50aHJvd3MoXG4gICAgICAgICgpID0+IE5vZGVTY2hlbWEoeyBuYW1lOiAncm9vdCcgfSBhcyBhbnkpLFxuICAgICAgICAnbm9kZXM6IEV4cGVjdGluZyB2YWx1ZSB0byBiZSBhbiBhcnJheScsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB1c2UgaXQgb24gb3RoZXIgc2NoZW1hcycsICgpID0+IHtcbiAgICAgIGNvbnN0IE1haW5TY2hlbWEgPSBTY2hlbWEoe1xuICAgICAgICB0eXBlOiBzdHJpbmcsXG4gICAgICAgIG5vZGU6IE5vZGVTY2hlbWEsXG4gICAgICB9KTtcblxuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChcbiAgICAgICAgTWFpblNjaGVtYSh7IHR5cGU6ICd0ZXN0Jywgbm9kZTogeyBuYW1lOiAncm9vdCcsIG5vZGVzOiBbXSB9IH0pLFxuICAgICAgICB7IHR5cGU6ICd0ZXN0Jywgbm9kZTogeyBuYW1lOiAncm9vdCcsIG5vZGVzOiBbXSB9IH0sXG4gICAgICApO1xuXG4gICAgICBhc3NlcnQudGhyb3dzKCgpID0+IE1haW5TY2hlbWEoeyB0eXBlOiAndGVzdCcsIG5vZGU6IG51bGwgfSBhcyBhbnkpKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==