redux-form-validators
Version:
Simple validations with redux-form / react-final-form
355 lines (272 loc) • 9.69 kB
JavaScript
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;
});
});
;