this.setState({dropdownIndex: index})} />;',
- ' }',
- '};'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ render() {
+ return
this.setState({dropdownIndex: index})} />;
+ }
+ };
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Do not use setState'
diff --git a/tests/lib/rules/no-string-refs.js b/tests/lib/rules/no-string-refs.js
index d1c0ac7540..530cc3cefd 100644
--- a/tests/lib/rules/no-string-refs.js
+++ b/tests/lib/rules/no-string-refs.js
@@ -30,70 +30,70 @@ const ruleTester = new RuleTester({parserOptions});
ruleTester.run('no-refs', rule, {
valid: [{
- code: [
- 'var Hello = createReactClass({',
- ' componentDidMount: function() {',
- ' var component = this.hello;',
- ' },',
- ' render: function() {',
- ' return
this.hello = c}>Hello {this.props.name}
;',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ componentDidMount: function() {
+ var component = this.hello;
+ },
+ render: function() {
+ return
this.hello = c}>Hello {this.props.name}
;
+ }
+ });
+ `,
parser: 'babel-eslint'
}
],
invalid: [{
- code: [
- 'var Hello = createReactClass({',
- ' componentDidMount: function() {',
- ' var component = this.refs.hello;',
- ' },',
- ' render: function() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ componentDidMount: function() {
+ var component = this.refs.hello;
+ },
+ render: function() {
+ return
Hello {this.props.name}
;
+ }
+ });
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Using this.refs is deprecated.'
}]
}, {
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return
Hello {this.props.name}
;
+ }
+ });
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Using string literals in ref attributes is deprecated.'
}]
}, {
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return
Hello {this.props.name}
;
+ }
+ });
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Using string literals in ref attributes is deprecated.'
}]
}, {
- code: [
- 'var Hello = createReactClass({',
- ' componentDidMount: function() {',
- ' var component = this.refs.hello;',
- ' },',
- ' render: function() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ componentDidMount: function() {
+ var component = this.refs.hello;
+ },
+ render: function() {
+ return
Hello {this.props.name}
;
+ }
+ });
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Using this.refs is deprecated.'
diff --git a/tests/lib/rules/no-typos.js b/tests/lib/rules/no-typos.js
index f53745056c..8fd5eb53f1 100644
--- a/tests/lib/rules/no-typos.js
+++ b/tests/lib/rules/no-typos.js
@@ -27,216 +27,218 @@ const ERROR_MESSAGE_LIFECYCLE_METHOD = 'Typo in component lifecycle method decla
const ruleTester = new RuleTester();
ruleTester.run('no-typos', rule, {
valid: [{
- code: [
- 'class First {',
- ' static PropTypes = {key: "myValue"};',
- ' static ContextTypes = {key: "myValue"};',
- ' static ChildContextTypes = {key: "myValue"};',
- ' static DefaultProps = {key: "myValue"};',
- '}'
- ].join('\n'),
+ code: `
+ class First {
+ static PropTypes = {key: "myValue"};
+ static ContextTypes = {key: "myValue"};
+ static ChildContextTypes = {key: "myValue"};
+ static DefaultProps = {key: "myValue"};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions
}, {
- code: [
- 'class First {}',
- 'First.PropTypes = {key: "myValue"};',
- 'First.ContextTypes = {key: "myValue"};',
- 'First.ChildContextTypes = {key: "myValue"};',
- 'First.DefaultProps = {key: "myValue"};'
- ].join('\n'),
+ code: `
+ class First {}
+ First.PropTypes = {key: "myValue"};
+ First.ContextTypes = {key: "myValue"};
+ First.ChildContextTypes = {key: "myValue"};
+ First.DefaultProps = {key: "myValue"};
+ `,
parserOptions: parserOptions
}, {
- code: [
- 'class First extends React.Component {',
- ' static propTypes = {key: "myValue"};',
- ' static contextTypes = {key: "myValue"};',
- ' static childContextTypes = {key: "myValue"};',
- ' static defaultProps = {key: "myValue"};',
- '}'
- ].join('\n'),
+ code: `
+ class First extends React.Component {
+ static propTypes = {key: "myValue"};
+ static contextTypes = {key: "myValue"};
+ static childContextTypes = {key: "myValue"};
+ static defaultProps = {key: "myValue"};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions
}, {
- code: [
- 'class First extends React.Component {}',
- 'First.propTypes = {key: "myValue"};',
- 'First.contextTypes = {key: "myValue"};',
- 'First.childContextTypes = {key: "myValue"};',
- 'First.defaultProps = {key: "myValue"};'
- ].join('\n'),
+ code: `
+ class First extends React.Component {}
+ First.propTypes = {key: "myValue"};
+ First.contextTypes = {key: "myValue"};
+ First.childContextTypes = {key: "myValue"};
+ First.defaultProps = {key: "myValue"};
+ `,
parserOptions: parserOptions
}, {
- code: [
- 'class MyClass {',
- ' propTypes = {key: "myValue"};',
- ' contextTypes = {key: "myValue"};',
- ' childContextTypes = {key: "myValue"};',
- ' defaultProps = {key: "myValue"};',
- '}'
- ].join('\n'),
+ code: `
+ class MyClass {
+ propTypes = {key: "myValue"};
+ contextTypes = {key: "myValue"};
+ childContextTypes = {key: "myValue"};
+ defaultProps = {key: "myValue"};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions
}, {
- code: [
- 'class MyClass {',
- ' PropTypes = {key: "myValue"};',
- ' ContextTypes = {key: "myValue"};',
- ' ChildContextTypes = {key: "myValue"};',
- ' DefaultProps = {key: "myValue"};',
- '}'
- ].join('\n'),
+ code: `
+ class MyClass {
+ PropTypes = {key: "myValue"};
+ ContextTypes = {key: "myValue"};
+ ChildContextTypes = {key: "myValue"};
+ DefaultProps = {key: "myValue"};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions
}, {
- code: [
- 'class MyClass {',
- ' proptypes = {key: "myValue"};',
- ' contexttypes = {key: "myValue"};',
- ' childcontextypes = {key: "myValue"};',
- ' defaultprops = {key: "myValue"};',
- '}'
- ].join('\n'),
+ code: `
+ class MyClass {
+ proptypes = {key: "myValue"};
+ contexttypes = {key: "myValue"};
+ childcontextypes = {key: "myValue"};
+ defaultprops = {key: "myValue"};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions
}, {
- code: [
- 'class MyClass {',
- ' static PropTypes() {};',
- ' static ContextTypes() {};',
- ' static ChildContextTypes() {};',
- ' static DefaultProps() {};',
- '}'
- ].join('\n'),
+ code: `
+ class MyClass {
+ static PropTypes() {};
+ static ContextTypes() {};
+ static ChildContextTypes() {};
+ static DefaultProps() {};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions
}, {
- code: [
- 'class MyClass {',
- ' static proptypes() {};',
- ' static contexttypes() {};',
- ' static childcontexttypes() {};',
- ' static defaultprops() {};',
- '}'
- ].join('\n'),
+ code: `
+ class MyClass {
+ static proptypes() {};
+ static contexttypes() {};
+ static childcontexttypes() {};
+ static defaultprops() {};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions
}, {
- code: [
- 'class MyClass {}',
- 'MyClass.prototype.PropTypes = function() {};',
- 'MyClass.prototype.ContextTypes = function() {};',
- 'MyClass.prototype.ChildContextTypes = function() {};',
- 'MyClass.prototype.DefaultProps = function() {};'
- ].join('\n'),
+ code: `
+ class MyClass {}
+ MyClass.prototype.PropTypes = function() {};
+ MyClass.prototype.ContextTypes = function() {};
+ MyClass.prototype.ChildContextTypes = function() {};
+ MyClass.prototype.DefaultProps = function() {};
+ `,
parserOptions: parserOptions
}, {
- code: [
- 'class MyClass {}',
- 'MyClass.PropTypes = function() {};',
- 'MyClass.ContextTypes = function() {};',
- 'MyClass.ChildContextTypes = function() {};',
- 'MyClass.DefaultProps = function() {};'
- ].join('\n'),
+ code: `
+ class MyClass {}
+ MyClass.PropTypes = function() {};
+ MyClass.ContextTypes = function() {};
+ MyClass.ChildContextTypes = function() {};
+ MyClass.DefaultProps = function() {};
+ `,
parserOptions: parserOptions
}, {
- code: [
- 'function MyRandomFunction() {}',
- 'MyRandomFunction.PropTypes = {};',
- 'MyRandomFunction.ContextTypes = {};',
- 'MyRandomFunction.ChildContextTypes = {};',
- 'MyRandomFunction.DefaultProps = {};'
- ].join('\n'),
+ code: `
+ function MyRandomFunction() {}
+ MyRandomFunction.PropTypes = {};
+ MyRandomFunction.ContextTypes = {};
+ MyRandomFunction.ChildContextTypes = {};
+ MyRandomFunction.DefaultProps = {};
+ `,
parserOptions: parserOptions
}, {
- code: [
- 'class First extends React.Component {}',
- 'First["prop" + "Types"] = {};',
- 'First["context" + "Types"] = {};',
- 'First["childContext" + "Types"] = {};',
- 'First["default" + "Props"] = {};'
- ].join('\n'),
+ // This case is currently not supported
+ code: `
+ class First extends React.Component {}
+ First["prop" + "Types"] = {};
+ First["context" + "Types"] = {};
+ First["childContext" + "Types"] = {};
+ First["default" + "Props"] = {};
+ `,
parserOptions: parserOptions
}, {
- code: [ // This case is currently not supported
- 'class First extends React.Component {}',
- 'First["PROP" + "TYPES"] = {};',
- 'First["CONTEXT" + "TYPES"] = {};',
- 'First["CHILDCONTEXT" + "TYPES"] = {};',
- 'First["DEFAULT" + "PROPS"] = {};'
- ].join('\n'),
+ // This case is currently not supported
+ code: `
+ class First extends React.Component {}
+ First["PROP" + "TYPES"] = {};
+ First["CONTEXT" + "TYPES"] = {};
+ First["CHILDCONTEXT" + "TYPES"] = {};
+ First["DEFAULT" + "PROPS"] = {};
+ `,
parserOptions: parserOptions
}, {
- code: [ // This case is currently not supported
- 'const propTypes = "PROPTYPES"',
- 'const contextTypes = "CONTEXTTYPES"',
- 'const childContextTypes = "CHILDCONTEXTTYPES"',
- 'const defautProps = "DEFAULTPROPS"',
- '',
- 'class First extends React.Component {}',
- 'First[propTypes] = {};',
- 'First[contextTypes] = {};',
- 'First[childContextTypes] = {};',
- 'First[defautProps] = {};'
- ].join('\n'),
+ code: `
+ const propTypes = "PROPTYPES"
+ const contextTypes = "CONTEXTTYPES"
+ const childContextTypes = "CHILDCONTEXTTYPES"
+ const defautProps = "DEFAULTPROPS"
+
+ class First extends React.Component {}
+ First[propTypes] = {};
+ First[contextTypes] = {};
+ First[childContextTypes] = {};
+ First[defautProps] = {};
+ `,
parserOptions: parserOptions
}, {
- code: [
- 'class Hello extends React.Component {',
- ' componentWillMount() { }',
- ' componentDidMount() { }',
- ' componentWillReceiveProps() { }',
- ' shouldComponentUpdate() { }',
- ' componentWillUpdate() { }',
- ' componentDidUpdate() { }',
- ' componentWillUnmount() { }',
- ' render() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ componentWillMount() { }
+ componentDidMount() { }
+ componentWillReceiveProps() { }
+ shouldComponentUpdate() { }
+ componentWillUpdate() { }
+ componentDidUpdate() { }
+ componentWillUnmount() { }
+ render() {
+ return
Hello {this.props.name}
;
+ }
+ }
+ `,
parserOptions: parserOptions
}, {
- code: [
- 'class MyClass {',
- ' componentWillMount() { }',
- ' componentDidMount() { }',
- ' componentWillReceiveProps() { }',
- ' shouldComponentUpdate() { }',
- ' componentWillUpdate() { }',
- ' componentDidUpdate() { }',
- ' componentWillUnmount() { }',
- ' render() { }',
- '}'
- ].join('\n'),
+ code: `
+ class MyClass {
+ componentWillMount() { }
+ componentDidMount() { }
+ componentWillReceiveProps() { }
+ shouldComponentUpdate() { }
+ componentWillUpdate() { }
+ componentDidUpdate() { }
+ componentWillUnmount() { }
+ render() { }
+ }
+ `,
parserOptions: parserOptions
}, {
- code: [
- 'class MyClass {',
- ' componentwillmount() { }',
- ' componentdidmount() { }',
- ' componentwillreceiveprops() { }',
- ' shouldcomponentupdate() { }',
- ' componentwillupdate() { }',
- ' componentdidupdate() { }',
- ' componentwillUnmount() { }',
- ' render() { }',
- '}'
- ].join('\n'),
+ code: `
+ class MyClass {
+ componentwillmount() { }
+ componentdidmount() { }
+ componentwillreceiveprops() { }
+ shouldcomponentupdate() { }
+ componentwillupdate() { }
+ componentdidupdate() { }
+ componentwillUnmount() { }
+ render() { }
+ }
+ `,
parserOptions: parserOptions
}, {
- code: [
- 'class MyClass {',
- ' Componentwillmount() { }',
- ' Componentdidmount() { }',
- ' Componentwillreceiveprops() { }',
- ' Shouldcomponentupdate() { }',
- ' Componentwillupdate() { }',
- ' Componentdidupdate() { }',
- ' ComponentwillUnmount() { }',
- ' Render() { }',
- '}'
- ].join('\n'),
+ code: `
+ class MyClass {
+ Componentwillmount() { }
+ Componentdidmount() { }
+ Componentwillreceiveprops() { }
+ Shouldcomponentupdate() { }
+ Componentwillupdate() { }
+ Componentdidupdate() { }
+ ComponentwillUnmount() { }
+ Render() { }
+ }
+ `,
parserOptions: parserOptions
}, {
// PropTypes declared on a component that is detected through JSDoc comments and is
@@ -347,194 +349,194 @@ ruleTester.run('no-typos', rule, {
}],
invalid: [{
- code: [
- 'class Component extends React.Component {',
- ' static PropTypes = {};',
- '}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {
+ static PropTypes = {};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {}',
- 'Component.PropTypes = {}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {}
+ Component.PropTypes = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'function MyComponent() { return (
{this.props.myProp}
) }',
- 'MyComponent.PropTypes = {}'
- ].join('\n'),
+ code: `
+ function MyComponent() { return (
{this.props.myProp}
) }
+ MyComponent.PropTypes = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {',
- ' static proptypes = {};',
- '}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {
+ static proptypes = {};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {}',
- 'Component.proptypes = {}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {}
+ Component.proptypes = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'function MyComponent() { return (
{this.props.myProp}
) }',
- 'MyComponent.proptypes = {}'
- ].join('\n'),
+ code: `
+ function MyComponent() { return (
{this.props.myProp}
) }
+ MyComponent.proptypes = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {',
- ' static ContextTypes = {};',
- '}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {
+ static ContextTypes = {};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {}',
- 'Component.ContextTypes = {}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {}
+ Component.ContextTypes = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'function MyComponent() { return (
{this.props.myProp}
) }',
- 'MyComponent.ContextTypes = {}'
- ].join('\n'),
+ code: `
+ function MyComponent() { return (
{this.props.myProp}
) }
+ MyComponent.ContextTypes = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {',
- ' static contexttypes = {};',
- '}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {
+ static contexttypes = {};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {}',
- 'Component.contexttypes = {}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {}
+ Component.contexttypes = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'function MyComponent() { return (
{this.props.myProp}
) }',
- 'MyComponent.contexttypes = {}'
- ].join('\n'),
+ code: `
+ function MyComponent() { return (
{this.props.myProp}
) }
+ MyComponent.contexttypes = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {',
- ' static ChildContextTypes = {};',
- '}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {
+ static ChildContextTypes = {};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {}',
- 'Component.ChildContextTypes = {}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {}
+ Component.ChildContextTypes = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'function MyComponent() { return (
{this.props.myProp}
) }',
- 'MyComponent.ChildContextTypes = {}'
- ].join('\n'),
+ code: `
+ function MyComponent() { return (
{this.props.myProp}
) }
+ MyComponent.ChildContextTypes = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {',
- ' static childcontexttypes = {};',
- '}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {
+ static childcontexttypes = {};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {}',
- 'Component.childcontexttypes = {}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {}
+ Component.childcontexttypes = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'function MyComponent() { return (
{this.props.myProp}
) }',
- 'MyComponent.childcontexttypes = {}'
- ].join('\n'),
+ code: `
+ function MyComponent() { return (
{this.props.myProp}
) }
+ MyComponent.childcontexttypes = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {',
- ' static DefaultProps = {};',
- '}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {
+ static DefaultProps = {};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {}',
- 'Component.DefaultProps = {}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {}
+ Component.DefaultProps = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'function MyComponent() { return (
{this.props.myProp}
) }',
- 'MyComponent.DefaultProps = {}'
- ].join('\n'),
+ code: `
+ function MyComponent() { return (
{this.props.myProp}
) }
+ MyComponent.DefaultProps = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {',
- ' static defaultprops = {};',
- '}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {
+ static defaultprops = {};
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Component extends React.Component {}',
- 'Component.defaultprops = {}'
- ].join('\n'),
+ code: `
+ class Component extends React.Component {}
+ Component.defaultprops = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'function MyComponent() { return (
{this.props.myProp}
) }',
- 'MyComponent.defaultprops = {}'
- ].join('\n'),
+ code: `
+ function MyComponent() { return (
{this.props.myProp}
) }
+ MyComponent.defaultprops = {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'Component.defaultprops = {}',
- 'class Component extends React.Component {}'
- ].join('\n'),
+ code: `
+ Component.defaultprops = {}
+ class Component extends React.Component {}
+ `,
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
@@ -546,20 +548,20 @@ ruleTester.run('no-typos', rule, {
parserOptions: parserOptions,
errors: [{message: ERROR_MESSAGE}]
}, {
- code: [
- 'class Hello extends React.Component {',
- ' ComponentWillMount() { }',
- ' ComponentDidMount() { }',
- ' ComponentWillReceiveProps() { }',
- ' ShouldComponentUpdate() { }',
- ' ComponentWillUpdate() { }',
- ' ComponentDidUpdate() { }',
- ' ComponentWillUnmount() { }',
- ' render() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ ComponentWillMount() { }
+ ComponentDidMount() { }
+ ComponentWillReceiveProps() { }
+ ShouldComponentUpdate() { }
+ ComponentWillUpdate() { }
+ ComponentDidUpdate() { }
+ ComponentWillUnmount() { }
+ render() {
+ return
Hello {this.props.name}
;
+ }
+ }
+ `,
parserOptions: parserOptions,
errors: [{
message: ERROR_MESSAGE_LIFECYCLE_METHOD,
@@ -584,20 +586,20 @@ ruleTester.run('no-typos', rule, {
type: 'MethodDefinition'
}]
}, {
- code: [
- 'class Hello extends React.Component {',
- ' Componentwillmount() { }',
- ' Componentdidmount() { }',
- ' Componentwillreceiveprops() { }',
- ' Shouldcomponentupdate() { }',
- ' Componentwillupdate() { }',
- ' Componentdidupdate() { }',
- ' Componentwillunmount() { }',
- ' Render() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ Componentwillmount() { }
+ Componentdidmount() { }
+ Componentwillreceiveprops() { }
+ Shouldcomponentupdate() { }
+ Componentwillupdate() { }
+ Componentdidupdate() { }
+ Componentwillunmount() { }
+ Render() {
+ return
Hello {this.props.name}
;
+ }
+ }
+ `,
parserOptions: parserOptions,
errors: [{
message: ERROR_MESSAGE_LIFECYCLE_METHOD,
@@ -625,20 +627,20 @@ ruleTester.run('no-typos', rule, {
type: 'MethodDefinition'
}]
}, {
- code: [
- 'class Hello extends React.Component {',
- ' componentwillmount() { }',
- ' componentdidmount() { }',
- ' componentwillreceiveprops() { }',
- ' shouldcomponentupdate() { }',
- ' componentwillupdate() { }',
- ' componentdidupdate() { }',
- ' componentwillunmount() { }',
- ' render() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ componentwillmount() { }
+ componentdidmount() { }
+ componentwillreceiveprops() { }
+ shouldcomponentupdate() { }
+ componentwillupdate() { }
+ componentdidupdate() { }
+ componentwillunmount() { }
+ render() {
+ return
Hello {this.props.name}
;
+ }
+ }
+ `,
parserOptions: parserOptions,
errors: [{
message: ERROR_MESSAGE_LIFECYCLE_METHOD,
@@ -663,68 +665,74 @@ ruleTester.run('no-typos', rule, {
type: 'MethodDefinition'
}]
}, {
- code: `class Component extends React.Component {};
- Component.propTypes = {
- a: PropTypes.Number.isRequired
- }
- `,
+ code: `
+ class Component extends React.Component {};
+ Component.propTypes = {
+ a: PropTypes.Number.isRequired
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions,
errors: [{
message: 'Typo in declared prop type: Number'
}]
}, {
- code: `class Component extends React.Component {};
- Component.propTypes = {
- a: PropTypes.number.isrequired
- }
- `,
+ code: `
+ class Component extends React.Component {};
+ Component.propTypes = {
+ a: PropTypes.number.isrequired
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions,
errors: [{
message: 'Typo in prop type chain qualifier: isrequired'
}]
}, {
- code: `class Component extends React.Component {};
- Component.propTypes = {
- a: PropTypes.Number
- }
- `,
+ code: `
+ class Component extends React.Component {};
+ Component.propTypes = {
+ a: PropTypes.Number
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions,
errors: [{
message: 'Typo in declared prop type: Number'
}]
}, {
- code: `class Component extends React.Component {};
- Component.propTypes = {
- a: PropTypes.shape({
- b: PropTypes.String,
- c: PropTypes.number.isRequired,
- })
- }
- `,
+ code: `
+ class Component extends React.Component {};
+ Component.propTypes = {
+ a: PropTypes.shape({
+ b: PropTypes.String,
+ c: PropTypes.number.isRequired,
+ })
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions,
errors: [{
message: 'Typo in declared prop type: String'
}]
}, {
- code: `class Component extends React.Component {};
- Component.propTypes = {
- a: PropTypes.oneOfType([
- PropTypes.bools,
- PropTypes.number,
- ])
- }
- `,
+ code: `
+ class Component extends React.Component {};
+ Component.propTypes = {
+ a: PropTypes.oneOfType([
+ PropTypes.bools,
+ PropTypes.number,
+ ])
+ }
+ `,
parser: 'babel-eslint',
parserOptions: parserOptions,
errors: [{
message: 'Typo in declared prop type: bools'
}]
}, {
- code: `class Component extends React.Component {};
+ code: `
+ class Component extends React.Component {};
Component.propTypes = {
a: PropTypes.bools,
b: PropTypes.Array,
@@ -744,7 +752,8 @@ ruleTester.run('no-typos', rule, {
message: 'Typo in declared prop type: objectof'
}]
}, {
- code: `class Component extends React.Component {};
+ code: `
+ class Component extends React.Component {};
Component.childContextTypes = {
a: PropTypes.bools,
b: PropTypes.Array,
diff --git a/tests/lib/rules/no-unescaped-entities.js b/tests/lib/rules/no-unescaped-entities.js
index 6d0f0a186c..08856c5f71 100644
--- a/tests/lib/rules/no-unescaped-entities.js
+++ b/tests/lib/rules/no-unescaped-entities.js
@@ -29,103 +29,103 @@ ruleTester.run('no-unescaped-entities', rule, {
valid: [
{
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return (',
- '
',
- ' );',
- ' }',
- '});'
- ].join('\n')
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return (
+
+ );
+ }
+ });
+ `
}, {
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return
Here is some text!
;',
- ' }',
- '});'
- ].join('\n')
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return
Here is some text!
;
+ }
+ });
+ `
}, {
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return
I’ve escaped some entities: > < &
;',
- ' }',
- '});'
- ].join('\n')
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return
I’ve escaped some entities: > < &
;
+ }
+ });
+ `
}, {
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return
first line is ok',
- ' so is second',
- ' and here are some escaped entities: > < &
;',
- ' }',
- '});'
- ].join('\n')
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return
first line is ok
+ so is second
+ and here are some escaped entities: > < &
;
+ }
+ });
+ `
}, {
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return
{">" + "<" + "&" + \'"\'}
;',
- ' },',
- '});'
- ].join('\n')
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return
{">" + "<" + "&" + '"'}
;
+ },
+ });
+ `
}
],
invalid: [
{
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return
>
;',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return
>
;
+ }
+ });
+ `,
errors: [{message: 'HTML entities must be escaped.'}]
}, {
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return
first line is ok',
- ' so is second',
- ' and here are some bad entities: >
',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return
first line is ok
+ so is second
+ and here are some bad entities: >
+ }
+ });
+ `,
errors: [{message: 'HTML entities must be escaped.'}]
}, {
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return
\'
;',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return
'
;
+ }
+ });
+ `,
errors: [{message: 'HTML entities must be escaped.'}]
}, {
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return
Multiple errors: \'>>
;',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return
Multiple errors: '>>
;
+ }
+ });
+ `,
errors: [
{message: 'HTML entities must be escaped.'},
{message: 'HTML entities must be escaped.'},
{message: 'HTML entities must be escaped.'}
]
}, {
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return
{"Unbalanced braces"}}
;',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return
{"Unbalanced braces"}}
;
+ }
+ });
+ `,
errors: [{message: 'HTML entities must be escaped.'}]
}
]
diff --git a/tests/lib/rules/no-will-update-set-state.js b/tests/lib/rules/no-will-update-set-state.js
index 3b6fdf3a67..41bb274292 100644
--- a/tests/lib/rules/no-will-update-set-state.js
+++ b/tests/lib/rules/no-will-update-set-state.js
@@ -30,197 +30,197 @@ const ruleTester = new RuleTester({parserOptions});
ruleTester.run('no-will-update-set-state', rule, {
valid: [{
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '});'
- ].join('\n')
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return
Hello {this.props.name}
;
+ }
+ });
+ `
}, {
- code: [
- 'var Hello = createReactClass({',
- ' componentWillUpdate: function() {}',
- '});'
- ].join('\n')
+ code: `
+ var Hello = createReactClass({
+ componentWillUpdate: function() {}
+ });
+ `
}, {
- code: [
- 'var Hello = createReactClass({',
- ' componentWillUpdate: function() {',
- ' someNonMemberFunction(arg);',
- ' this.someHandler = this.setState;',
- ' }',
- '});'
- ].join('\n')
+ code: `
+ var Hello = createReactClass({
+ componentWillUpdate: function() {
+ someNonMemberFunction(arg);
+ this.someHandler = this.setState;
+ }
+ });
+ `
}, {
- code: [
- 'var Hello = createReactClass({',
- ' componentWillUpdate: function() {',
- ' someClass.onSomeEvent(function(data) {',
- ' this.setState({',
- ' data: data',
- ' });',
- ' })',
- ' }',
- '});'
- ].join('\n')
+ code: `
+ var Hello = createReactClass({
+ componentWillUpdate: function() {
+ someClass.onSomeEvent(function(data) {
+ this.setState({
+ data: data
+ });
+ })
+ }
+ });
+ `
}, {
- code: [
- 'var Hello = createReactClass({',
- ' componentWillUpdate: function() {',
- ' function handleEvent(data) {',
- ' this.setState({',
- ' data: data',
- ' });',
- ' }',
- ' someClass.onSomeEvent(handleEvent)',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ componentWillUpdate: function() {
+ function handleEvent(data) {
+ this.setState({
+ data: data
+ });
+ }
+ someClass.onSomeEvent(handleEvent)
+ }
+ });
+ `,
parser: 'babel-eslint'
}],
invalid: [{
- code: [
- 'var Hello = createReactClass({',
- ' componentWillUpdate: function() {',
- ' this.setState({',
- ' data: data',
- ' });',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ componentWillUpdate: function() {
+ this.setState({
+ data: data
+ });
+ }
+ });
+ `,
errors: [{
message: 'Do not use setState in componentWillUpdate'
}]
}, {
- code: [
- 'class Hello extends React.Component {',
- ' componentWillUpdate() {',
- ' this.setState({',
- ' data: data',
- ' });',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ componentWillUpdate() {
+ this.setState({
+ data: data
+ });
+ }
+ }
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Do not use setState in componentWillUpdate'
}]
}, {
- code: [
- 'var Hello = createReactClass({',
- ' componentWillUpdate: function() {',
- ' this.setState({',
- ' data: data',
- ' });',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ componentWillUpdate: function() {
+ this.setState({
+ data: data
+ });
+ }
+ });
+ `,
options: ['disallow-in-func'],
errors: [{
message: 'Do not use setState in componentWillUpdate'
}]
}, {
- code: [
- 'class Hello extends React.Component {',
- ' componentWillUpdate() {',
- ' this.setState({',
- ' data: data',
- ' });',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ componentWillUpdate() {
+ this.setState({
+ data: data
+ });
+ }
+ }
+ `,
parser: 'babel-eslint',
options: ['disallow-in-func'],
errors: [{
message: 'Do not use setState in componentWillUpdate'
}]
}, {
- code: [
- 'var Hello = createReactClass({',
- ' componentWillUpdate: function() {',
- ' someClass.onSomeEvent(function(data) {',
- ' this.setState({',
- ' data: data',
- ' });',
- ' })',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ componentWillUpdate: function() {
+ someClass.onSomeEvent(function(data) {
+ this.setState({
+ data: data
+ });
+ })
+ }
+ });
+ `,
options: ['disallow-in-func'],
errors: [{
message: 'Do not use setState in componentWillUpdate'
}]
}, {
- code: [
- 'class Hello extends React.Component {',
- ' componentWillUpdate() {',
- ' someClass.onSomeEvent(function(data) {',
- ' this.setState({',
- ' data: data',
- ' });',
- ' })',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ componentWillUpdate() {
+ someClass.onSomeEvent(function(data) {
+ this.setState({
+ data: data
+ });
+ })
+ }
+ }
+ `,
parser: 'babel-eslint',
options: ['disallow-in-func'],
errors: [{
message: 'Do not use setState in componentWillUpdate'
}]
}, {
- code: [
- 'var Hello = createReactClass({',
- ' componentWillUpdate: function() {',
- ' if (true) {',
- ' this.setState({',
- ' data: data',
- ' });',
- ' }',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ componentWillUpdate: function() {
+ if (true) {
+ this.setState({
+ data: data
+ });
+ }
+ }
+ });
+ `,
errors: [{
message: 'Do not use setState in componentWillUpdate'
}]
}, {
- code: [
- 'class Hello extends React.Component {',
- ' componentWillUpdate() {',
- ' if (true) {',
- ' this.setState({',
- ' data: data',
- ' });',
- ' }',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ componentWillUpdate() {
+ if (true) {
+ this.setState({
+ data: data
+ });
+ }
+ }
+ }
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Do not use setState in componentWillUpdate'
}]
}, {
- code: [
- 'var Hello = createReactClass({',
- ' componentWillUpdate: function() {',
- ' someClass.onSomeEvent((data) => this.setState({data: data}));',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ componentWillUpdate: function() {
+ someClass.onSomeEvent((data) => this.setState({data: data}));
+ }
+ });
+ `,
parser: 'babel-eslint',
options: ['disallow-in-func'],
errors: [{
message: 'Do not use setState in componentWillUpdate'
}]
}, {
- code: [
- 'class Hello extends React.Component {',
- ' componentWillUpdate() {',
- ' someClass.onSomeEvent((data) => this.setState({data: data}));',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ componentWillUpdate() {
+ someClass.onSomeEvent((data) => this.setState({data: data}));
+ }
+ }
+ `,
parser: 'babel-eslint',
options: ['disallow-in-func'],
errors: [{
diff --git a/tests/lib/rules/prefer-es6-class.js b/tests/lib/rules/prefer-es6-class.js
index cee4e7172d..268c0939c1 100644
--- a/tests/lib/rules/prefer-es6-class.js
+++ b/tests/lib/rules/prefer-es6-class.js
@@ -30,80 +30,80 @@ const ruleTester = new RuleTester({parserOptions});
ruleTester.run('prefer-es6-class', rule, {
valid: [{
- code: [
- 'class Hello extends React.Component {',
- ' render() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '}',
- 'Hello.displayName = \'Hello\''
- ].join('\n')
+ code: `
+ class Hello extends React.Component {
+ render() {
+ return
Hello {this.props.name}
;
+ }
+ }
+ Hello.displayName = 'Hello'
+ `
}, {
- code: [
- 'export default class Hello extends React.Component {',
- ' render() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '}',
- 'Hello.displayName = \'Hello\''
- ].join('\n')
+ code: `
+ export default class Hello extends React.Component {
+ render() {
+ return
Hello {this.props.name}
;
+ }
+ }
+ Hello.displayName = 'Hello'
+ `
}, {
- code: [
- 'var Hello = "foo";',
- 'module.exports = {};'
- ].join('\n')
+ code: `
+ var Hello = "foo";
+ module.exports = {};
+ `
}, {
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return
Hello {this.props.name}
;
+ }
+ });
+ `,
options: ['never']
}, {
- code: [
- 'class Hello extends React.Component {',
- ' render() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ render() {
+ return
Hello {this.props.name}
;
+ }
+ }
+ `,
options: ['always']
}],
invalid: [{
- code: [
- 'var Hello = createReactClass({',
- ' displayName: \'Hello\',',
- ' render: function() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ displayName: 'Hello',
+ render: function() {
+ return
Hello {this.props.name}
;
+ }
+ });
+ `,
errors: [{
message: 'Component should use es6 class instead of createClass'
}]
}, {
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ return
Hello {this.props.name}
;
+ }
+ });
+ `,
options: ['always'],
errors: [{
message: 'Component should use es6 class instead of createClass'
}]
}, {
- code: [
- 'class Hello extends React.Component {',
- ' render() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ render() {
+ return
Hello {this.props.name}
;
+ }
+ }
+ `,
options: ['never'],
errors: [{
message: 'Component should use createClass instead of es6 class'
diff --git a/tests/lib/rules/prefer-stateless-function.js b/tests/lib/rules/prefer-stateless-function.js
index 0f1768f2cd..5f8c6528dc 100644
--- a/tests/lib/rules/prefer-stateless-function.js
+++ b/tests/lib/rules/prefer-stateless-function.js
@@ -30,184 +30,184 @@ ruleTester.run('prefer-stateless-function', rule, {
valid: [
{
// Already a stateless function
- code: [
- 'const Foo = function(props) {',
- ' return
{props.foo}
;',
- '};'
- ].join('\n')
+ code: `
+ const Foo = function(props) {
+ return
{props.foo}
;
+ };
+ `
}, {
// Already a stateless (arrow) function
code: 'const Foo = ({foo}) =>
{foo}
;'
}, {
// Extends from PureComponent and uses props
- code: [
- 'class Foo extends React.PureComponent {',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.PureComponent {
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `,
options: [{
ignorePureComponents: true
}]
}, {
// Extends from PureComponent and uses context
- code: [
- 'class Foo extends React.PureComponent {',
- ' render() {',
- ' return
{this.context.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.PureComponent {
+ render() {
+ return
{this.context.foo}
;
+ }
+ }
+ `,
options: [{
ignorePureComponents: true
}]
}, {
// Extends from PureComponent in an expression context.
- code: [
- 'const Foo = class extends React.PureComponent {',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '};'
- ].join('\n'),
+ code: `
+ const Foo = class extends React.PureComponent {
+ render() {
+ return
{this.props.foo}
;
+ }
+ };
+ `,
parserOptions: parserOptions,
options: [{
ignorePureComponents: true
}]
}, {
// Has a lifecyle method
- code: [
- 'class Foo extends React.Component {',
- ' shouldComponentUpdate() {',
- ' return false;',
- ' }',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n')
+ code: `
+ class Foo extends React.Component {
+ shouldComponentUpdate() {
+ return false;
+ }
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `
}, {
// Has a state
- code: [
- 'class Foo extends React.Component {',
- ' changeState() {',
- ' this.setState({foo: "clicked"});',
- ' }',
- ' render() {',
- ' return
{this.state.foo || "bar"}
;',
- ' }',
- '}'
- ].join('\n')
- }, {
- // Use refs
- code: [
- 'class Foo extends React.Component {',
- ' doStuff() {',
- ' this.refs.foo.style.backgroundColor = "red";',
- ' }',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n')
+ code: `
+ class Foo extends React.Component {
+ changeState() {
+ this.setState({foo: "clicked"});
+ }
+ render() {
+ return
{this.state.foo || "bar"}
;
+ }
+ }
+ `
+ }, {
+ // Use refs
+ code: `
+ class Foo extends React.Component {
+ doStuff() {
+ this.refs.foo.style.backgroundColor = "red";
+ }
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `
}, {
// Has an additional method
- code: [
- 'class Foo extends React.Component {',
- ' doStuff() {}',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n')
- }, {
- // Has an empty (no super) constructor
- code: [
- 'class Foo extends React.Component {',
- ' constructor() {}',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n')
- }, {
- // Has a constructor
- code: [
- 'class Foo extends React.Component {',
- ' constructor() {',
- ' doSpecialStuffs();',
- ' }',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n')
- }, {
- // Has a constructor (2)
- code: [
- 'class Foo extends React.Component {',
- ' constructor() {',
- ' foo;',
- ' }',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n')
- }, {
- // Use this.bar
- code: [
- 'class Foo extends React.Component {',
- ' render() {',
- ' return
{this.bar}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ doStuff() {}
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `
+ }, {
+ // Has an empty (no super) constructor
+ code: `
+ class Foo extends React.Component {
+ constructor() {}
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `
+ }, {
+ // Has a constructor
+ code: `
+ class Foo extends React.Component {
+ constructor() {
+ doSpecialStuffs();
+ }
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `
+ }, {
+ // Has a constructor (2)
+ code: `
+ class Foo extends React.Component {
+ constructor() {
+ foo;
+ }
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `
+ }, {
+ // Use this.bar
+ code: `
+ class Foo extends React.Component {
+ render() {
+ return
{this.bar}
;
+ }
+ }
+ `,
parser: 'babel-eslint'
}, {
// Use this.bar (destructuring)
- code: [
- 'class Foo extends React.Component {',
- ' render() {',
- ' let {props:{foo}, bar} = this;',
- ' return
{foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ render() {
+ let {props:{foo}, bar} = this;
+ return
{foo}
;
+ }
+ }
+ `,
parser: 'babel-eslint'
}, {
// Use this[bar]
- code: [
- 'class Foo extends React.Component {',
- ' render() {',
- ' return
{this[bar]}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ render() {
+ return
{this[bar]}
;
+ }
+ }
+ `,
parser: 'babel-eslint'
}, {
// Use this['bar']
- code: [
- 'class Foo extends React.Component {',
- ' render() {',
- ' return
{this[\'bar\']}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ render() {
+ return
{this['bar']}
;
+ }
+ }
+ `,
parser: 'babel-eslint'
}, {
// Can return null (ES6, React 0.14.0)
- code: [
- 'class Foo extends React.Component {',
- ' render() {',
- ' if (!this.props.foo) {',
- ' return null;',
- ' }',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ render() {
+ if (!this.props.foo) {
+ return null;
+ }
+ return
{this.props.foo}
;
+ }
+ }
+ `,
parser: 'babel-eslint',
settings: {
react: {
@@ -216,16 +216,16 @@ ruleTester.run('prefer-stateless-function', rule, {
}
}, {
// Can return null (ES5, React 0.14.0)
- code: [
- 'var Foo = createReactClass({',
- ' render: function() {',
- ' if (!this.props.foo) {',
- ' return null;',
- ' }',
- ' return
{this.props.foo}
;',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Foo = createReactClass({
+ render: function() {
+ if (!this.props.foo) {
+ return null;
+ }
+ return
{this.props.foo}
;
+ }
+ });
+ `,
settings: {
react: {
version: '0.14.0'
@@ -233,13 +233,13 @@ ruleTester.run('prefer-stateless-function', rule, {
}
}, {
// Can return null (shorthand if in return, React 0.14.0)
- code: [
- 'class Foo extends React.Component {',
- ' render() {',
- ' return true ?
: null;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ render() {
+ return true ?
: null;
+ }
+ }
+ `,
parser: 'babel-eslint',
settings: {
react: {
@@ -247,63 +247,63 @@ ruleTester.run('prefer-stateless-function', rule, {
}
}
}, {
- code: [
- 'export default (Component) => (',
- ' class Test extends React.Component {',
- ' componentDidMount() {}',
- ' render() {',
- ' return
;',
- ' }',
- ' }',
- ');'
- ].join('\n'),
+ code: `
+ export default (Component) => (
+ class Test extends React.Component {
+ componentDidMount() {}
+ render() {
+ return
;
+ }
+ }
+ );
+ `,
parser: 'babel-eslint'
}, {
// Has childContextTypes
- code: [
- 'class Foo extends React.Component {',
- ' render() {',
- ' return
{this.props.children}
;',
- ' }',
- '}',
- 'Foo.childContextTypes = {',
- ' color: PropTypes.string',
- '};'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ render() {
+ return
{this.props.children}
;
+ }
+ }
+ Foo.childContextTypes = {
+ color: PropTypes.string
+ };
+ `,
parser: 'babel-eslint'
}, {
// Uses a decorator
- code: [
- '@foo',
- 'class Foo extends React.Component {',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ @foo
+ class Foo extends React.Component {
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `,
parser: 'babel-eslint'
}, {
// Uses a called decorator
- code: [
- '@foo("bar")',
- 'class Foo extends React.Component {',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ @foo("bar")
+ class Foo extends React.Component {
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `,
parser: 'babel-eslint'
}, {
// Uses multiple decorators
- code: [
- '@foo',
- '@bar()',
- 'class Foo extends React.Component {',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ @foo
+ @bar()
+ class Foo extends React.Component {
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `,
parser: 'babel-eslint'
}
],
@@ -311,37 +311,35 @@ ruleTester.run('prefer-stateless-function', rule, {
invalid: [
{
// Only use this.props
- code: [
- 'class Foo extends React.Component {',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `,
errors: [{
message: 'Component should be written as a pure function'
}]
}, {
- // Only use this[\'props\']
- code: [
- 'class Foo extends React.Component {',
- ' render() {',
- ' return
{this[\'props\'].foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ render() {
+ return
{this['props'].foo}
;
+ }
+ }
+ `,
errors: [{
message: 'Component should be written as a pure function'
}]
}, {
- // Only extend PureComponent without use of props or context
- code: [
- 'class Foo extends React.PureComponent {',
- ' render() {',
- ' return
foo
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.PureComponent {
+ render() {
+ return
foo
;
+ }
+ }
+ `,
options: [{
ignorePureComponents: true
}],
@@ -349,166 +347,155 @@ ruleTester.run('prefer-stateless-function', rule, {
message: 'Component should be written as a pure function'
}]
}, {
- // Extends from PureComponent but no ignorePureComponents option
- code: [
- 'class Foo extends React.PureComponent {',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.PureComponent {
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `,
errors: [{
message: 'Component should be written as a pure function'
}]
}, {
- // Has only displayName (method) and render
- code: [
- 'class Foo extends React.Component {',
- ' static get displayName() {',
- ' return \'Foo\';',
- ' }',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ static get displayName() {
+ return 'Foo';
+ }
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Component should be written as a pure function'
}]
}, {
- // Has only displayName (property) and render
- code: [
- 'class Foo extends React.Component {',
- ' static displayName = \'Foo\';',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ static displayName = 'Foo';
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Component should be written as a pure function'
}]
}, {
- // Has only propTypes (method) and render
- code: [
- 'class Foo extends React.Component {',
- ' static get propTypes() {',
- ' return {',
- ' name: PropTypes.string',
- ' };',
- ' }',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ static get propTypes() {
+ return {
+ name: PropTypes.string
+ };
+ }
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Component should be written as a pure function'
}]
}, {
- // Has only propTypes (property) and render
- code: [
- 'class Foo extends React.Component {',
- ' static propTypes = {',
- ' name: PropTypes.string',
- ' };',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ static propTypes = {
+ name: PropTypes.string
+ };
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Component should be written as a pure function'
}]
}, {
- // Has only props (type annotation) and render
- code: [
- 'class Foo extends React.Component {',
- ' props: {',
- ' name: string;',
- ' };',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ props: {
+ name: string;
+ };
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Component should be written as a pure function'
}]
}, {
- // Has only useless constructor and render
- code: [
- 'class Foo extends React.Component {',
- ' constructor() {',
- ' super();',
- ' }',
- ' render() {',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ constructor() {
+ super();
+ }
+ render() {
+ return
{this.props.foo}
;
+ }
+ }
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Component should be written as a pure function'
}]
}, {
- // Only use this.props and this.context (destructuring)
- code: [
- 'class Foo extends React.Component {',
- ' render() {',
- ' let {props:{foo}, context:{bar}} = this;',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ render() {
+ let {props:{foo}, context:{bar}} = this;
+ return
{this.props.foo}
;
+ }
+ }
+ `,
errors: [{
message: 'Component should be written as a pure function'
}]
}, {
- // Can return null (ES6)
- code: [
- 'class Foo extends React.Component {',
- ' render() {',
- ' if (!this.props.foo) {',
- ' return null;',
- ' }',
- ' return
{this.props.foo}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ render() {
+ if (!this.props.foo) {
+ return null;
+ }
+ return
{this.props.foo}
;
+ }
+ }
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Component should be written as a pure function'
}]
}, {
- // Can return null (ES5)
- code: [
- 'var Foo = createReactClass({',
- ' render: function() {',
- ' if (!this.props.foo) {',
- ' return null;',
- ' }',
- ' return
{this.props.foo}
;',
- ' }',
- '});'
- ].join('\n'),
+ code: `
+ var Foo = createReactClass({
+ render: function() {
+ if (!this.props.foo) {
+ return null;
+ }
+ return
{this.props.foo}
;
+ }
+ });
+ `,
errors: [{
message: 'Component should be written as a pure function'
}]
}, {
- // Can return null (shorthand if in return)
- code: [
- 'class Foo extends React.Component {',
- ' render() {',
- ' return true ?
: null;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends React.Component {
+ render() {
+ return true ?
: null;
+ }
+ }
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Component should be written as a pure function'
diff --git a/tests/lib/rules/react-in-jsx-scope.js b/tests/lib/rules/react-in-jsx-scope.js
index 20694149a7..3d76709fb8 100644
--- a/tests/lib/rules/react-in-jsx-scope.js
+++ b/tests/lib/rules/react-in-jsx-scope.js
@@ -42,17 +42,17 @@ ruleTester.run('react-in-jsx-scope', rule, {
{code: 'var React, App;
;'},
{code: '/** @jsx Foo */ var Foo, App;
;'},
{code: '/** @jsx Foo.Bar */ var Foo, App;
;'},
- {code: [
- 'import React from \'react/addons\';',
- 'const Button = createReactClass({',
- ' render() {',
- ' return (',
- '
{this.props.children} ',
- ' )',
- ' }',
- '});',
- 'export default Button;'
- ].join('\n')},
+ {code: `
+ import React from 'react/addons';
+ const Button = createReactClass({
+ render() {
+ return (
+
{this.props.children}
+ )
+ }
+ });
+ export default Button;
+ `},
{code: 'var Foo, App;
;', settings: settings}
],
invalid: [{
diff --git a/tests/lib/rules/require-optimization.js b/tests/lib/rules/require-optimization.js
index 089a83c12f..b4c1bf7b4c 100644
--- a/tests/lib/rules/require-optimization.js
+++ b/tests/lib/rules/require-optimization.js
@@ -21,168 +21,163 @@ const MESSAGE = 'Component is not optimized. Please add a shouldComponentUpdate
const ruleTester = new RuleTester({parserOptions});
ruleTester.run('react-require-optimization', rule, {
valid: [{
- code: [
- 'class A {}'
- ].join('\n')
- }, {
- code: [
- 'import React from "react";' +
- 'class YourComponent extends React.Component {' +
- 'shouldComponentUpdate () {}' +
- '}'
- ].join('\n')
- }, {
- code: [
- 'import React, {Component} from "react";' +
- 'class YourComponent extends Component {' +
- 'shouldComponentUpdate () {}' +
- '}'
- ].join('\n')
- }, {
- code: [
- 'import React, {Component} from "react";',
- '@reactMixin.decorate(PureRenderMixin)',
- 'class YourComponent extends Component {',
- ' componetnDidMount () {}',
- ' render() {}',
- '}'
- ].join('\n'),
+ code: `
+ class A {}
+ `
+ }, {
+ code: `
+ import React from "react";
+ class YourComponent extends React.Component {
+ shouldComponentUpdate () {}
+ }
+ `
+ }, {
+ code: `
+ import React, {Component} from "react";
+ class YourComponent extends Component {
+ shouldComponentUpdate () {}
+ }
+ `
+ }, {
+ code: `
+ import React, {Component} from "react";
+ @reactMixin.decorate(PureRenderMixin)
+ class YourComponent extends Component {
+ componetnDidMount () {}
+ render() {}
+ }
+ `,
parser: 'babel-eslint'
}, {
- code: [
- 'import React from "react";' +
- 'createReactClass({' +
- 'shouldComponentUpdate: function () {}' +
- '})'
- ].join('\n')
- }, {
- code: [
- 'import React from "react";' +
- 'createReactClass({' +
- 'mixins: [PureRenderMixin]' +
- '})'
- ].join('\n')
- }, {
- code: [
- '@reactMixin.decorate(PureRenderMixin)',
- 'class DecoratedComponent extends Component {' +
- '}'
- ].join('\n'),
+ code: `
+ import React from "react";
+ createReactClass({
+ shouldComponentUpdate: function () {}
+ })
+ `
+ }, {
+ code: `
+ import React from "react";
+ createReactClass({
+ mixins: [PureRenderMixin]
+ })
+ `
+ }, {
+ code: `
+ @reactMixin.decorate(PureRenderMixin)
+ class DecoratedComponent extends Component {}
+ `,
parser: 'babel-eslint'
}, {
- code: [
- 'const FunctionalComponent = function (props) {' +
- 'return
;' +
- '}'
- ].join('\n'),
+ code: `
+ const FunctionalComponent = function (props) {
+ return
;
+ }
+ `,
parser: 'babel-eslint'
}, {
- code: [
- 'function FunctionalComponent(props) {' +
- 'return
;' +
- '}'
- ].join('\n'),
+ code: `
+ function FunctionalComponent(props) {
+ return
;
+ }
+ `,
parser: 'babel-eslint'
}, {
- code: [
- 'const FunctionalComponent = (props) => {' +
- 'return
;' +
- '}'
- ].join('\n'),
+ code: `
+ const FunctionalComponent = (props) => {
+ return
;
+ }
+ `,
parser: 'babel-eslint'
}, {
- code: [
- '@bar',
- '@pureRender',
- '@foo',
- 'class DecoratedComponent extends Component {' +
- '}'
- ].join('\n'),
+ code: `
+ @bar
+ @pureRender
+ @foo
+ class DecoratedComponent extends Component {}
+ `,
parser: 'babel-eslint',
options: [{allowDecorators: ['renderPure', 'pureRender']}]
}, {
- code: [
- 'import React from "react";' +
- 'class YourComponent extends React.PureComponent {}'
- ].join('\n'),
+ code: `
+ import React from "react";
+ class YourComponent extends React.PureComponent {}
+ `,
parser: 'babel-eslint',
options: [{allowDecorators: ['renderPure', 'pureRender']}]
}, {
- code: [
- 'import React, {PureComponent} from "react";' +
- 'class YourComponent extends PureComponent {}'
- ].join('\n'),
+ code: `
+ import React, {PureComponent} from "react";
+ class YourComponent extends PureComponent {}
+ `,
parser: 'babel-eslint',
options: [{allowDecorators: ['renderPure', 'pureRender']}]
}],
invalid: [{
- code: [
- 'import React from "react";' +
- 'class YourComponent extends React.Component {}'
- ].join('\n'),
+ code: `
+ import React from "react";
+ class YourComponent extends React.Component {}
+ `,
errors: [{
message: MESSAGE
}]
}, {
- code: [
- 'import React from "react";',
- 'class YourComponent extends React.Component {',
- ' handleClick() {}',
- ' render() {',
- ' return
123
',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ import React from "react";
+ class YourComponent extends React.Component {
+ handleClick() {}
+ render() {
+ return
123
+ }
+ }
+ `,
parser: 'babel-eslint',
errors: [{
message: MESSAGE
}]
}, {
- code: [
- 'import React, {Component} from "react";' +
- 'class YourComponent extends Component {}'
- ].join('\n'),
+ code: `
+ import React, {Component} from "react";
+ class YourComponent extends Component {}
+ `,
errors: [{
message: MESSAGE
}]
}, {
- code: [
- 'import React from "react";' +
- 'createReactClass({' +
- '})'
- ].join('\n'),
+ code: `
+ import React from "react";
+ createReactClass({})
+ `,
errors: [{
message: MESSAGE
}]
}, {
- code: [
- 'import React from "react";' +
- 'createReactClass({' +
- 'mixins: [RandomMixin]' +
- '})'
- ].join('\n'),
+ code: `
+ import React from "react";
+ createReactClass({
+ mixins: [RandomMixin]
+ })
+ `,
errors: [{
message: MESSAGE
}]
}, {
- code: [
- '@reactMixin.decorate(SomeOtherMixin)',
- 'class DecoratedComponent extends Component {' +
- '}'
- ].join('\n'),
+ code: `
+ @reactMixin.decorate(SomeOtherMixin)
+ class DecoratedComponent extends Component {}
+ `,
errors: [{
message: MESSAGE
}],
parser: 'babel-eslint'
}, {
- code: [
- '@bar',
- '@pure',
- '@foo',
- 'class DecoratedComponent extends Component {' +
- '}'
- ].join('\n'),
+ code: `
+ @bar
+ @pure
+ @foo
+ class DecoratedComponent extends Component {}
+ `,
errors: [{
message: MESSAGE
}],
diff --git a/tests/lib/rules/require-render-return.js b/tests/lib/rules/require-render-return.js
index b3d7d585b8..4d6089fc63 100644
--- a/tests/lib/rules/require-render-return.js
+++ b/tests/lib/rules/require-render-return.js
@@ -31,92 +31,92 @@ ruleTester.run('require-render-return', rule, {
valid: [{
// ES6 class
- code: [
- 'class Hello extends React.Component {',
- ' render() {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '}'
- ].join('\n')
+ code: `
+ class Hello extends React.Component {
+ render() {
+ return
Hello {this.props.name}
;
+ }
+ }
+ `
}, {
// ES6 class with render property
- code: [
- 'class Hello extends React.Component {',
- ' render = () => {',
- ' return
Hello {this.props.name}
;',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ render = () => {
+ return
Hello {this.props.name}
;
+ }
+ }
+ `,
parser: 'babel-eslint'
}, {
// ES6 class with render property (implicit return)
- code: [
- 'class Hello extends React.Component {',
- ' render = () => (',
- '
Hello {this.props.name}
',
- ' )',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ render = () => (
+
Hello {this.props.name}
+ )
+ }
+ `,
parser: 'babel-eslint'
}, {
// ES5 class
- code: [
- 'var Hello = createReactClass({',
- ' displayName: \'Hello\',',
- ' render: function() {',
- ' return
',
- ' }',
- '});'
- ].join('\n')
+ code: `
+ var Hello = createReactClass({
+ displayName: 'Hello',
+ render: function() {
+ return
+ }
+ });
+ `
}, {
// Stateless function
- code: [
- 'function Hello() {',
- ' return
;',
- '}'
- ].join('\n')
+ code: `
+ function Hello() {
+ return
;
+ }
+ `
}, {
// Stateless arrow function
- code: [
- 'var Hello = () => (',
- '
',
- ');'
- ].join('\n'),
+ code: `
+ var Hello = () => (
+
+ );
+ `,
parser: 'babel-eslint'
}, {
// Return in a switch...case
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' switch (this.props.name) {',
- ' case \'Foo\':',
- ' return
Hello Foo
;',
- ' default:',
- ' return
Hello {this.props.name}
;',
- ' }',
- ' }',
- '});'
- ].join('\n')
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ switch (this.props.name) {
+ case 'Foo':
+ return
Hello Foo
;
+ default:
+ return
Hello {this.props.name}
;
+ }
+ }
+ });
+ `
}, {
// Return in a if...else
- code: [
- 'var Hello = createReactClass({',
- ' render: function() {',
- ' if (this.props.name === \'Foo\') {',
- ' return
Hello Foo
;',
- ' } else {',
- ' return
Hello {this.props.name}
;',
- ' }',
- ' }',
- '});'
- ].join('\n')
+ code: `
+ var Hello = createReactClass({
+ render: function() {
+ if (this.props.name === 'Foo') {
+ return
Hello Foo
;
+ } else {
+ return
Hello {this.props.name}
;
+ }
+ }
+ });
+ `
}, {
// Not a React component
- code: [
- 'class Hello {',
- ' render() {}',
- '}'
- ].join('\n')
+ code: `
+ class Hello {
+ render() {}
+ }
+ `
}, {
// ES6 class without a render method
code: 'class Hello extends React.Component {}'
@@ -125,66 +125,66 @@ ruleTester.run('require-render-return', rule, {
code: 'var Hello = createReactClass({});'
}, {
// ES5 class with an imported render method
- code: [
- 'var render = require(\'./render\');',
- 'var Hello = createReactClass({',
- ' render',
- '});'
- ].join('\n')
+ code: `
+ var render = require('./render');
+ var Hello = createReactClass({
+ render
+ });
+ `
}, {
// Invalid render method (but accepted by Babel)
- code: [
- 'class Foo extends Component {',
- ' render',
- '}'
- ].join('\n'),
+ code: `
+ class Foo extends Component {
+ render
+ }
+ `,
parser: 'babel-eslint'
}],
invalid: [{
// Missing return in ES5 class
- code: [
- 'var Hello = createReactClass({',
- ' displayName: \'Hello\',',
- ' render: function() {}',
- '});'
- ].join('\n'),
+ code: `
+ var Hello = createReactClass({
+ displayName: 'Hello',
+ render: function() {}
+ });
+ `,
errors: [{
message: 'Your render method should have return statement'
}]
}, {
// Missing return in ES6 class
- code: [
- 'class Hello extends React.Component {',
- ' render() {} ',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ render() {}
+ }
+ `,
errors: [{
message: 'Your render method should have return statement'
}]
}, {
// Missing return (but one is present in a sub-function)
- code: [
- 'class Hello extends React.Component {',
- ' render() {',
- ' const names = this.props.names.map(function(name) {',
- ' return
{name}
',
- ' });',
- ' } ',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ render() {
+ const names = this.props.names.map(function(name) {
+ return
{name}
+ });
+ }
+ }
+ `,
errors: [{
message: 'Your render method should have return statement'
}]
}, {
// Missing return ES6 class render property
- code: [
- 'class Hello extends React.Component {',
- ' render = () => {',
- '
Hello {this.props.name}
',
- ' }',
- '}'
- ].join('\n'),
+ code: `
+ class Hello extends React.Component {
+ render = () => {
+
Hello {this.props.name}
+ }
+ }
+ `,
parser: 'babel-eslint',
errors: [{
message: 'Your render method should have return statement'