UNPKG

1.44 kBJavaScriptView Raw
1import Color from 'color';
2import React, {Component} from 'react';
3import ReactDOM from 'react-dom';
4import ShallowRenderer from 'react-test-renderer/shallow';
5import TestUtils from 'react-dom/test-utils';
6
7export function getRenderOutput(element) {
8 const renderer = new ShallowRenderer();
9 renderer.render(element);
10 return renderer.getRenderOutput();
11}
12
13export function getElement(output, tagName) {
14 return ReactDOM.findDOMNode(
15 TestUtils.findRenderedDOMComponentWithTag(output, tagName)
16 );
17}
18
19export function getElements(output, tagName) {
20 return TestUtils.scryRenderedDOMComponentsWithTag(
21 output,
22 tagName
23 ).map(component => ReactDOM.findDOMNode(component));
24}
25
26function cleanCSS(css) {
27 return css.replace(/\s*\n\s*/g, '').replace(/\s*([{};:,])\s*/g, '$1');
28}
29
30export function expectCSS(styleElement, css) {
31 // strip newlines and excess whitespace from both to normalize browsers.
32 // IE9, for instance, does not include new lines in innerText.
33 // Also allows us to write our expected CSS cleanly, without worring about the
34 // format of the actual output.
35 expect(cleanCSS(styleElement.innerText)).to.equal(cleanCSS(css));
36}
37
38export function expectColor(actual, expected) {
39 expect(Color(actual).hex()).to.equal(Color(expected).hex());
40}
41
42export function createEsClass(renderFn) {
43 class Composed extends Component {
44 render() {
45 return renderFn() || <div />;
46 }
47 }
48
49 return Composed;
50}
51
\No newline at end of file