widgets
widgets copied to clipboard
Add helper method for easier testing of child render functions
Enhancement
Suggestion to create a mock function that would allow for easier testing of widgets that have child render functions. For instance the form widget could have a mock function as follows:
export function createMockFormMiddleware(fields: {
[key: string]: { value?: string; valid?: boolean };
}) {
return {
valid: () =>
Object.keys(fields).reduce((valid, key) => {
return (
valid &&
(fields[key].valid !== undefined
? (fields[key].valid as boolean)
: true)
);
}, true),
field: (key: string) => {
return {
value: () => fields[key].value || '',
valid: () => fields[key].valid || true
};
}
};
}
It could then be used to easily set up the form child function' parameters
it('default renders correctly', () => {
const r = renderer(() => <Login />);
r.child(
WrappedForm,
createMockFormMiddleware({
username: { valid: true, value: '' },
password: { valid: true, value: '' }
})
);
r.expect(baseAssertion);
});