annotated-prop-types
Version:
Add extra info to your React PropTypes.
55 lines (50 loc) • 1.72 kB
JavaScript
const test = require('tape');
const PropTypes = require('prop-types');
const OriginalPropTypes = PropTypes;
const annotatedPropTypes = require('./index');
test('overwrites Reacts PropTypes', function(t) {
t.equal(PropTypes, annotatedPropTypes);
t.end();
});
test('provides type information for basic types', function(t) {
const basicTypes = [
'array',
'bool',
'func',
'number',
'object',
'string',
'symbol',
'element',
'node',
'any',
];
basicTypes.forEach(function(type) {
t.equal(PropTypes[type].typeName, type, type + " provides typeName");
t.equal(PropTypes[type].typeRequired, false, type + " typeRequired false");
t.equal(PropTypes[type].isRequired.typeName, type, type + ".isRequired provides typeName");
t.equal(PropTypes[type].isRequired.typeRequired, true, type + ".isRequired typeRequired true");
});
t.end();
});
test('provides type information for of types', function(t) {
const ofTypes = [
'arrayOf',
'instanceOf',
'objectOf',
'oneOf',
'oneOfType',
'shape',
];
const typeChecker = ['yep'];
ofTypes.forEach(function(type) {
const propType = PropTypes[type](typeChecker);
t.equal(propType.typeName, type, type + " provides typeName");
t.equal(propType.typeRequired, false, type + " typeRequired false");
t.equal(propType.typeChecker, typeChecker, type + " provides typeChecker");
t.equal(propType.isRequired.typeName, type, type + ".isRequired provides typeName");
t.equal(propType.isRequired.typeRequired, true, type + ".isRequired typeRequired true");
t.equal(propType.isRequired.typeChecker, typeChecker, type + ".isRequired provides typeChecker");
});
t.end();
});