import { expect } from 'chai'; import React from 'react'; import { explicitNull } from '..'; import callValidator from './_callValidator'; describe('explicitNull', () => { it('returns a function', () => { expect(typeof explicitNull()).to.equal('function'); }); function assertPasses(validator, element, propName) { expect(callValidator(validator, element, propName, '"explicitNull" test')).to.equal(null); } function assertFails(validator, element, propName) { expect(callValidator(validator, element, propName, '"explicitNull" test')).to.be.instanceOf(Error); } it('passes on null/undefined/missing', () => { const validator = explicitNull(); assertPasses(validator, (
), 'foo'); assertPasses(validator.isRequired, (
), 'foo'); assertPasses(validator, (
), 'foo'); assertPasses(validator, (
), 'foo'); }); it('fails on undefined/missing when required', () => { const validator = explicitNull(); assertFails(validator.isRequired,
, 'foo'); assertFails(validator.isRequired,
, 'foo'); }); it('fails on any other value', () => { assertFails(explicitNull(), (
), 'foo'); assertFails(explicitNull(), (
), 'foo'); assertFails(explicitNull(), (
), 'foo'); assertFails(explicitNull(), (
), 'foo'); assertFails(explicitNull(), (
), 'foo'); assertFails(explicitNull(), (
), 'foo'); assertFails(explicitNull(), (
{}} />), 'foo'); assertFails(explicitNull(), (
), 'foo'); }); it('fails on any other value when required', () => { assertFails(explicitNull().isRequired, (
), 'foo'); assertFails(explicitNull().isRequired, (
), 'foo'); assertFails(explicitNull().isRequired, (
), 'foo'); assertFails(explicitNull().isRequired, (
), 'foo'); assertFails(explicitNull().isRequired, (
), 'foo'); assertFails(explicitNull().isRequired, (
), 'foo'); assertFails(explicitNull().isRequired, (
{}} />), 'foo'); assertFails(explicitNull().isRequired, (
), 'foo'); }); });