computed-types
Version:
Runtime validation types for TypeScript.
79 lines (68 loc) • 7.03 kB
JavaScript
"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==