2018-10-06 23:42:52 +02:00
|
|
|
// @flow
|
|
|
|
|
import * as React from 'react';
|
|
|
|
|
import TestRenderer from 'react-test-renderer'; // eslint-disable-line import/no-extraneous-dependencies
|
2018-10-07 10:59:27 +02:00
|
|
|
import { getByAPI } from './helpers/getByAPI';
|
|
|
|
|
import { queryByAPI } from './helpers/queryByAPI';
|
2018-10-06 23:42:52 +02:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Renders test component deeply using react-test-renderer and exposes helpers
|
|
|
|
|
* to assert on the output.
|
|
|
|
|
*/
|
|
|
|
|
export default function render(
|
|
|
|
|
component: React.Element<*>,
|
|
|
|
|
options?: { createNodeMock: (element: React.Element<*>) => any }
|
|
|
|
|
) {
|
|
|
|
|
const renderer = TestRenderer.create(component, options);
|
|
|
|
|
const instance = renderer.root;
|
|
|
|
|
|
|
|
|
|
return {
|
2018-10-07 10:59:27 +02:00
|
|
|
...getByAPI(instance),
|
|
|
|
|
...queryByAPI(instance),
|
2018-10-06 23:42:52 +02:00
|
|
|
update: renderer.update,
|
|
|
|
|
unmount: renderer.unmount,
|
2018-10-16 18:00:54 +02:00
|
|
|
toJSON: renderer.toJSON,
|
2018-10-06 23:42:52 +02:00
|
|
|
};
|
|
|
|
|
}
|