@@ -307,6 +307,47 @@ ruleTester.run('boolean-prop-naming', rule, {
307307 options : [ {
308308 rule : '^(is|has)[A-Z]([A-Za-z0-9]?)+'
309309 } ]
310+ } , {
311+ // Ensure the rule does not throw when a prop isRequired when ES5.
312+ code : `
313+ var Hello = createReactClass({
314+ propTypes: {isSomething: PropTypes.bool.isRequired, hasValue: PropTypes.bool.isRequired},
315+ render: function() { return <div />; }
316+ });
317+ `
318+ } , {
319+ // Ensure the rule does not throw when a prop isRequired when ES6 with static properties.
320+ code : `
321+ class Hello extends React.Component {
322+ static propTypes = {
323+ isSomething: PropTypes.bool.isRequired,
324+ hasValue: PropTypes.bool.isRequired
325+ };
326+
327+ render() {
328+ return (
329+ <div />
330+ );
331+ }
332+ }
333+ ` ,
334+ parser : 'babel-eslint'
335+ } , {
336+ // Ensure the rule does not throw when a prop isRequired when ES6 without static properties.
337+ code : `
338+ class Hello extends React.Component {
339+ render() {
340+ return (
341+ <div />
342+ );
343+ }
344+ }
345+
346+ Hello.propTypes = {
347+ isSomething: PropTypes.bool.isRequired,
348+ hasValue: PropTypes.bool.isRequired
349+ }
350+ `
310351 } ] ,
311352
312353 invalid : [ {
@@ -664,5 +705,62 @@ ruleTester.run('boolean-prop-naming', rule, {
664705 errors : [ {
665706 message : 'It is better if your prop (something) matches this pattern: (^is[A-Z]([A-Za-z0-9]?)+)'
666707 } ]
708+ } , {
709+ // Works when a prop isRequired in ES5.
710+ code : `
711+ var Hello = createReactClass({
712+ propTypes: {something: PropTypes.bool.isRequired},
713+ render: function() { return <div />; }
714+ });
715+ ` ,
716+ options : [ {
717+ rule : '^is[A-Z]([A-Za-z0-9]?)+'
718+ } ] ,
719+ errors : [ {
720+ message : 'Prop name (something) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)'
721+ } ]
722+ } , {
723+ // Works when a prop isRequired in ES6 with static properties.
724+ code : `
725+ class Hello extends React.Component {
726+ static propTypes = {
727+ something: PropTypes.bool.isRequired
728+ };
729+
730+ render() {
731+ return (
732+ <div />
733+ );
734+ }
735+ }
736+ ` ,
737+ options : [ {
738+ rule : '^is[A-Z]([A-Za-z0-9]?)+'
739+ } ] ,
740+ parser : 'babel-eslint' ,
741+ errors : [ {
742+ message : 'Prop name (something) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)'
743+ } ]
744+ } , {
745+ // Works when a prop isRequired in ES6 without static properties.
746+ code : `
747+ class Hello extends React.Component {
748+ render() {
749+ return (
750+ <div />
751+ );
752+ }
753+ }
754+
755+ Hello.propTypes = {
756+ something: PropTypes.bool.isRequired
757+ }
758+ ` ,
759+ options : [ {
760+ rule : '^is[A-Z]([A-Za-z0-9]?)+'
761+ } ] ,
762+ errors : [ {
763+ message : 'Prop name (something) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)'
764+ } ]
667765 } ]
668766} ) ;
0 commit comments