Skip to content

Commit db39cf6

Browse files
Refactor tests by moving render function into helpers
`render` is an alias for `ReactDOMServer.renderToStaticMarkup` Update `render` function to check that the first argument is a valid React element; otherwise, throw an error.
1 parent 2a12730 commit db39cf6

File tree

3 files changed

+27
-23
lines changed

3 files changed

+27
-23
lines changed

test/dom-to-react.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
*/
66
var assert = require('assert');
77
var React = require('react');
8-
var ReactDOMServer = require('react-dom/server');
98
var htmlToDOMServer = require('../lib/html-to-dom-server');
109
var domToReact = require('../lib/dom-to-react');
10+
var helpers = require('./helpers/');
1111
var data = require('./data');
1212

1313
/**
@@ -78,9 +78,7 @@ describe('dom-to-react parser', function() {
7878
var html = data.html.void;
7979
var reactElements = domToReact(htmlToDOMServer(html));
8080
assert.doesNotThrow(function() {
81-
ReactDOMServer.renderToStaticMarkup(
82-
React.createElement('div', {}, reactElements)
83-
);
81+
helpers.render(React.createElement('div', {}, reactElements));
8482
});
8583
});
8684

test/helpers/index.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,21 @@
55
*/
66
var assert = require('assert');
77
var util = require('util');
8+
var React = require('react');
9+
var ReactDOMServer = require('react-dom/server');
10+
11+
/**
12+
* Render a React element to static HTML markup.
13+
*
14+
* @param {ReactElement} reactElement - The React element.
15+
* @return {String} - The static HTML markup.
16+
*/
17+
function render(reactElement) {
18+
if (!React.isValidElement(reactElement)) {
19+
throw new Error(reactElement, 'is not a valid React element.');
20+
}
21+
return ReactDOMServer.renderToStaticMarkup(reactElement);
22+
}
823

924
/**
1025
* Test for deep equality between objects that have circular references.
@@ -65,5 +80,6 @@ function deepEqualCircular(actual, expected) {
6580
* Export assert helpers.
6681
*/
6782
module.exports = {
68-
deepEqualCircular: deepEqualCircular
83+
deepEqualCircular: deepEqualCircular,
84+
render: render
6985
};

test/html-to-react.js

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,10 @@
55
*/
66
var assert = require('assert');
77
var React = require('react');
8-
var ReactDOMServer = require('react-dom/server');
98
var Parser = require('../');
9+
var helpers = require('./helpers/');
1010
var data = require('./data');
1111

12-
/**
13-
* Render a React element to static HTML markup.
14-
*
15-
* @param {ReactElement} reactElement - The React element.
16-
* @return {String} - The static HTML markup.
17-
*/
18-
function render(reactElement) {
19-
return ReactDOMServer.renderToStaticMarkup(reactElement);
20-
}
21-
2212
/**
2313
* Tests for `htmlToReact`.
2414
*/
@@ -44,35 +34,35 @@ describe('html-to-react', function() {
4434
it('converts single HTML element to React', function() {
4535
var html = data.html.single;
4636
var reactElement = Parser(html);
47-
assert.equal(render(reactElement), html);
37+
assert.equal(helpers.render(reactElement), html);
4838
});
4939

5040
it('converts single HTML element and ignores comment', function() {
5141
var html = data.html.single;
5242
// comment should be ignored
5343
var reactElement = Parser(html + data.html.comment);
54-
assert.equal(render(reactElement), html);
44+
assert.equal(helpers.render(reactElement), html);
5545
});
5646

5747
it('converts multiple HTML elements to React', function() {
5848
var html = data.html.multiple;
5949
var reactElements = Parser(html);
6050
assert.equal(
61-
render(React.createElement('div', {}, reactElements)),
51+
helpers.render(React.createElement('div', {}, reactElements)),
6252
'<div>' + html + '</div>'
6353
);
6454
});
6555

6656
it('converts complex HTML to React', function() {
6757
var html = data.html.complex;
6858
var reactElement = Parser(html);
69-
assert.equal(render(reactElement), html);
59+
assert.equal(helpers.render(reactElement), html);
7060
});
7161

7262
it('converts SVG to React', function() {
7363
var svg = data.svg.complex;
7464
var reactElement = Parser(svg);
75-
assert.equal(render(reactElement), svg);
65+
assert.equal(helpers.render(reactElement), svg);
7666
});
7767

7868
});
@@ -94,7 +84,7 @@ describe('html-to-react', function() {
9484
}
9585
});
9686
assert.equal(
97-
render(reactElement),
87+
helpers.render(reactElement),
9888
html.replace('<title>Title</title>', '<meta charset="utf-8"/>')
9989
);
10090
});
@@ -112,7 +102,7 @@ describe('html-to-react', function() {
112102
}
113103
});
114104
assert.notEqual(
115-
render(reactElement),
105+
helpers.render(reactElement),
116106
html.replace(
117107
'<header id="header">Header</header>',
118108
'<h1>Heading</h1>'

0 commit comments

Comments
 (0)