UNPKG

redux-form-validators

Version:

Simple validations with redux-form / react-final-form

355 lines (272 loc) 9.69 kB
"use strict"; var _assert = _interopRequireDefault(require("assert")); var _index = _interopRequireWildcard(require("../index")); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } function test(func, options) { // eslint-disable-next-line no-self-compare return options ? func(options) === func(Object.assign(options)) : func() === func(); } var fooValidator = (0, _index.addValidator)({ defaultMessage: { id: 'errors.foo', defaultMessage: 'Foo' }, validator: /* istanbul ignore next */ function validator(options, value) { return value === 'foo'; } }); describe('memoize', function () { it('should return the same function when the options are the same', function () { _assert["default"].ok(test(_index.absence)); _assert["default"].ok(test(_index.absence)); _assert["default"].ok(test(_index.absence, { msg: 'foobar' })); _assert["default"].ok(test(_index.absence, { message: { id: 'errors.test' } })); _assert["default"].ok(test(_index.absence, { message: { id: 'errors.test', defaultMessage: 'Test' } })); _assert["default"].ok(test(_index.absence, { "if": /* istanbul ignore next */ function _if(value, values) { return values.name !== ''; } })); _assert["default"].ok(test(_index.absence, { unless: /* istanbul ignore next */ function unless(value, values) { return values.name !== ''; } })); _assert["default"].ok(test(_index.acceptance)); _assert["default"].ok(test(_index.acceptance, { accept: '1' })); _assert["default"].ok(test(_index.confirmation, { caseSensitive: false, field: 'foo' })); _assert["default"].ok(test(_index.date, { format: 'mm/dd/yyyy', '<': 'today' })); _assert["default"].ok(test(_index.date, { format: 'jj/mm/aaaa', ymd: 'amj', '<=': new Date() })); _assert["default"].ok(test(_index.date, { format: 'jj/mm/aaaa', ymd: 'amj', '<=': /* istanbul ignore next */ function _() { return new Date(); } })); // eslint-disable-next-line no-new-func _assert["default"].ok(test(_index.date, { format: 'jj/mm/aaaa', ymd: 'amj', '<=': new Function('return new Date()') })); _assert["default"].ok(test(_index.email)); _assert["default"].ok(test(_index.email, { allowBlank: true })); _assert["default"].ok(test(_index.exclusion, { within: ['foo'], caseSensitive: true })); _assert["default"].ok(test(_index.exclusion, { "in": 'foo' })); _assert["default"].ok(test(_index.file)); _assert["default"].ok(test(_index.file, { accept: '.png' })); _assert["default"].ok(test(_index.format, { without: /\w+/ })); _assert["default"].ok(test(_index.format, { "with": new RegExp('\\w+') })); _assert["default"].ok(test(_index.inclusion, { within: ['foo'], caseSensitive: true })); _assert["default"].ok(test(_index.inclusion, { "in": 'foo' })); _assert["default"].ok(test(_index.length, { min: 7, max: 8 })); _assert["default"].ok(test(_index.length, { "in": [6, 8] })); _assert["default"].ok(test(_index.length, { '=': 0 })); _assert["default"].ok(test(_index.numericality)); _assert["default"].ok(test(_index.numericality, { "int": true })); _assert["default"].ok(test(_index.numericality, { equalTo: '12.34' })); _assert["default"].ok(test(_index.numericality, { '>=': 0, even: true })); _assert["default"].ok(test(_index.presence)); _assert["default"].ok(test(_index.url)); _assert["default"].ok(test(_index.url, { protocol: 'http' })); // eslint-disable-next-line no-array-constructor _assert["default"].ok(test(_index.url, { protocol: new Array('http', 'https') })); _assert["default"].ok(test(fooValidator)); _assert["default"].ok(test(fooValidator, { allowBlank: true })); _assert["default"].ok(test(fooValidator, { msg: 'Test' })); _assert["default"].ok(test(fooValidator, { "if": /* istanbul ignore next */ function _if(value, values) { return false; } })); _assert["default"].strictEqual((0, _index.combine)((0, _index.presence)(), (0, _index.email)()), (0, _index.combine)((0, _index.presence)(), (0, _index.email)())); _assert["default"].strictEqual((0, _index.combine)((0, _index.presence)(), (0, _index.email)()), (0, _index.combine)((0, _index.presence)({}), (0, _index.email)({}))); _assert["default"].strictEqual((0, _index.combine)((0, _index.presence)(), (0, _index.email)()), (0, _index.combine)((0, _index.email)(), (0, _index.presence)())); _assert["default"].strictEqual((0, _index.combine)((0, _index.length)({ min: 2 }), (0, _index.email)(), (0, _index.format)({ without: /z/ })), (0, _index.combine)((0, _index.email)(), (0, _index.length)({ min: 2 }), (0, _index.format)({ without: /z/ }))); }); it('should return the same function when memoize is true', function () { _assert["default"].ok(test(_index.absence, { memoize: true })); var defaultValue = _index["default"].defaultOptions.memoize; _index["default"].defaultOptions.memoize = false; _assert["default"].ok(test(_index.absence, { memoize: true })); _index["default"].defaultOptions.memoize = defaultValue; }); it("shouldn't return the same function when memoize is false", function () { _assert["default"].ok(!test(_index.absence, { memoize: false })); var defaultValue = _index["default"].defaultOptions.memoize; _index["default"].defaultOptions.memoize = false; _assert["default"].ok(!test(_index.absence)); _assert["default"].ok(!test(_index.absence, { memoize: false })); // eslint-disable-next-line no-self-compare _assert["default"].ok((0, _index.combine)((0, _index.presence)(), (0, _index.email)()) !== (0, _index.combine)((0, _index.presence)(), (0, _index.email)())); _assert["default"].ok((0, _index.combine)((0, _index.presence)(), (0, _index.email)()) !== (0, _index.combine)((0, _index.presence)({}), (0, _index.email)({}))); _assert["default"].ok((0, _index.combine)((0, _index.presence)(), (0, _index.email)()) !== (0, _index.combine)((0, _index.email)(), (0, _index.presence)())); _index["default"].defaultOptions.memoize = defaultValue; }); it('should use the memoize function', function () { var key = ''; var memoize = function memoize(options) { return key = 'memoKey'; }; _assert["default"].ok(test(_index.absence, { memoize: memoize })); _assert["default"].strictEqual(key, 'memoKey'); _assert["default"].ok((0, _index.absence)({ memoize: function memoize() { return 'memo1'; } }) !== (0, _index.absence)({ memoize: function memoize() { return 'memo2'; } })); _assert["default"].ok((0, _index.length)({ min: 2, memoize: function memoize() { return 'memo'; } }) === (0, _index.length)({ memoize: function memoize() { return 'memo'; } })); var defaultValue = _index["default"].defaultOptions.memoize; _index["default"].defaultOptions.memoize = false; memoize = function memoize() { return key = 'memo'; }; _assert["default"].ok(test(_index.absence, { memoize: memoize })); _index["default"].defaultOptions.memoize = defaultValue; }); it('should use the general memoize function', function () { var defaultValue = _index["default"].defaultOptions.memoize; var key = ''; _index["default"].defaultOptions.memoize = function () { return key = 'memoKey'; }; _assert["default"].ok(test(_index.absence)); _assert["default"].strictEqual(key, 'memoKey'); _assert["default"].ok((0, _index.length)({ min: 2 }) === (0, _index.length)({ max: 4 })); _index["default"].defaultOptions.memoize = function (opts, $super) { return $super(opts); }; _assert["default"].ok(test(_index.absence)); _assert["default"].ok(test(_index.absence, { memoize: function memoize(opts, $super) { return $super(opts); } })); _index["default"].defaultOptions.memoize = defaultValue; }); it("shouldn't use the general memoize function", function () { var defaultValue = _index["default"].defaultOptions.memoize; var key = ''; /* istanbul ignore next */ _index["default"].defaultOptions.memoize = function () { return key = 'memoKey1'; }; var memoize = function memoize() { return key = 'memoKey2'; }; _assert["default"].ok(test(_index.absence, { memoize: memoize })); _assert["default"].strictEqual(key, 'memoKey2'); _index["default"].defaultOptions.memoize = defaultValue; }); });