import { expect } from 'chai'; import React from 'react'; import { stringEndsWith } from '..'; import callValidator from './_callValidator'; describe('stringEndsWith', () => { it('returns a function', () => { expect(typeof stringEndsWith(' ')).to.equal('function'); }); it('throws when given a non-string', () => { expect(() => stringEndsWith()).to.throw(TypeError); expect(() => stringEndsWith(null)).to.throw(TypeError); expect(() => stringEndsWith(true)).to.throw(TypeError); expect(() => stringEndsWith(false)).to.throw(TypeError); expect(() => stringEndsWith({})).to.throw(TypeError); expect(() => stringEndsWith([])).to.throw(TypeError); }); it('throws when given an empty string', () => { expect(() => stringEndsWith('')).to.throw(TypeError); }); function assertPasses(validator, element, propName) { expect(callValidator(validator, element, propName, '"stringEndsWith" test')).to.equal(null); } function assertFails(validator, element, propName) { expect(callValidator(validator, element, propName, '"stringEndsWith" test')).to.be.instanceOf(Error); } it('behaves when absent', () => { const validator = stringEndsWith('.png'); assertPasses(validator, (
), 'a'); assertFails(validator.isRequired, (), 'a'); }); it('fails when not a string', () => { const validator = stringEndsWith('.png'); assertFails(validator, (), 'a'); assertFails(validator, (), 'a'); assertFails(validator, (), 'a'); assertFails(validator, (), 'a'); assertFails(validator, (), 'a'); assertFails(validator, (