@@ -307,6 +307,31 @@ ruleTester.run('boolean-prop-naming', rule, {
307
307
options : [ {
308
308
rule : '^(is|has)[A-Z]([A-Za-z0-9]?)+'
309
309
} ]
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
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'
310
335
} ] ,
311
336
312
337
invalid : [ {
@@ -664,5 +689,41 @@ ruleTester.run('boolean-prop-naming', rule, {
664
689
errors : [ {
665
690
message : 'It is better if your prop (something) matches this pattern: (^is[A-Z]([A-Za-z0-9]?)+)'
666
691
} ]
692
+ } , {
693
+ // Works when a prop isRequired in ES5.
694
+ code : `
695
+ var Hello = createReactClass({
696
+ propTypes: {something: PropTypes.bool.isRequired},
697
+ render: function() { return <div />; }
698
+ });
699
+ ` ,
700
+ options : [ {
701
+ rule : '^is[A-Z]([A-Za-z0-9]?)+'
702
+ } ] ,
703
+ errors : [ {
704
+ message : 'Prop name (something) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)'
705
+ } ]
706
+ } , {
707
+ // Works when a prop isRequired in ES6.
708
+ code : `
709
+ class Hello extends React.Component {
710
+ static propTypes = {
711
+ something: PropTypes.bool.isRequired
712
+ };
713
+
714
+ render() {
715
+ return (
716
+ <div />
717
+ );
718
+ }
719
+ }
720
+ ` ,
721
+ options : [ {
722
+ rule : '^is[A-Z]([A-Za-z0-9]?)+'
723
+ } ] ,
724
+ parser : 'babel-eslint' ,
725
+ errors : [ {
726
+ message : 'Prop name (something) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)'
727
+ } ]
667
728
} ]
668
729
} ) ;
0 commit comments