Skip to content

Commit b021eea

Browse files
committed
Merge pull request gajus#25 from goncalvesjoao/master
rendering <noscript> in case of rendering to null
2 parents b30527c + b6558b5 commit b021eea

File tree

2 files changed

+67
-2
lines changed

2 files changed

+67
-2
lines changed

src/index.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import linkClass from './linkClass';
2+
import React from 'react';
23
import _ from 'lodash';
34

45
let decoratorConstructor,
@@ -15,7 +16,8 @@ let decoratorConstructor,
1516
functionConstructor = (Component, defaultStyles, options) => {
1617
return class extends Component {
1718
render () {
18-
let styles;
19+
let renderResult,
20+
styles;
1921

2022
if (this.props.styles) {
2123
styles = this.props.styles;
@@ -25,7 +27,13 @@ functionConstructor = (Component, defaultStyles, options) => {
2527
styles = {};
2628
}
2729

28-
return linkClass(super.render(), styles, options);
30+
renderResult = super.render();
31+
32+
if (renderResult) {
33+
return linkClass(renderResult, styles, options);
34+
}
35+
36+
return React.createElement('noscript');
2937
}
3038
};
3139
};

test/reactCssModules.js

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import {
2+
expect
3+
} from 'chai';
4+
5+
import React from 'react';
6+
import TestUtils from 'react-addons-test-utils';
7+
import reactCssModules from './../src/index';
8+
9+
describe('reactCssModules', () => {
10+
context('when a ReactComponent renders an element with the styleName prop', () => {
11+
it('that element should contain the equivalent className', () => {
12+
let Foo,
13+
component,
14+
shallowRenderer;
15+
16+
shallowRenderer = TestUtils.createRenderer();
17+
18+
Foo = reactCssModules(class extends React.Component {
19+
render () {
20+
return <div styleName='foo'>Hello</div>;
21+
}
22+
}, {
23+
foo: 'foo-1'
24+
});
25+
26+
shallowRenderer.render(<Foo />);
27+
28+
component = shallowRenderer.getRenderOutput();
29+
30+
expect(component.props.className).to.equal('foo-1');
31+
});
32+
});
33+
34+
context('when a ReactComponent renders nothing', () => {
35+
it('linkClass should not intervene', () => {
36+
let Foo,
37+
component,
38+
shallowRenderer;
39+
40+
shallowRenderer = TestUtils.createRenderer();
41+
42+
Foo = reactCssModules(class extends React.Component {
43+
render () {
44+
return null;
45+
}
46+
}, {
47+
foo: 'foo-1'
48+
});
49+
50+
shallowRenderer.render(<Foo />);
51+
52+
component = shallowRenderer.getRenderOutput();
53+
54+
expect(typeof component).to.equal('object');
55+
});
56+
});
57+
});

0 commit comments

Comments
 (0)