@root-systems/redux-form-validators
Version:
Simple validations with redux-form
103 lines (81 loc) • 4.15 kB
JavaScript
'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;
}
}));
});
});