in modules/test-utils/src/generate-layer-tests.js [115:186]
function makeAltPropTestCase({propName, propTypes, defaultProps, sampleProps, assert}) {
const newProps = {...sampleProps};
const propDef = propTypes[propName];
if (!propDef) {
return null;
}
switch (propDef.type) {
case 'boolean':
newProps[propName] = !defaultProps[propName];
return [
{
title: `${propName}: ${String(newProps[propName])}`,
props: newProps
}
];
case 'number':
if ('max' in propDef) {
newProps[propName] = propDef.max;
} else if ('min' in propDef) {
newProps[propName] = propDef.min;
} else {
newProps[propName] = defaultProps[propName] + 1;
}
return [
{
title: `${propName}: ${String(newProps[propName])}`,
props: newProps
}
];
case 'accessor': {
if (typeof defaultProps[propName] === 'function') {
return null;
}
let callCount = 0;
newProps[propName] = () => {
callCount++;
return defaultProps[propName];
};
newProps.updateTriggers = {
[propName]: 'function'
};
const onBeforeUpdate = () => (callCount = 0);
const onAfterUpdate = () => assert(callCount > 0, 'accessor function is called');
return [
{
title: `${propName}: () => ${defaultProps[propName]}`,
props: newProps,
onBeforeUpdate,
onAfterUpdate
},
{
title: `${propName}: updateTrigger`,
updateProps: {
updateTriggers: {
[propName]: 'function+trigger'
}
},
onBeforeUpdate,
onAfterUpdate
}
];
}
default:
return null;
}
}