UNPKG

materialuiupgraded

Version:

Material-UI's workspace package

89 lines (72 loc) 2.99 kB
import { assert } from 'chai'; import requirePropFactory from './requirePropFactory'; describe('requirePropFactory', () => { const componentNameInError = 'componentNameInError'; let requireProp; before(() => { requireProp = requirePropFactory(componentNameInError); }); it('should have the right shape', () => { assert.strictEqual(typeof requirePropFactory, 'function'); assert.strictEqual(typeof requireProp, 'function'); }); describe('requireProp()', () => { const requiredPropName = 'requiredPropName'; let requirePropValidator; before(() => { requirePropValidator = requireProp(requiredPropName); }); it('should return a function', () => { assert.strictEqual(typeof requirePropValidator, 'function'); }); describe('requirePropValidator', () => { let props; let propName; it('should return null for propName not in props', () => { propName = 'propName'; props = {}; const result = requirePropValidator(props, propName, undefined, undefined, undefined); assert.strictEqual(result, null); }); it('should return null for propName and requiredProp in props', () => { propName = 'propName'; props = {}; props[propName] = true; props[requiredPropName] = true; const result = requirePropValidator(props, propName, undefined, undefined, undefined); assert.strictEqual(result, null); }); describe('propName is in props and requiredProp not in props', () => { let result; before(() => { props = {}; propName = 'propName'; props[propName] = true; delete props[requiredPropName]; result = requirePropValidator(props, propName, undefined, undefined, undefined); }); it('should return Error', () => { assert.property(result, 'name'); assert.strictEqual(result.name, 'Error'); assert.property(result, 'message'); assert.strictEqual(result.message.indexOf(propName) > -1, true); assert.strictEqual(result.message.indexOf(requiredPropName) > -1, true); assert.strictEqual(result.message.indexOf(componentNameInError) > -1, true); }); describe('propFullName given to validator', () => { let propFullName; before(() => { propFullName = 'propFullName'; result = requirePropValidator(props, propName, undefined, undefined, propFullName); }); it('returned error message should have propFullName', () => { assert.strictEqual(result.message.indexOf(propFullName) > -1, true); }); it('returned error message should not have propName', () => { assert.strictEqual(result.message.indexOf(propName), -1); }); }); }); }); }); });