UNPKG

@root-systems/redux-form-validators

Version:
103 lines (81 loc) 4.15 kB
'use strict'; var _assert = require('assert'); var _assert2 = _interopRequireDefault(_assert); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _reactIntl = require('react-intl'); var _index = require('../index'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function test(func, options) { return options ? func(options) === func(Object.assign(options)) : func() === func(); } var fooValidator = (0, _index.addValidator)({ defaultMessage: _react2.default.createElement(_reactIntl.FormattedMessage, { 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 () { _assert2.default.ok(test(_index.absence)); _assert2.default.ok(test(_index.absence)); _assert2.default.ok(test(_index.absence, { msg: 'foobar' })); _assert2.default.ok(test(_index.absence, { msg: _react2.default.createElement(_reactIntl.FormattedMessage, { id: 'errors.test', defaultMessage: 'Test' }) })); _assert2.default.ok(test(_index.absence, { message: { id: 'errors.test' } })); _assert2.default.ok(test(_index.absence, { message: { id: 'errors.test', defaultMessage: 'Test' } })); _assert2.default.ok(test(_index.absence, { if: /* istanbul ignore next */ function _if(value, values) { return '' !== values.name; } })); _assert2.default.ok(test(_index.absence, { unless: /* istanbul ignore next */ function unless(value, values) { return '' !== values.name; } })); _assert2.default.ok(test(_index.acceptance)); _assert2.default.ok(test(_index.acceptance, { accept: '1' })); _assert2.default.ok(test(_index.confirmation, { caseSensitive: false, field: 'foo' })); _assert2.default.ok(test(_index.date, { format: 'mm/dd/yyyy', '<': 'today' })); _assert2.default.ok(test(_index.date, { format: 'jj/mm/aaaa', ymd: 'amj', '<=': new Date() })); _assert2.default.ok(test(_index.date, { format: 'jj/mm/aaaa', ymd: 'amj', '<=': /* istanbul ignore next */ function _() { return new Date(); } })); _assert2.default.ok(test(_index.date, { format: 'jj/mm/aaaa', ymd: 'amj', '<=': new Function('return new Date()') })); _assert2.default.ok(test(_index.email)); _assert2.default.ok(test(_index.email, { allowBlank: true })); _assert2.default.ok(test(_index.exclusion, { within: ['foo'], caseSensitive: true })); _assert2.default.ok(test(_index.exclusion, { in: 'foo' })); _assert2.default.ok(test(_index.format, { without: /\w+/ })); _assert2.default.ok(test(_index.format, { with: new RegExp('\\w+') })); _assert2.default.ok(test(_index.inclusion, { within: ['foo'], caseSensitive: true })); _assert2.default.ok(test(_index.inclusion, { in: 'foo' })); _assert2.default.ok(test(_index.length, { min: 7, max: 8 })); _assert2.default.ok(test(_index.length, { in: [6, 8] })); _assert2.default.ok(test(_index.length, { '=': 0 })); _assert2.default.ok(test(_index.numericality)); _assert2.default.ok(test(_index.numericality, { int: true })); _assert2.default.ok(test(_index.numericality, { 'equalTo': '12.34' })); _assert2.default.ok(test(_index.numericality, { '>=': 0, even: true })); _assert2.default.ok(test(_index.presence)); _assert2.default.ok(test(_index.url)); _assert2.default.ok(test(_index.url, { protocol: 'http' })); _assert2.default.ok(test(_index.url, { protocol: new Array('http', 'https') })); _assert2.default.ok(test(fooValidator)); _assert2.default.ok(test(fooValidator, { allowBlank: true })); _assert2.default.ok(test(fooValidator, { msg: _react2.default.createElement(_reactIntl.FormattedMessage, { id: 'errors.test', defaultMessage: 'Test' }) })); _assert2.default.ok(test(fooValidator, { if: /* istanbul ignore next */ function _if(value, values) { return false; } })); }); });