@@ -26,7 +26,6 @@ const ERROR_MESSAGE_LIFECYCLE_METHOD = 'Typo in component lifecycle method decla
26
26
27
27
const ruleTester = new RuleTester ( ) ;
28
28
ruleTester . run ( 'no-typos' , rule , {
29
-
30
29
valid : [ {
31
30
code : [
32
31
'class First {' ,
@@ -38,8 +37,7 @@ ruleTester.run('no-typos', rule, {
38
37
] . join ( '\n' ) ,
39
38
parser : 'babel-eslint' ,
40
39
parserOptions : parserOptions
41
- } ,
42
- {
40
+ } , {
43
41
code : [
44
42
'class First {}' ,
45
43
'First.PropTypes = {key: "myValue"};' ,
@@ -248,6 +246,86 @@ ruleTester.run('no-typos', rule, {
248
246
}
249
247
function a() {}
250
248
` ,
249
+ parser : 'babel-eslint' ,
250
+ parserOptions : parserOptions
251
+ } , {
252
+ code : `class Component extends React.Component {};
253
+ Component.propTypes = {
254
+ a: PropTypes.number.isRequired
255
+ }
256
+ ` ,
257
+ parser : 'babel-eslint' ,
258
+ parserOptions : parserOptions
259
+ } , {
260
+ code : `class Component extends React.Component {};
261
+ Component.propTypes = {
262
+ e: PropTypes.shape({
263
+ ea: PropTypes.string,
264
+ })
265
+ }
266
+ ` ,
267
+ parser : 'babel-eslint' ,
268
+ parserOptions : parserOptions
269
+ } , {
270
+ code : `class Component extends React.Component {};
271
+ Component.propTypes = {
272
+ a: PropTypes.string,
273
+ b: PropTypes.string.isRequired,
274
+ c: PropTypes.shape({
275
+ d: PropTypes.string,
276
+ e: PropTypes.number.isRequired,
277
+ }).isRequired
278
+ }
279
+ ` ,
280
+ parser : 'babel-eslint' ,
281
+ parserOptions : parserOptions
282
+ } , {
283
+ code : `class Component extends React.Component {};
284
+ Component.propTypes = {
285
+ a: PropTypes.oneOfType([
286
+ PropTypes.string,
287
+ PropTypes.number
288
+ ])
289
+ }
290
+ ` ,
291
+ parser : 'babel-eslint' ,
292
+ parserOptions : parserOptions
293
+ } , {
294
+ code : `class Component extends React.Component {};
295
+ Component.propTypes = {
296
+ a: PropTypes.oneOf([
297
+ 'hello',
298
+ 'hi'
299
+ ])
300
+ }
301
+ ` ,
302
+ parser : 'babel-eslint' ,
303
+ parserOptions : parserOptions
304
+ } , {
305
+ code : `class Component extends React.Component {};
306
+ Component.childContextTypes = {
307
+ a: PropTypes.string,
308
+ b: PropTypes.string.isRequired,
309
+ c: PropTypes.shape({
310
+ d: PropTypes.string,
311
+ e: PropTypes.number.isRequired,
312
+ }).isRequired
313
+ }
314
+ ` ,
315
+ parser : 'babel-eslint' ,
316
+ parserOptions : parserOptions
317
+ } , {
318
+ code : `class Component extends React.Component {};
319
+ Component.contextTypes = {
320
+ a: PropTypes.string,
321
+ b: PropTypes.string.isRequired,
322
+ c: PropTypes.shape({
323
+ d: PropTypes.string,
324
+ e: PropTypes.number.isRequired,
325
+ }).isRequired
326
+ }
327
+ ` ,
328
+ parser : 'babel-eslint' ,
251
329
parserOptions : parserOptions
252
330
} ] ,
253
331
@@ -552,5 +630,106 @@ ruleTester.run('no-typos', rule, {
552
630
message : ERROR_MESSAGE_LIFECYCLE_METHOD ,
553
631
type : 'MethodDefinition'
554
632
} ]
633
+ } , {
634
+ code : `class Component extends React.Component {};
635
+ Component.propTypes = {
636
+ a: PropTypes.Number.isRequired
637
+ }
638
+ ` ,
639
+ parser : 'babel-eslint' ,
640
+ parserOptions : parserOptions ,
641
+ errors : [ {
642
+ message : 'Typo in declared prop type: Number'
643
+ } ]
644
+ } , {
645
+ code : `class Component extends React.Component {};
646
+ Component.propTypes = {
647
+ a: PropTypes.number.isrequired
648
+ }
649
+ ` ,
650
+ parser : 'babel-eslint' ,
651
+ parserOptions : parserOptions ,
652
+ errors : [ {
653
+ message : 'Typo in prop type chain qualifier: isrequired'
654
+ } ]
655
+ } , {
656
+ code : `class Component extends React.Component {};
657
+ Component.propTypes = {
658
+ a: PropTypes.Number
659
+ }
660
+ ` ,
661
+ parser : 'babel-eslint' ,
662
+ parserOptions : parserOptions ,
663
+ errors : [ {
664
+ message : 'Typo in declared prop type: Number'
665
+ } ]
666
+ } , {
667
+ code : `class Component extends React.Component {};
668
+ Component.propTypes = {
669
+ a: PropTypes.shape({
670
+ b: PropTypes.String,
671
+ c: PropTypes.number.isRequired,
672
+ })
673
+ }
674
+ ` ,
675
+ parser : 'babel-eslint' ,
676
+ parserOptions : parserOptions ,
677
+ errors : [ {
678
+ message : 'Typo in declared prop type: String'
679
+ } ]
680
+ } , {
681
+ code : `class Component extends React.Component {};
682
+ Component.propTypes = {
683
+ a: PropTypes.oneOfType([
684
+ PropTypes.bools,
685
+ PropTypes.number,
686
+ ])
687
+ }
688
+ ` ,
689
+ parser : 'babel-eslint' ,
690
+ parserOptions : parserOptions ,
691
+ errors : [ {
692
+ message : 'Typo in declared prop type: bools'
693
+ } ]
694
+ } , {
695
+ code : `class Component extends React.Component {};
696
+ Component.propTypes = {
697
+ a: PropTypes.bools,
698
+ b: PropTypes.Array,
699
+ c: PropTypes.function,
700
+ d: PropTypes.objectof,
701
+ }
702
+ ` ,
703
+ parser : 'babel-eslint' ,
704
+ parserOptions : parserOptions ,
705
+ errors : [ {
706
+ message : 'Typo in declared prop type: bools'
707
+ } , {
708
+ message : 'Typo in declared prop type: Array'
709
+ } , {
710
+ message : 'Typo in declared prop type: function'
711
+ } , {
712
+ message : 'Typo in declared prop type: objectof'
713
+ } ]
714
+ } , {
715
+ code : `class Component extends React.Component {};
716
+ Component.childContextTypes = {
717
+ a: PropTypes.bools,
718
+ b: PropTypes.Array,
719
+ c: PropTypes.function,
720
+ d: PropTypes.objectof,
721
+ }
722
+ ` ,
723
+ parser : 'babel-eslint' ,
724
+ parserOptions : parserOptions ,
725
+ errors : [ {
726
+ message : 'Typo in declared prop type: bools'
727
+ } , {
728
+ message : 'Typo in declared prop type: Array'
729
+ } , {
730
+ message : 'Typo in declared prop type: function'
731
+ } , {
732
+ message : 'Typo in declared prop type: objectof'
733
+ } ]
555
734
} ]
556
735
} ) ;
0 commit comments