computed-types
Version:
Runtime validation types for TypeScript.
134 lines (114 loc) • 12.9 kB
JavaScript
"use strict";
require("mocha");
var _chai = require("chai");
var _switch = require("./switch");
var _chaiAsPromised = _interopRequireDefault(require("chai-as-promised"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
(0, _chai.use)(_chaiAsPromised.default);
/* eslint-disable @typescript-eslint/no-explicit-any */
describe('schema/switch', () => {
describe('findSwitchKey', () => {
it('should not find on once candidate', () => {
_chai.assert.equal((0, _switch.findSwitchKey)(null), null);
_chai.assert.equal((0, _switch.findSwitchKey)('foo'), null);
_chai.assert.equal((0, _switch.findSwitchKey)({
key: 'foo'
}), null);
});
it('should not find on primitive candidates', () => {
_chai.assert.equal((0, _switch.findSwitchKey)({
key: 'foo'
}, null), null);
_chai.assert.equal((0, _switch.findSwitchKey)({
key: 'foo'
}, 'foo'), null);
_chai.assert.equal((0, _switch.findSwitchKey)({
key: 'foo'
}, undefined), null);
});
it('should not find on non-primitive keys', () => {
_chai.assert.equal((0, _switch.findSwitchKey)({
key: 'foo'
}, {
key: () => null
}), null);
_chai.assert.equal((0, _switch.findSwitchKey)({
key: 'foo'
}, {
key: {}
}), null);
});
it('should find primitive switches', () => {
_chai.assert.deepEqual((0, _switch.findSwitchKey)({
key: 'foo'
}, {
key: 'bar'
}), ['key', new Map([['foo', 0], ['bar', 1]])]);
_chai.assert.deepEqual((0, _switch.findSwitchKey)({
key: 'foo'
}, {
key: 1,
bar: 3
}), ['key', new Map([['foo', 0], [1, 1]])]);
_chai.assert.deepEqual((0, _switch.findSwitchKey)({
key: 'foo'
}, {
bar: 3
}), ['key', new Map([['foo', 0], [undefined, 1]])]);
_chai.assert.deepEqual((0, _switch.findSwitchKey)({
key: 'foo',
bar: 1
}, {
key: 'foo',
bar: 2
}), ['bar', new Map([[1, 0], [2, 1]])]);
_chai.assert.deepEqual((0, _switch.findSwitchKey)({
key: 'foo',
bar: 2
}, {
key: 'foo'
}), ['bar', new Map([[2, 0], [undefined, 1]])]);
});
it('should not find on equal switches', () => {
_chai.assert.equal((0, _switch.findSwitchKey)({
key: 'foo'
}, {
key: 'foo'
}), null);
});
it('should not find on hidden properties', () => {
_chai.assert.equal((0, _switch.findSwitchKey)({
key: 'foo'
}, {
key: 'foo',
bar: 1
}), null);
});
});
describe('generateSwitch', () => {
it('should generate a switch', () => {
const validator = (0, _switch.generateSwitch)(['key', new Map([['foo', 0], ['bar', 1]])], [x => [0, x], x => [1, x]]);
_chai.assert.deepEqual(validator({
key: 'foo',
value: 1
}), [0, {
key: 'foo',
value: 1
}]);
_chai.assert.deepEqual(validator({
key: 'bar',
value: 1
}), [1, {
key: 'bar',
value: 1
}]);
_chai.assert.deepEqual(validator('foo'), [0, 'foo']);
_chai.assert.deepEqual(validator({
key: 'hello'
}), [0, {
key: 'hello'
}]);
});
});
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvc3dpdGNoLnRlc3QudHMiXSwibmFtZXMiOlsiY2hhaUFzUHJvbWlzZWQiLCJkZXNjcmliZSIsIml0IiwiYXNzZXJ0IiwiZXF1YWwiLCJrZXkiLCJ1bmRlZmluZWQiLCJkZWVwRXF1YWwiLCJNYXAiLCJiYXIiLCJ2YWxpZGF0b3IiLCJ4IiwidmFsdWUiXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFHQSxlQUFJQSx1QkFBSjtBQUVBOztBQUVBQyxRQUFRLENBQUMsZUFBRCxFQUFrQixNQUFNO0FBQzlCQSxFQUFBQSxRQUFRLENBQUMsZUFBRCxFQUFrQixNQUFNO0FBQzlCQyxJQUFBQSxFQUFFLENBQUMsbUNBQUQsRUFBc0MsTUFBTTtBQUM1Q0MsbUJBQU9DLEtBQVAsQ0FBYSwyQkFBYyxJQUFkLENBQWIsRUFBa0MsSUFBbEM7O0FBQ0FELG1CQUFPQyxLQUFQLENBQWEsMkJBQWMsS0FBZCxDQUFiLEVBQW1DLElBQW5DOztBQUNBRCxtQkFBT0MsS0FBUCxDQUFhLDJCQUFjO0FBQUVDLFFBQUFBLEdBQUcsRUFBRTtBQUFQLE9BQWQsQ0FBYixFQUE0QyxJQUE1QztBQUNELEtBSkMsQ0FBRjtBQU1BSCxJQUFBQSxFQUFFLENBQUMseUNBQUQsRUFBNEMsTUFBTTtBQUNsREMsbUJBQU9DLEtBQVAsQ0FBYSwyQkFBYztBQUFFQyxRQUFBQSxHQUFHLEVBQUU7QUFBUCxPQUFkLEVBQThCLElBQTlCLENBQWIsRUFBa0QsSUFBbEQ7O0FBQ0FGLG1CQUFPQyxLQUFQLENBQWEsMkJBQWM7QUFBRUMsUUFBQUEsR0FBRyxFQUFFO0FBQVAsT0FBZCxFQUE4QixLQUE5QixDQUFiLEVBQW1ELElBQW5EOztBQUNBRixtQkFBT0MsS0FBUCxDQUFhLDJCQUFjO0FBQUVDLFFBQUFBLEdBQUcsRUFBRTtBQUFQLE9BQWQsRUFBOEJDLFNBQTlCLENBQWIsRUFBdUQsSUFBdkQ7QUFDRCxLQUpDLENBQUY7QUFNQUosSUFBQUEsRUFB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U0FBUCxDQUFpQkcsU0FBUyxDQUFDLEtBQUQsQ0FBMUIsRUFBbUMsQ0FBQyxDQUFELEVBQUksS0FBSixDQUFuQzs7QUFDQVAsbUJBQU9JLFNBQVAsQ0FBaUJHLFNBQVMsQ0FBQztBQUFFTCxRQUFBQSxHQUFHLEVBQUU7QUFBUCxPQUFELENBQTFCLEVBQThDLENBQUMsQ0FBRCxFQUFJO0FBQUVBLFFBQUFBLEdBQUcsRUFBRTtBQUFQLE9BQUosQ0FBOUM7QUFDRCxLQXpCQyxDQUFGO0FBMEJELEdBM0JPLENBQVI7QUE0QkQsQ0FyR08sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAnbW9jaGEnO1xuaW1wb3J0IHsgYXNzZXJ0LCB1c2UgfSBmcm9tICdjaGFpJztcbmltcG9ydCB7IGZpbmRTd2l0Y2hLZXksIGdlbmVyYXRlU3dpdGNoIH0gZnJvbSAnLi9zd2l0Y2gnO1xuaW1wb3J0IGNoYWlBc1Byb21pc2VkIGZyb20gJ2NoYWktYXMtcHJvbWlzZWQnO1xuaW1wb3J0IHsgUHJpbWl0aXZlIH0gZnJvbSAnLi91dGlscyc7XG5cbnVzZShjaGFpQXNQcm9taXNlZCk7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cblxuZGVzY3JpYmUoJ3NjaGVtYS9zd2l0Y2gnLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdmaW5kU3dpdGNoS2V5JywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgbm90IGZpbmQgb24gb25jZSBjYW5kaWRhdGUnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQuZXF1YWwoZmluZFN3aXRjaEtleShudWxsKSwgbnVsbCk7XG4gICAgICBhc3NlcnQuZXF1YWwoZmluZFN3aXRjaEtleSgnZm9vJyksIG51bGwpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGZpbmRTd2l0Y2hLZXkoeyBrZXk6ICdmb28nIH0pLCBudWxsKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IGZpbmQgb24gcHJpbWl0aXZlIGNhbmRpZGF0ZXMnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQuZXF1YWwoZmluZFN3aXRjaEtleSh7IGtleTogJ2ZvbycgfSwgbnVsbCksIG51bGwpO1xuICAgICAgYXNzZXJ0LmVxdWFsKGZpbmRTd2l0Y2hLZXkoeyBrZXk6ICdmb28nIH0sICdmb28nKSwgbnVsbCk7XG4gICAgICBhc3NlcnQuZXF1YWwoZmluZFN3aXRjaEtleSh7IGtleTogJ2ZvbycgfSwgdW5kZWZpbmVkKSwgbnVsbCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCBmaW5kIG9uIG5vbi1wcmltaXRpdmUga2V5cycsICgpID0+IHtcbiAgICAgIGFzc2VydC5lcXVhbChmaW5kU3dpdGNoS2V5KHsga2V5OiAnZm9vJyB9LCB7IGtleTogKCkgPT4gbnVsbCB9KSwgbnVsbCk7XG4gICAgICBhc3NlcnQuZXF1YWwoZmluZFN3aXRjaEtleSh7IGtleTogJ2ZvbycgfSwgeyBrZXk6IHt9IH0pLCBudWxsKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZmluZCBwcmltaXRpdmUgc3dpdGNoZXMnLCAoKSA9PiB7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGZpbmRTd2l0Y2hLZXkoeyBrZXk6ICdmb28nIH0sIHsga2V5OiAnYmFyJyB9KSwgW1xuICAgICAgICAna2V5JyxcbiAgICAgICAgbmV3IE1hcChbXG4gICAgICAgICAgWydmb28nLCAwXSxcbiAgICAgICAgICBbJ2JhcicsIDFdLFxuICAgICAgICBdKSxcbiAgICAgIF0pO1xuXG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGZpbmRTd2l0Y2hLZXkoeyBrZXk6ICdmb28nIH0sIHsga2V5OiAxLCBiYXI6IDMgfSksIFtcbiAgICAgICAgJ2tleScsXG4gICAgICAgIG5ldyBNYXA8UHJpbWl0aXZlLCBudW1iZXI+KFtcbiAgICAgICAgICBbJ2ZvbycsIDBdLFxuICAgICAgICAgIFsxLCAxXSxcbiAgICAgICAgXSksXG4gICAgICBdKTtcblxuICAgICAgYXNzZXJ0LmRlZXBFcXVhbChmaW5kU3dpdGNoS2V5KHsga2V5OiAnZm9vJyB9LCB7IGJhcjogMyB9KSwgW1xuICAgICAgICAna2V5JyxcbiAgICAgICAgbmV3IE1hcDxQcmltaXRpdmUsIG51bWJlcj4oW1xuICAgICAgICAgIFsnZm9vJywgMF0sXG4gICAgICAgICAgW3VuZGVmaW5lZCwgMV0sXG4gICAgICAgIF0pLFxuICAgICAgXSk7XG5cbiAgICAgIGFzc2VydC5kZWVwRXF1YWwoXG4gICAgICAgIGZpbmRTd2l0Y2hLZXkoeyBrZXk6ICdmb28nLCBiYXI6IDEgfSwgeyBrZXk6ICdmb28nLCBiYXI6IDIgfSksXG4gICAgICAgIFtcbiAgICAgICAgICAnYmFyJyxcbiAgICAgICAgICBuZXcgTWFwPFByaW1pdGl2ZSwgbnVtYmVyPihbXG4gICAgICAgICAgICBbMSwgMF0sXG4gICAgICAgICAgICBbMiwgMV0sXG4gICAgICAgICAgXSksXG4gICAgICAgIF0sXG4gICAgICApO1xuXG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKGZpbmRTd2l0Y2hLZXkoeyBrZXk6ICdmb28nLCBiYXI6IDIgfSwgeyBrZXk6ICdmb28nIH0pLCBbXG4gICAgICAgICdiYXInLFxuICAgICAgICBuZXcgTWFwPFByaW1pdGl2ZSwgbnVtYmVyPihbXG4gICAgICAgICAgWzIsIDBdLFxuICAgICAgICAgIFt1bmRlZmluZWQsIDFdLFxuICAgICAgICBdKSxcbiAgICAgIF0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgZmluZCBvbiBlcXVhbCBzd2l0Y2hlcycsICgpID0+IHtcbiAgICAgIGFzc2VydC5lcXVhbChmaW5kU3dpdGNoS2V5KHsga2V5OiAnZm9vJyB9LCB7IGtleTogJ2ZvbycgfSksIG51bGwpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgZmluZCBvbiBoaWRkZW4gcHJvcGVydGllcycsICgpID0+IHtcbiAgICAgIGFzc2VydC5lcXVhbChmaW5kU3dpdGNoS2V5KHsga2V5OiAnZm9vJyB9LCB7IGtleTogJ2ZvbycsIGJhcjogMSB9KSwgbnVsbCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZW5lcmF0ZVN3aXRjaCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGdlbmVyYXRlIGEgc3dpdGNoJywgKCkgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdG9yID0gZ2VuZXJhdGVTd2l0Y2goXG4gICAgICAgIFtcbiAgICAgICAgICAna2V5JyxcbiAgICAgICAgICBuZXcgTWFwKFtcbiAgICAgICAgICAgIFsnZm9vJywgMF0sXG4gICAgICAgICAgICBbJ2JhcicsIDFdLFxuICAgICAgICAgIF0pLFxuICAgICAgICBdLFxuICAgICAgICBbXG4gICAgICAgICAgKHg6IHVua25vd24pOiBbbnVtYmVyLCB1bmtub3duXSA9PiBbMCwgeF0sXG4gICAgICAgICAgKHg6IHVua25vd24pOiBbbnVtYmVyLCB1bmtub3duXSA9PiBbMSwgeF0sXG4gICAgICAgIF0sXG4gICAgICApO1xuXG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKHZhbGlkYXRvcih7IGtleTogJ2ZvbycsIHZhbHVlOiAxIH0pLCBbXG4gICAgICAgIDAsXG4gICAgICAgIHsga2V5OiAnZm9vJywgdmFsdWU6IDEgfSxcbiAgICAgIF0pO1xuICAgICAgYXNzZXJ0LmRlZXBFcXVhbCh2YWxpZGF0b3IoeyBrZXk6ICdiYXInLCB2YWx1ZTogMSB9KSwgW1xuICAgICAgICAxLFxuICAgICAgICB7IGtleTogJ2JhcicsIHZhbHVlOiAxIH0sXG4gICAgICBdKTtcbiAgICAgIGFzc2VydC5kZWVwRXF1YWwodmFsaWRhdG9yKCdmb28nKSwgWzAsICdmb28nXSk7XG4gICAgICBhc3NlcnQuZGVlcEVxdWFsKHZhbGlkYXRvcih7IGtleTogJ2hlbGxvJyB9KSwgWzAsIHsga2V5OiAnaGVsbG8nIH1dKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==