Skip to content

Commit

Permalink
Fix never option of prefer-es6-class
Browse files Browse the repository at this point in the history
  • Loading branch information
yannickcr committed Dec 21, 2015
1 parent 9ba1910 commit 53f32af
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 9 deletions.
11 changes: 8 additions & 3 deletions lib/rules/prefer-es6-class.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* @fileoverview Prefer es6 class instead of createClass for React Component
* @fileoverview Enforce ES5 or ES6 class for React Components
* @author Dan Hamilton
*/
'use strict';
Expand All @@ -17,11 +17,16 @@ module.exports = Components.detect(function(context, components, utils) {
ObjectExpression: function(node) {
if (utils.isES5Component(node) && configuration === 'always') {
context.report(node, 'Component should use es6 class instead of createClass');
} else if (utils.isES6Component(node) && configuration === 'never') {
}
},
ClassDeclaration: function(node) {
if (utils.isES6Component(node) && configuration === 'never') {
context.report(node, 'Component should use createClass instead of es6 class');
}
}
};
});

module.exports.schema = [];
module.exports.schema = [{
enum: ['always', 'never']
}];
55 changes: 49 additions & 6 deletions tests/lib/rules/prefer-es6-class.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,7 @@ ruleTester.run('prefer-es6-class', rule, {
'Hello.displayName = \'Hello\''
].join('\n'),
parserOptions: parserOptions
},
{
}, {
code: [
'export default class Hello extends React.Component {',
' render() {',
Expand All @@ -49,15 +48,33 @@ ruleTester.run('prefer-es6-class', rule, {
'Hello.displayName = \'Hello\''
].join('\n'),
parserOptions: parserOptions
},
{
}, {
code: [
'var Hello = "foo";',
'module.exports = {};'
].join('\n'),
parserOptions: parserOptions
}
],
}, {
code: [
'var Hello = React.createClass({',
' render: function() {',
' return <div>Hello {this.props.name}</div>;',
' }',
'});'
].join('\n'),
options: ['never'],
parserOptions: parserOptions
}, {
code: [
'class Hello extends React.Component {',
' render() {',
' return <div>Hello {this.props.name}</div>;',
' }',
'}'
].join('\n'),
options: ['always'],
parserOptions: parserOptions
}],

invalid: [{
code: [
Expand All @@ -72,5 +89,31 @@ ruleTester.run('prefer-es6-class', rule, {
errors: [{
message: 'Component should use es6 class instead of createClass'
}]
}, {
code: [
'var Hello = React.createClass({',
' render: function() {',
' return <div>Hello {this.props.name}</div>;',
' }',
'});'
].join('\n'),
options: ['always'],
parserOptions: parserOptions,
errors: [{
message: 'Component should use es6 class instead of createClass'
}]
}, {
code: [
'class Hello extends React.Component {',
' render() {',
' return <div>Hello {this.props.name}</div>;',
' }',
'}'
].join('\n'),
options: ['never'],
parserOptions: parserOptions,
errors: [{
message: 'Component should use createClass instead of es6 class'
}]
}
]});

0 comments on commit 53f32af

Please sign in to comment.