import { expect } from 'chai'; import React from 'react'; import { numericString } from '..'; import callValidator from './_callValidator'; describe('numericString', () => { it('returns a function', () => { expect(typeof numericString()).to.equal('function'); }); function assertPasses(validator, element, propName) { expect(callValidator(validator, element, propName, '"numericString" test')).to.equal(null); } function assertFails(validator, element, propName) { expect(callValidator(validator, element, propName, '"numericString" test')).to.be.instanceOf(Error); } it('behaves when absent', () => { const validator = numericString(); assertPasses(validator, (
), 'a'); assertFails(validator.isRequired, (
), 'a'); }); it('fails when not a string', () => { assertFails(numericString(), (
), 'a'); assertFails(numericString(), (
), 'a'); assertFails(numericString(), (
), 'a'); assertFails(numericString(), (
), 'a'); assertFails(numericString(), (
), 'a'); assertFails(numericString(), (
{}} />), 'a'); }); it('passes on the zeroes', () => { const validator = numericString(); assertPasses(validator, (
), 'a'); assertPasses(validator.isRequired, (
), 'a'); assertPasses(validator, (
), 'a'); assertPasses(validator.isRequired, (
), 'a'); assertPasses(validator, (
), 'a'); assertPasses(validator.isRequired, (
), 'a'); }); it('passes when a numeric string', () => { assertPasses(numericString(), (
), 'a'); assertPasses(numericString(), (
), 'a'); assertPasses(numericString(), (
), 'a'); assertPasses(numericString(), (
), 'a'); assertPasses(numericString(), (
), 'a'); assertPasses(numericString(), (
), 'a'); assertPasses(numericString(), (
), 'a'); assertPasses(numericString(), (
), 'a'); assertPasses(numericString(), (
), 'a'); }); it('fails when not a numeric string', () => { assertFails(numericString(), (
), 'a'); assertFails(numericString(), (
), 'a'); assertFails(numericString(), (
), 'a'); }); it('fails on edge cases', () => { const validator = numericString(); assertFails(validator, (
), 'a'); assertFails(validator, (
), 'a'); assertFails(validator, (
), 'a'); assertFails(validator, (
), 'a'); assertFails(validator, (
), 'a'); assertFails(validator, (
), 'a'); }); it('fails on edge cases when required', () => { const validator = numericString().isRequired; assertFails(validator, (
), 'a'); assertFails(validator, (
), 'a'); assertFails(validator, (
), 'a'); assertFails(validator, (
), 'a'); assertFails(validator, (
), 'a'); assertFails(validator, (
), 'a'); }); });