UNPKG

computed-types

Version:

Runtime validation types for TypeScript.

106 lines (70 loc) 18 kB
"use strict"; require("mocha"); var _chai = require("chai"); var _DateType = _interopRequireDefault(require("./DateType")); var _errors = require("./schema/errors"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* eslint-disable @typescript-eslint/no-explicit-any */ describe('DateType', () => { it('DateType()', () => { _chai.assert.deepEqual((0, _DateType.default)(new Date(10)), new Date(10)); _chai.assert.throws(() => (0, _DateType.default)(undefined), _errors.ValidationError); _chai.assert.throws(() => (0, _DateType.default)(50), _errors.ValidationError); _chai.assert.throws(() => (0, _DateType.default)('test'), _errors.ValidationError); _chai.assert.throws(() => (0, _DateType.default)(null), _errors.ValidationError); _chai.assert.throws(() => (0, _DateType.default)(true), _errors.ValidationError); _chai.assert.throws(() => (0, _DateType.default)(false), _errors.ValidationError); _chai.assert.throws(() => (0, _DateType.default)({}), _errors.ValidationError); }); it('.toISOString()', () => { _chai.assert.equal(_DateType.default.toISOString()(new Date('1970-01-01T00:00:00.050Z')), '1970-01-01T00:00:00.050Z'); }); it('.getTime()', () => { _chai.assert.equal(_DateType.default.getTime()(new Date(50)), 50); }); it('.min()', () => { _chai.assert.deepEqual(_DateType.default.min(new Date(50))(new Date(50)), new Date(50)); _chai.assert.deepEqual(_DateType.default.min(new Date(50))(new Date(51)), new Date(51)); _chai.assert.throw(() => _DateType.default.min(new Date(50))(new Date(49)), RangeError); _chai.assert.throw(() => _DateType.default.min(new Date(50))(null), _errors.ValidationError); _chai.assert.throw(() => _DateType.default.min(new Date(50), 'test')(new Date(1)), _errors.ValidationError, 'test'); }); it('.max()', () => { _chai.assert.deepEqual(_DateType.default.max(new Date(50))(new Date(50)), new Date(50)); _chai.assert.deepEqual(_DateType.default.max(new Date(50))(new Date(49)), new Date(49)); _chai.assert.throw(() => _DateType.default.max(new Date(50))(new Date(51)), RangeError); _chai.assert.throw(() => _DateType.default.max(new Date(50))(null), _errors.ValidationError); _chai.assert.throw(() => _DateType.default.max(new Date(50), 'test')(new Date(51)), _errors.ValidationError, 'test'); }); it('.gte()', () => { _chai.assert.deepEqual(_DateType.default.gte(new Date(50))(new Date(50)), new Date(50)); _chai.assert.deepEqual(_DateType.default.gte(new Date(50))(new Date(51)), new Date(51)); _chai.assert.throw(() => _DateType.default.gte(new Date(50))(new Date(49)), RangeError); }); it('.lte()', () => { _chai.assert.deepEqual(_DateType.default.lte(new Date(50))(new Date(50)), new Date(50)); _chai.assert.deepEqual(_DateType.default.lte(new Date(50))(new Date(49)), new Date(49)); _chai.assert.throw(() => _DateType.default.lte(new Date(50))(new Date(51)), RangeError); }); it('.gt()', () => { _chai.assert.deepEqual(_DateType.default.gt(new Date(50))(new Date(51)), new Date(51)); _chai.assert.throw(() => _DateType.default.gt(new Date(50))(new Date(50)), RangeError); _chai.assert.throw(() => _DateType.default.gt(new Date(50))(new Date(49)), RangeError); _chai.assert.throw(() => _DateType.default.gt(new Date(50), 'test')(new Date(50)), _errors.ValidationError, 'test'); }); it('.lt()', () => { _chai.assert.deepEqual(_DateType.default.lt(new Date(50))(new Date(49)), new Date(49)); _chai.assert.throw(() => _DateType.default.lt(new Date(50))(new Date(50)), RangeError); _chai.assert.throw(() => _DateType.default.lt(new Date(50))(new Date(51)), RangeError); _chai.assert.throw(() => _DateType.default.lt(new Date(50), 'test')(new Date(50)), _errors.ValidationError, 'test'); }); it('.between()', () => { _chai.assert.deepEqual(_DateType.default.between(new Date(50), new Date(52))(new Date(50)), new Date(50)); _chai.assert.deepEqual(_DateType.default.between(new Date(50), new Date(52))(new Date(51)), new Date(51)); _chai.assert.deepEqual(_DateType.default.between(new Date(50), new Date(52))(new Date(52)), new Date(52)); _chai.assert.throw(() => _DateType.default.between(new Date(50), new Date(52))(new Date(49)), RangeError); _chai.assert.throw(() => _DateType.default.between(new Date(50), new Date(52))(new Date(53)), RangeError); _chai.assert.throw(() => _DateType.default.between(new Date(50), new Date(52), 'test')(new Date(53)), _errors.ValidationError, 'test'); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9EYXRlVHlwZS50ZXN0LnRzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiaXQiLCJhc3NlcnQiLCJkZWVwRXF1YWwiLCJEYXRlIiwidGhyb3dzIiwidW5kZWZpbmVkIiwiVmFsaWRhdGlvbkVycm9yIiwiZXF1YWwiLCJEYXRlVHlwZSIsInRvSVNPU3RyaW5nIiwiZ2V0VGltZSIsIm1pbiIsInRocm93IiwiUmFuZ2VFcnJvciIsIm1heCIsImd0ZSIsImx0ZSIsImd0IiwibHQiLCJiZXR3ZWVuIl0sIm1hcHBpbmdzIjoiOztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUE7QUFFQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxNQUFNO0FBQ3pCQyxFQUFBQSxFQUFFLENBQUMsWUFBRCxFQUFlLE1BQU07QUFDckJDLGlCQUFPQyxTQUFQLENBQWlCLHVCQUFTLElBQUlDLElBQUosQ0FBUyxFQUFULENBQVQsQ0FBakIsRUFBeUMsSUFBSUEsSUFBSixDQUFTLEVBQVQsQ0FBekM7O0FBRUFGLGlCQUFPRyxNQUFQLENBQWMsTUFBTSx1QkFBU0MsU0FBVCxDQUFwQixFQUFnREMsdUJBQWhEOztBQUNBTCxpQkFBT0csTUFBUCxDQUFjLE1BQU0sdUJBQVMsRUFBVCxDQUFwQixFQUF5Q0UsdUJBQXpDOztBQUNBTCxpQkFBT0csTUFBUCxDQUFjLE1BQU0sdUJBQVMsTUFBVCxDQUFwQixFQUE2Q0UsdUJBQTdDOztBQUNBTCxpQkFBT0csTUFBUCxDQUFjLE1BQU0sdUJBQVMsSUFBVCxDQUFwQixFQUEyQ0UsdUJBQTNDOztBQUNBTCxpQkFBT0csTUFBUCxDQUFjLE1BQU0sdUJBQVMsSUFBVCxDQUFwQixFQUEyQ0UsdUJBQTNDOztBQUNBTCxpQkFBT0csTUFBUCxDQUFjLE1BQU0sdUJBQVMsS0FBVCxDQUFwQixFQUE0Q0UsdUJBQTVDOztBQUNBTCxpQkFBT0csTUFBUCxDQUFjLE1BQU0sdUJBQVMsRUFBVCxDQUFwQixFQUF5Q0UsdUJBQXpDO0FBQ0QsR0FWQyxDQUFGO0FB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O0FBSUFaLGlCQUFPVyxLQUFQLENBQ0UsTUFBTUosa0JBQVNXLE9BQVQsQ0FBaUIsSUFBSWhCLElBQUosQ0FBUyxFQUFULENBQWpCLEVBQStCLElBQUlBLElBQUosQ0FBUyxFQUFULENBQS9CLEVBQTZDLElBQUlBLElBQUosQ0FBUyxFQUFULENBQTdDLENBRFIsRUFFRVUsVUFGRjs7QUFJQVosaUJBQU9XLEtBQVAsQ0FDRSxNQUFNSixrQkFBU1csT0FBVCxDQUFpQixJQUFJaEIsSUFBSixDQUFTLEVBQVQsQ0FBakIsRUFBK0IsSUFBSUEsSUFBSixDQUFTLEVBQVQsQ0FBL0IsRUFBNkMsTUFBN0MsRUFBcUQsSUFBSUEsSUFBSixDQUFTLEVBQVQsQ0FBckQsQ0FEUixFQUVFRyx1QkFGRixFQUdFLE1BSEY7QUFLRCxHQTNCQyxDQUFGO0FBNEJELENBMUhPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ21vY2hhJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ2NoYWknO1xuaW1wb3J0IERhdGVUeXBlIGZyb20gJy4vRGF0ZVR5cGUnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnLi9zY2hlbWEvZXJyb3JzJztcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuXG5kZXNjcmliZSgnRGF0ZVR5cGUnLCAoKSA9PiB7XG4gIGl0KCdEYXRlVHlwZSgpJywgKCkgPT4ge1xuICAgIGFzc2VydC5kZWVwRXF1YWwoRGF0ZVR5cGUobmV3IERhdGUoMTApKSwgbmV3IERhdGUoMTApKTtcblxuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gRGF0ZVR5cGUodW5kZWZpbmVkIGFzIGFueSksIFZhbGlkYXRpb25FcnJvcik7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBEYXRlVHlwZSg1MCBhcyBhbnkpLCBWYWxpZGF0aW9uRXJyb3IpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gRGF0ZVR5cGUoJ3Rlc3QnIGFzIGFueSksIFZhbGlkYXRpb25FcnJvcik7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBEYXRlVHlwZShudWxsIGFzIGFueSksIFZhbGlkYXRpb25FcnJvcik7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBEYXRlVHlwZSh0cnVlIGFzIGFueSksIFZhbGlkYXRpb25FcnJvcik7XG4gICAgYXNzZXJ0LnRocm93cygoKSA9PiBEYXRlVHlwZShmYWxzZSBhcyBhbnkpLCBWYWxpZGF0aW9uRXJyb3IpO1xuICAgIGFzc2VydC50aHJvd3MoKCkgPT4gRGF0ZVR5cGUoe30gYXMgYW55KSwgVmFsaWRhdGlvbkVycm9yKTtcbiAgfSk7XG5cbiAgaXQoJy50b0lTT1N0cmluZygpJywgKCkgPT4ge1xuICAgIGFzc2VydC5lcXVhbChcbiAgICAgIERhdGVUeXBlLnRvSVNPU3RyaW5nKCkobmV3IERhdGUoJzE5NzAtMDEtMDFUMDA6MDA6MDAuMDUwWicpKSxcbiAgICAgICcxOTcwLTAxLTAxVDAwOjAwOjAwLjA1MFonLFxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCcuZ2V0VGltZSgpJywgKCkgPT4ge1xuICAgIGFzc2VydC5lcXVhbChEYXRlVHlwZS5nZXRUaW1lKCkobmV3IERhdGUoNTApKSwgNTApO1xuICB9KTtcblxuICBpdCgnLm1pbigpJywgKCkgPT4ge1xuICAgIGFzc2VydC5kZWVwRXF1YWwoRGF0ZVR5cGUubWluKG5ldyBEYXRlKDUwKSkobmV3IERhdGUoNTApKSwgbmV3IERhdGUoNTApKTtcbiAgICBhc3NlcnQuZGVlcEVxdWFsKERhdGVUeXBlLm1pbihuZXcgRGF0ZSg1MCkpKG5ldyBEYXRlKDUxKSksIG5ldyBEYXRlKDUxKSk7XG5cbiAgICBhc3NlcnQudGhyb3coKCkgPT4gRGF0ZVR5cGUubWluKG5ldyBEYXRlKDUwKSkobmV3IERhdGUoNDkpKSwgUmFuZ2VFcnJvcik7XG4gICAgYXNzZXJ0LnRocm93KFxuICAgICAgKCkgPT4gRGF0ZVR5cGUubWluKG5ldyBEYXRlKDUwKSkobnVsbCBhcyBhbnkpLFxuICAgICAgVmFsaWRhdGlvbkVycm9yLFxuICAgICk7XG4gICAgYXNzZXJ0LnRocm93KFxuICAgICAgKCkgPT4gRGF0ZVR5cGUubWluKG5ldyBEYXRlKDUwKSwgJ3Rlc3QnKShuZXcgRGF0ZSgxKSksXG4gICAgICBWYWxpZGF0aW9uRXJyb3IsXG4gICAgICAndGVzdCcsXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJy5tYXgoKScsICgpID0+IHtcbiAgICBhc3NlcnQuZGVlcEVxdWFsKERhdGVUeXBlLm1heChuZXcgRGF0ZSg1MCkpKG5ldyBEYXRlKDUwKSksIG5ldyBEYXRlKDUwKSk7XG4gICAgYXNzZXJ0LmRlZXBFcXVhbChEYXRlVHlwZS5tYXgobmV3IERhdGUoNTApKShuZXcgRGF0ZSg0OSkpLCBuZXcgRGF0ZSg0OSkpO1xuXG4gICAgYXNzZXJ0LnRocm93KCgpID0+IERhdGVUeXBlLm1heChuZXcgRGF0ZSg1MCkpKG5ldyBEYXRlKDUxKSksIFJhbmdlRXJyb3IpO1xuICAgIGFzc2VydC50aHJvdyhcbiAgICAgICgpID0+IERhdGVUeXBlLm1heChuZXcgRGF0ZSg1MCkpKG51bGwgYXMgYW55KSxcbiAgICAgIFZhbGlkYXRpb25FcnJvcixcbiAgICApO1xuICAgIGFzc2VydC50aHJvdyhcbiAgICAgICgpID0+IERhdGVUeXBlLm1heChuZXcgRGF0ZSg1MCksICd0ZXN0JykobmV3IERhdGUoNTEpKSxcbiAgICAgIFZhbGlkYXRpb25FcnJvcixcbiAgICAgICd0ZXN0JyxcbiAgICApO1xuICB9KTtcblxuICBpdCgnLmd0ZSgpJywgKCkgPT4ge1xuICAgIGFzc2VydC5kZWVwRXF1YWwoRGF0ZVR5cGUuZ3RlKG5ldyBEYXRlKDUwKSkobmV3IERhdGUoNTApKSwgbmV3IERhdGUoNTApKTtcbiAgICBhc3NlcnQuZGVlcEVxdWFsKERhdGVUeXBlLmd0ZShuZXcgRGF0ZSg1MCkpKG5ldyBEYXRlKDUxKSksIG5ldyBEYXRlKDUxKSk7XG5cbiAgICBhc3NlcnQudGhyb3coKCkgPT4gRGF0ZVR5cGUuZ3RlKG5ldyBEYXRlKDUwKSkobmV3IERhdGUoNDkpKSwgUmFuZ2VFcnJvcik7XG4gIH0pO1xuXG4gIGl0KCcubHRlKCknLCAoKSA9PiB7XG4gICAgYXNzZXJ0LmRlZXBFcXVhbChEYXRlVHlwZS5sdGUobmV3IERhdGUoNTApKShuZXcgRGF0ZSg1MCkpLCBuZXcgRGF0ZSg1MCkpO1xuICAgIGFzc2VydC5kZWVwRXF1YWwoRGF0ZVR5cGUubHRlKG5ldyBEYXRlKDUwKSkobmV3IERhdGUoNDkpKSwgbmV3IERhdGUoNDkpKTtcblxuICAgIGFzc2VydC50aHJvdygoKSA9PiBEYXRlVHlwZS5sdGUobmV3IERhdGUoNTApKShuZXcgRGF0ZSg1MSkpLCBSYW5nZUVycm9yKTtcbiAgfSk7XG5cbiAgaXQoJy5ndCgpJywgKCkgPT4ge1xuICAgIGFzc2VydC5kZWVwRXF1YWwoRGF0ZVR5cGUuZ3QobmV3IERhdGUoNTApKShuZXcgRGF0ZSg1MSkpLCBuZXcgRGF0ZSg1MSkpO1xuXG4gICAgYXNzZXJ0LnRocm93KCgpID0+IERhdGVUeXBlLmd0KG5ldyBEYXRlKDUwKSkobmV3IERhdGUoNTApKSwgUmFuZ2VFcnJvcik7XG4gICAgYXNzZXJ0LnRocm93KCgpID0+IERhdGVUeXBlLmd0KG5ldyBEYXRlKDUwKSkobmV3IERhdGUoNDkpKSwgUmFuZ2VFcnJvcik7XG4gICAgYXNzZXJ0LnRocm93KFxuICAgICAgKCkgPT4gRGF0ZVR5cGUuZ3QobmV3IERhdGUoNTApLCAndGVzdCcpKG5ldyBEYXRlKDUwKSksXG4gICAgICBWYWxpZGF0aW9uRXJyb3IsXG4gICAgICAndGVzdCcsXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJy5sdCgpJywgKCkgPT4ge1xuICAgIGFzc2VydC5kZWVwRXF1YWwoRGF0ZVR5cGUubHQobmV3IERhdGUoNTApKShuZXcgRGF0ZSg0OSkpLCBuZXcgRGF0ZSg0OSkpO1xuXG4gICAgYXNzZXJ0LnRocm93KCgpID0+IERhdGVUeXBlLmx0KG5ldyBEYXRlKDUwKSkobmV3IERhdGUoNTApKSwgUmFuZ2VFcnJvcik7XG4gICAgYXNzZXJ0LnRocm93KCgpID0+IERhdGVUeXBlLmx0KG5ldyBEYXRlKDUwKSkobmV3IERhdGUoNTEpKSwgUmFuZ2VFcnJvcik7XG4gICAgYXNzZXJ0LnRocm93KFxuICAgICAgKCkgPT4gRGF0ZVR5cGUubHQobmV3IERhdGUoNTApLCAndGVzdCcpKG5ldyBEYXRlKDUwKSksXG4gICAgICBWYWxpZGF0aW9uRXJyb3IsXG4gICAgICAndGVzdCcsXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJy5iZXR3ZWVuKCknLCAoKSA9PiB7XG4gICAgYXNzZXJ0LmRlZXBFcXVhbChcbiAgICAgIERhdGVUeXBlLmJldHdlZW4obmV3IERhdGUoNTApLCBuZXcgRGF0ZSg1MikpKG5ldyBEYXRlKDUwKSksXG4gICAgICBuZXcgRGF0ZSg1MCksXG4gICAgKTtcbiAgICBhc3NlcnQuZGVlcEVxdWFsKFxuICAgICAgRGF0ZVR5cGUuYmV0d2VlbihuZXcgRGF0ZSg1MCksIG5ldyBEYXRlKDUyKSkobmV3IERhdGUoNTEpKSxcbiAgICAgIG5ldyBEYXRlKDUxKSxcbiAgICApO1xuICAgIGFzc2VydC5kZWVwRXF1YWwoXG4gICAgICBEYXRlVHlwZS5iZXR3ZWVuKG5ldyBEYXRlKDUwKSwgbmV3IERhdGUoNTIpKShuZXcgRGF0ZSg1MikpLFxuICAgICAgbmV3IERhdGUoNTIpLFxuICAgICk7XG5cbiAgICBhc3NlcnQudGhyb3coXG4gICAgICAoKSA9PiBEYXRlVHlwZS5iZXR3ZWVuKG5ldyBEYXRlKDUwKSwgbmV3IERhdGUoNTIpKShuZXcgRGF0ZSg0OSkpLFxuICAgICAgUmFuZ2VFcnJvcixcbiAgICApO1xuICAgIGFzc2VydC50aHJvdyhcbiAgICAgICgpID0+IERhdGVUeXBlLmJldHdlZW4obmV3IERhdGUoNTApLCBuZXcgRGF0ZSg1MikpKG5ldyBEYXRlKDUzKSksXG4gICAgICBSYW5nZUVycm9yLFxuICAgICk7XG4gICAgYXNzZXJ0LnRocm93KFxuICAgICAgKCkgPT4gRGF0ZVR5cGUuYmV0d2VlbihuZXcgRGF0ZSg1MCksIG5ldyBEYXRlKDUyKSwgJ3Rlc3QnKShuZXcgRGF0ZSg1MykpLFxuICAgICAgVmFsaWRhdGlvbkVycm9yLFxuICAgICAgJ3Rlc3QnLFxuICAgICk7XG4gIH0pO1xufSk7XG4iXX0=