React-Rosie takes the power of RosieJs and adds some specific upgrades for React. The upgrades allow you to quickly generate Factories from your component's PropTypes.
// factories/user.js
import { dateString, dateStringGenerator } from 'utils/PropTypes';
import Factory from 'react-rosie';
export default new Factory()
.validator(dateString, dateStringGenerator)
.props({
date: dateString.isRequired,
username: React.PropTypes.string.isRequired,
displayName: React.PropTypes.string
});
validator
and props
are both new methods added onto Rosie's Factory class.
- Any
- Array
- Bool
- Func
- Node
- Number
- Object
- String
- ArrayOf
- InstanceOf
- ObjectOf
- OneOf
- OneOfType
- Shape
React-Rosie needs your React instance so it can decode and apply generators for each of Reacts standard PropTypes. This function needs to be called before part of your code uses React PropTypes. We recommend that you do this first thing in your test setup.
The validatorFn
should be the same function that is passed in as your components custom
PropType validator.
note: you must register your custom validator before passing it to the props
method.
React-Rosie will match up React's standard PropTypes with a generator and automatically setup your factory.
If the prop isRequired
then that property will be set as an
attribute that will always be included in the
factory unless overridden.
If the prop is not required then it'll be an optional property. Optional properties will be undefined
unless explicitly included by passing the option of _PROPNAME: true
.
Options use a nested format that can be as deep or as shallow as you'd like. Options can be used to control things like likely-hood of array length.
-
weight - key of length, value of decimal percentage of likely-hood
EXAMPLE:
{ 0: .3, 1: .4, 2: .1, 3: .1, 4: .1 }
- stub - function you'd like to have ran
- min - Min (inclusive) of the random value range
- max - Max (exclusive) of the random value range
- stringLength - length of string
-
weight - key of length, value of decimal percentage of likely-hood
EXAMPLE:
{ 0: .3, 1: .4, 2: .1, 3: .1, 4: .1 }
- args - Arguments passed to the constructor
- keys - <Array > Keys of the object
- opts - Options of the type
-
-
- another full Options object for the nested shape
-
import User from './factories/user';
// with displayName
const user1 = User.build({}, { _displayName: true });
// without displayName
const user2 = User.build();