widgets icon indicating copy to clipboard operation
widgets copied to clipboard

Add helper method for easier testing of child render functions

Open samends opened this issue 4 years ago • 0 comments

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);
	});

samends avatar Nov 18 '20 23:11 samends