From 83bd2906e2b4f4c386d1bbef91d4c087e5d7eb8b Mon Sep 17 00:00:00 2001 From: xeodou Date: Wed, 12 Oct 2016 14:52:36 +0800 Subject: [PATCH 1/3] Valid self reference jsx element. --- lib/rules/forbid-component-props.js | 2 +- tests/lib/rules/forbid-component-props.js | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/rules/forbid-component-props.js b/lib/rules/forbid-component-props.js index 4218112cb3..8d6ba9f9b3 100644 --- a/lib/rules/forbid-component-props.js +++ b/lib/rules/forbid-component-props.js @@ -48,7 +48,7 @@ module.exports = { return { JSXAttribute: function(node) { var tag = node.parent.name.name; - if (tag[0] !== tag[0].toUpperCase()) { + if (tag && tag[0] !== tag[0].toUpperCase()) { // This is a DOM node, not a Component, so exit. return; } diff --git a/tests/lib/rules/forbid-component-props.js b/tests/lib/rules/forbid-component-props.js index 9483f80e4e..cacf40f8a7 100644 --- a/tests/lib/rules/forbid-component-props.js +++ b/tests/lib/rules/forbid-component-props.js @@ -81,6 +81,17 @@ ruleTester.run('forbid-component-props', rule, { ].join('\n'), options: [{forbid: ['style', 'foo']}], parserOptions: parserOptions + }, { + code: [ + 'var First = React.createClass({', + ' propTypes: externalPropTypes,', + ' render: function() {', + ' return ;', + ' }', + '});' + ].join('\n'), + options: [{forbid: ['style', 'foo']}], + parserOptions: parserOptions }], invalid: [{ From daf772641e0f93e0045a835f397c8abb89a22687 Mon Sep 17 00:00:00 2001 From: xeodou Date: Wed, 12 Oct 2016 15:28:54 +0800 Subject: [PATCH 2/3] Add class based component test. --- tests/lib/rules/forbid-component-props.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tests/lib/rules/forbid-component-props.js b/tests/lib/rules/forbid-component-props.js index cacf40f8a7..e80d4afef1 100644 --- a/tests/lib/rules/forbid-component-props.js +++ b/tests/lib/rules/forbid-component-props.js @@ -86,11 +86,20 @@ ruleTester.run('forbid-component-props', rule, { 'var First = React.createClass({', ' propTypes: externalPropTypes,', ' render: function() {', - ' return ;', + ' return ;', ' }', '});' ].join('\n'), - options: [{forbid: ['style', 'foo']}], + parserOptions: parserOptions + }, { + code: [ + 'class First extends React.createClass {', + ' render() {', + ' return ;', + ' }', + '}' + ].join('\n'), + options: [{forbid: ['style']}], parserOptions: parserOptions }], From 9002a7e61fcdad3e8a3f7f1dd8f14bc8883c54ca Mon Sep 17 00:00:00 2001 From: xeodou Date: Wed, 12 Oct 2016 15:50:01 +0800 Subject: [PATCH 3/3] Add state less component test. --- tests/lib/rules/forbid-component-props.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/lib/rules/forbid-component-props.js b/tests/lib/rules/forbid-component-props.js index e80d4afef1..227e4e9055 100644 --- a/tests/lib/rules/forbid-component-props.js +++ b/tests/lib/rules/forbid-component-props.js @@ -101,6 +101,13 @@ ruleTester.run('forbid-component-props', rule, { ].join('\n'), options: [{forbid: ['style']}], parserOptions: parserOptions + }, { + code: [ + 'const First = (props) => (', + ' ', + ');' + ].join('\n'), + parserOptions: parserOptions }], invalid: [{