UNPKG

redux-form-validators

Version:

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

48 lines (39 loc) 1.79 kB
import assert from 'assert' import Validators, { exclusion } from '../index' import getErrorId from './helper' const ERROR_ID = 'form.errors.exclusion' function test (value, params) { return getErrorId(exclusion(params)(value)) } describe('Validator: exclusion', function () { it('should be invalid when `value` is in the list', function () { assert.strictEqual(ERROR_ID, test(1, { in: [9, 8, '1'] })) assert.strictEqual(ERROR_ID, test('1', { in: [9, 8, 1] })) assert.strictEqual(ERROR_ID, test('foo', { within: 'foo' })) assert.strictEqual(ERROR_ID, test('foo', { within: ['foo'], caseSensitive: true })) assert.strictEqual(ERROR_ID, test('FOO', { within: ['foo'], caseSensitive: false })) }) it('should be valid when `value` is not in the list', function () { assert.ok(!test(1, { in: [] })) assert.ok(!test('1', { in: [2, 3, 4] })) assert.ok(!test('foo', { within: 'foobar' })) assert.ok(!test('foo', { within: ['FOO'], caseSensitive: true })) assert.ok(!test('FOO', { within: ['bar'], caseSensitive: false })) }) it('should use default caseSensitive option', function () { let defaultValue = Validators.defaultOptions.caseSensitive Validators.defaultOptions.caseSensitive = true assert.ok(!test('foo', { within: 'FOO' })) Validators.defaultOptions.caseSensitive = false assert.ok(!test('foo', { within: 'fooo' })) Validators.defaultOptions.caseSensitive = defaultValue }) it('should use formatMessage', function () { let defaultValue = Validators.formatMessage Validators.formatMessage = function (msg) { return Object.assign({}, msg, { id: msg.id + '2' }) } assert.strictEqual(ERROR_ID + '2', test('foo', { within: 'foo' })) Validators.formatMessage = defaultValue }) })