@@ -28,6 +28,7 @@ var ruleTester = new RuleTester();
2828ruleTester . run ( 'require-render-return' , rule , {
2929
3030 valid : [ {
31+ // ES6 class
3132 code : [
3233 'class Hello extends React.Component {' ,
3334 ' render() {' ,
@@ -37,6 +38,7 @@ ruleTester.run('require-render-return', rule, {
3738 ] . join ( '\n' ) ,
3839 parserOptions : parserOptions
3940 } , {
41+ // ES5 class
4042 code : [
4143 'var Hello = React.createClass({' ,
4244 ' displayName: \'Hello\',' ,
@@ -46,9 +48,47 @@ ruleTester.run('require-render-return', rule, {
4648 '});'
4749 ] . join ( '\n' ) ,
4850 parserOptions : parserOptions
51+ } , {
52+ // Return in a switch...case
53+ code : [
54+ 'var Hello = React.createClass({' ,
55+ ' render: function() {' ,
56+ ' switch (this.props.name) {' ,
57+ ' case \'Foo\':' ,
58+ ' return <div>Hello Foo</div>;' ,
59+ ' default:' ,
60+ ' return <div>Hello {this.props.name}</div>;' ,
61+ ' }' ,
62+ ' }' ,
63+ '});'
64+ ] . join ( '\n' ) ,
65+ parserOptions : parserOptions
66+ } , {
67+ // Return in a if...else
68+ code : [
69+ 'var Hello = React.createClass({' ,
70+ ' render: function() {' ,
71+ ' if (this.props.name === \'Foo\') {' ,
72+ ' return <div>Hello Foo</div>;' ,
73+ ' } else {' ,
74+ ' return <div>Hello {this.props.name}</div>;' ,
75+ ' }' ,
76+ ' }' ,
77+ '});'
78+ ] . join ( '\n' ) ,
79+ parserOptions : parserOptions
80+ } , {
81+ // Not a React component
82+ code : [
83+ 'class Hello {' ,
84+ ' render() {}' ,
85+ '}'
86+ ] . join ( '\n' ) ,
87+ parserOptions : parserOptions
4988 } ] ,
5089
5190 invalid : [ {
91+ // Missing return in ES5 class
5292 code : [
5393 'var Hello = React.createClass({' ,
5494 ' displayName: \'Hello\',' ,
@@ -60,6 +100,7 @@ ruleTester.run('require-render-return', rule, {
60100 message : 'Your render method should have return statement'
61101 } ]
62102 } , {
103+ // Missing return in ES6 class
63104 code : [
64105 'class Hello extends React.Component {' ,
65106 ' render() {} ' ,
@@ -69,5 +110,20 @@ ruleTester.run('require-render-return', rule, {
69110 errors : [ {
70111 message : 'Your render method should have return statement'
71112 } ]
113+ } , {
114+ // Missing return (but one is present in a sub-function)
115+ code : [
116+ 'class Hello extends React.Component {' ,
117+ ' render() {' ,
118+ ' const names = this.props.names.map(function(name) {' ,
119+ ' return <div>{name}</div>' ,
120+ ' });' ,
121+ ' } ' ,
122+ '}'
123+ ] . join ( '\n' ) ,
124+ parserOptions : parserOptions ,
125+ errors : [ {
126+ message : 'Your render method should have return statement'
127+ } ]
72128 }
73129] } ) ;
0 commit comments