@@ -17,6 +17,7 @@ const parserOptions = {
17
17
ecmaVersion : 6 ,
18
18
sourceType : 'module' ,
19
19
ecmaFeatures : {
20
+ experimentalObjectRestSpread : true ,
20
21
jsx : true
21
22
}
22
23
} ;
@@ -145,6 +146,31 @@ ruleTester.run('boolean-prop-naming', rule, {
145
146
rule : '^is[A-Z]([A-Za-z0-9]?)+'
146
147
} ] ,
147
148
parser : 'babel-eslint'
149
+ } , {
150
+ // ES6 components with static class properties and Object.spread syntax in PropTypes
151
+ code : `
152
+ const spreadProps = { aSpreadProp: PropTypes.string };
153
+ class Hello extends React.Component {
154
+ static propTypes = {isSomething: PropTypes.bool, ...spreadProps};
155
+ render () { return <div />; }
156
+ }
157
+ ` ,
158
+ options : [ {
159
+ rule : '^is[A-Z]([A-Za-z0-9]?)+'
160
+ } ] ,
161
+ parser : 'babel-eslint'
162
+ } , {
163
+ // ES6 components as Component with boolean PropTypes and Object.spread syntax in PropTypes
164
+ code : `
165
+ const spreadProps = { aSpreadProp: PropTypes.string };
166
+ class Hello extends Component {
167
+ render () { return <div />; }
168
+ }
169
+ Hello.propTypes = {isSomething: PropTypes.bool, ...spreadProps}
170
+ ` ,
171
+ options : [ {
172
+ rule : '^is[A-Z]([A-Za-z0-9]?)+'
173
+ } ]
148
174
} , {
149
175
// ES6 components with static class properties and React.PropTypes
150
176
code : `
@@ -361,6 +387,37 @@ ruleTester.run('boolean-prop-naming', rule, {
361
387
errors : [ {
362
388
message : 'Prop name (something) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)'
363
389
} ]
390
+ } , {
391
+ // ES6 components as React.Component with non-boolean PropTypes and Object.spread syntax
392
+ code : `
393
+ const spreadProps = { aSpreadProp: PropTypes.string };
394
+ class Hello extends Component {
395
+ render () { return <div />; }
396
+ }
397
+ Hello.propTypes = {something: PropTypes.bool, ...spreadProps}
398
+ ` ,
399
+ options : [ {
400
+ rule : '^is[A-Z]([A-Za-z0-9]?)+'
401
+ } ] ,
402
+ errors : [ {
403
+ message : 'Prop name (something) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)'
404
+ } ]
405
+ } , {
406
+ // ES6 components as React.Component with static class property, non-boolean PropTypes, and Object.spread syntax
407
+ code : `
408
+ const spreadProps = { aSpreadProp: PropTypes.string };
409
+ class Hello extends React.Component {
410
+ static propTypes = {something: PropTypes.bool, ...spreadProps};
411
+ render () { return <div />; }
412
+ }
413
+ ` ,
414
+ options : [ {
415
+ rule : '^is[A-Z]([A-Za-z0-9]?)+'
416
+ } ] ,
417
+ parser : 'babel-eslint' ,
418
+ errors : [ {
419
+ message : 'Prop name (something) doesn\'t match rule (^is[A-Z]([A-Za-z0-9]?)+)'
420
+ } ]
364
421
} , {
365
422
// ES6 components as React.Component with non-boolean PropTypes
366
423
code : `
0 commit comments