@root-systems/redux-form-validators
Version:
Simple validations with redux-form
151 lines (146 loc) • 7.76 kB
JavaScript
import assert from 'assert'
import { numericality } from '../index'
import getErrorId from './helper'
const ERROR_NOT_A_NUMBER_ID = 'form.errors.notANumber'
const ERROR_EQUAL_TO_ID = 'form.errors.equalTo'
const ERROR_OTHER_THAN_ID = 'form.errors.otherThan'
const ERROR_GREATER_THAN_ID = 'form.errors.greaterThan'
const ERROR_GREATER_THAN_OR_EQ_ID = 'form.errors.greaterThanOrEqualTo'
const ERROR_LESS_THAN_ID = 'form.errors.lessThan'
const ERROR_LESS_THAN_OR_EQ_ID = 'form.errors.lessThanOrEqualTo'
const ERROR_EVEN_ID = 'form.errors.even'
const ERROR_ODD_ID = 'form.errors.odd'
function test (value, params) {
return getErrorId(numericality(params)(value))
}
describe('Validator: numericality', function () {
it('should be invalid when `value` is not a number', function() {
assert.equal(ERROR_NOT_A_NUMBER_ID, test(''))
assert.equal(ERROR_NOT_A_NUMBER_ID, test(null))
assert.equal(ERROR_NOT_A_NUMBER_ID, test('foobar'))
assert.equal(ERROR_NOT_A_NUMBER_ID, test('12foobar'))
assert.equal(ERROR_NOT_A_NUMBER_ID, test('foobar12'))
})
it('should be invalid when `value` is not a integer', function() {
assert.equal(ERROR_NOT_A_NUMBER_ID, test('', { int: true }))
assert.equal(ERROR_NOT_A_NUMBER_ID, test('foobar', { int: true }))
assert.equal(ERROR_NOT_A_NUMBER_ID, test('12.345', { int: true }))
assert.equal(ERROR_NOT_A_NUMBER_ID, test('0.01', { integer: true }))
})
it('should be invalid when `value` is not = to equalTo', function() {
assert.equal(ERROR_EQUAL_TO_ID, test(1, { '=': 0 }))
assert.equal(ERROR_EQUAL_TO_ID, test('1', { '=': 0 }))
assert.equal(ERROR_EQUAL_TO_ID, test('18', { '=': 12 }))
assert.equal(ERROR_EQUAL_TO_ID, test('12.345', { '=': 12.34 }))
assert.equal(ERROR_EQUAL_TO_ID, test('0.01', { 'equalTo': '12.34' }))
})
it('should be invalid when `value` is = to otherThan', function() {
assert.equal(ERROR_OTHER_THAN_ID, test(1, { '!=': 1 }))
assert.equal(ERROR_OTHER_THAN_ID, test('1', { '!=': 1 }))
assert.equal(ERROR_OTHER_THAN_ID, test('18', { '!=': 18 }))
assert.equal(ERROR_OTHER_THAN_ID, test('12.345', { '!=': 12.345 }))
assert.equal(ERROR_OTHER_THAN_ID, test('0.01', { 'otherThan': '0.01' }))
})
it('should be invalid when `value` is not > to greaterThan', function() {
assert.equal(ERROR_GREATER_THAN_ID, test(-1, { '>': 0 }))
assert.equal(ERROR_GREATER_THAN_ID, test('0', { '>': 0 }))
assert.equal(ERROR_GREATER_THAN_ID, test('12', { '>': 12 }))
assert.equal(ERROR_GREATER_THAN_ID, test('12.34', { '>': 12.34 }))
assert.equal(ERROR_GREATER_THAN_ID, test('11.34', { 'greaterThan': '12.34' }))
})
it('should be invalid when `value` is not >= to greaterThanOrEqualTo', function() {
assert.equal(ERROR_GREATER_THAN_OR_EQ_ID, test(-1, { '>=': 0 }))
assert.equal(ERROR_GREATER_THAN_OR_EQ_ID, test('-0.01', { '>=': 0 }))
assert.equal(ERROR_GREATER_THAN_OR_EQ_ID, test('11.9', { '>=': 12 }))
assert.equal(ERROR_GREATER_THAN_OR_EQ_ID, test('12.339', { '>=': 12.34 }))
assert.equal(ERROR_GREATER_THAN_OR_EQ_ID, test('12.339', { 'greaterThanOrEqualTo': '12.34' }))
})
it('should be invalid when `value` is not < to lessThan', function() {
assert.equal(ERROR_LESS_THAN_ID, test(1, { '<': 0 }))
assert.equal(ERROR_LESS_THAN_ID, test('0', { '<': 0 }))
assert.equal(ERROR_LESS_THAN_ID, test('12', { '<': 12 }))
assert.equal(ERROR_LESS_THAN_ID, test('12.34', { '<': 12.34 }))
assert.equal(ERROR_LESS_THAN_ID, test('13.34', { 'lessThan': '12.34' }))
})
it('should be invalid when `value` is not <= to lessThanOrEqualTo', function() {
assert.equal(ERROR_LESS_THAN_OR_EQ_ID, test(1, { '<=': 0 }))
assert.equal(ERROR_LESS_THAN_OR_EQ_ID, test('0.01', { '<=': 0 }))
assert.equal(ERROR_LESS_THAN_OR_EQ_ID, test('12.1', { '<=': 12 }))
assert.equal(ERROR_LESS_THAN_OR_EQ_ID, test('12.341', { '<=': 12.34 }))
assert.equal(ERROR_LESS_THAN_OR_EQ_ID, test('13.34', { 'lessThanOrEqualTo': '12.34' }))
})
it('should be invalid when `value` is not even', function() {
assert.equal(ERROR_EVEN_ID, test('1', { even: true }))
assert.equal(ERROR_EVEN_ID, test('3', { even: true }))
assert.equal(ERROR_EVEN_ID, test('-1', { even: true }))
assert.equal(ERROR_EVEN_ID, test('15.9', { even: true }))
})
it('should be invalid when `value` is not odd', function() {
assert.equal(ERROR_ODD_ID, test('2', { odd: true }))
assert.equal(ERROR_ODD_ID, test('4', { odd: true }))
assert.equal(ERROR_ODD_ID, test('-2', { odd: true }))
assert.equal(ERROR_ODD_ID, test('14.9', { odd: true }))
})
it('should be valid when `value` is a number', function() {
assert.ok(!test(0))
assert.ok(!test(1))
assert.ok(!test('12'))
assert.ok(!test('12.34'))
})
it('should be valid when `value` is an integer', function() {
assert.ok(!test(1, { int: true }))
assert.ok(!test('1', { int: true }))
assert.ok(!test('12', { int: true }))
assert.ok(!test('-3', { integer: true }))
})
it('should be valid when `value` is = to equalTo', function() {
assert.ok(!test(1, { '=': 1 }))
assert.ok(!test('1', { '=': 1 }))
assert.ok(!test('12.345', { '=': 12.345 }))
assert.ok(!test('0.01', { 'equalTo': 0.01 }))
})
it('should be invalid when `value` is != to otherThan', function() {
assert.ok(!test(1, { '!=': 0 }))
assert.ok(!test('1', { '!=': 0 }))
assert.ok(!test('18', { '!=': 12 }))
assert.ok(!test('12.345', { '!=': 12.34 }))
assert.ok(!test('0.01', { 'otherThan': '12.34' }))
})
it('should be valid when `value` is > to greaterThan', function() {
assert.ok(!test(0.01, { '>': 0 }))
assert.ok(!test('1', { '>': 0 }))
assert.ok(!test('12.1', { '>': 12 }))
assert.ok(!test('12.35', { 'greaterThan': 12.34 }))
})
it('should be valid when `value` is >= to greaterThanOrEqualTo', function() {
assert.ok(!test(0, { '>=': 0 }))
assert.ok(!test('0', { '>=': 0 }))
assert.ok(!test('12', { '>=': 12 }))
assert.ok(!test('12.34', { 'greaterThanOrEqualTo': 12.34 }))
})
it('should be valid when `value` is < to lessThan', function() {
assert.ok(!test(-1, { '<': 0 }))
assert.ok(!test('-0.1', { '<': 0 }))
assert.ok(!test('11', { '<': 12 }))
assert.ok(!test('12.33', { 'lessThan': 12.34 }))
})
it('should be valid when `value` is <= to lessThanOrEqualTo', function() {
assert.ok(!test(0, { '<=': 0 }))
assert.ok(!test('-0.01', { '<=': 0 }))
assert.ok(!test('11.9', { '<=': 12 }))
assert.ok(!test('12.34', { 'lessThanOrEqualTo': 12.34 }))
})
it('should be valid when `value` is even', function() {
assert.ok(!test('0', { even: true }))
assert.ok(!test('2', { even: true }))
assert.ok(!test('-2', { even: true }))
assert.ok(!test('2.3', { even: true }))
assert.ok(!test('-2.3', { even: true }))
})
it('should be valid when `value` is odd', function() {
assert.ok(!test('1', { odd: true }))
assert.ok(!test('-1', { odd: true }))
assert.ok(!test('1.2', { odd: true }))
assert.ok(!test('-1.2', { odd: true }))
})
})