@@ -307,6 +307,47 @@ 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 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
+ `
310
351
} ] ,
311
352
312
353
invalid : [ {
@@ -664,5 +705,62 @@ ruleTester.run('boolean-prop-naming', rule, {
664
705
errors : [ {
665
706
message : 'It is better if your prop (something) matches this pattern: (^is[A-Z]([A-Za-z0-9]?)+)'
666
707
} ]
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
+ } ]
667
765
} ]
668
766
} ) ;
0 commit comments