@@ -27,7 +27,8 @@ const parserOptions = {
27
27
28
28
const ERROR_MESSAGE = 'Typo in static class property declaration' ;
29
29
const ERROR_MESSAGE_ES5 = 'Typo in property declaration' ;
30
- const ERROR_MESSAGE_LIFECYCLE_METHOD = ( { actual, expected} ) => `Typo in component lifecycle method declaration: ${ actual } should be ${ expected } ` ;
30
+ const ERROR_MESSAGE_LIFECYCLE_METHOD = ( actual , expected ) => `Typo in component lifecycle method declaration: ${ actual } should be ${ expected } ` ;
31
+ const ERROR_MESSAGE_STATIC = method => `Lifecycle method should be static: ${ method } ` ;
31
32
32
33
const ruleTester = new RuleTester ( ) ;
33
34
ruleTester . run ( 'no-typos' , rule , {
@@ -190,6 +191,7 @@ ruleTester.run('no-typos', rule, {
190
191
} , {
191
192
code : `
192
193
class Hello extends React.Component {
194
+ static getDerivedStateFromProps() { }
193
195
componentWillMount() { }
194
196
componentDidMount() { }
195
197
componentWillReceiveProps() { }
@@ -840,43 +842,43 @@ ruleTester.run('no-typos', rule, {
840
842
` ,
841
843
parserOptions,
842
844
errors : [ {
843
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'GetDerivedStateFromProps' , expected : 'getDerivedStateFromProps' } ) ,
845
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'GetDerivedStateFromProps' , 'getDerivedStateFromProps' ) ,
844
846
type : 'MethodDefinition'
845
847
} , {
846
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentWillMount' , expected : 'componentWillMount' } ) ,
848
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentWillMount' , 'componentWillMount' ) ,
847
849
type : 'MethodDefinition'
848
850
} , {
849
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'UNSAFE_ComponentWillMount' , expected : 'UNSAFE_componentWillMount' } ) ,
851
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'UNSAFE_ComponentWillMount' , 'UNSAFE_componentWillMount' ) ,
850
852
type : 'MethodDefinition'
851
853
} , {
852
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentDidMount' , expected : 'componentDidMount' } ) ,
854
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentDidMount' , 'componentDidMount' ) ,
853
855
type : 'MethodDefinition'
854
856
} , {
855
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentWillReceiveProps' , expected : 'componentWillReceiveProps' } ) ,
857
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentWillReceiveProps' , 'componentWillReceiveProps' ) ,
856
858
type : 'MethodDefinition'
857
859
} , {
858
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'UNSAFE_ComponentWillReceiveProps' , expected : 'UNSAFE_componentWillReceiveProps' } ) ,
860
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'UNSAFE_ComponentWillReceiveProps' , 'UNSAFE_componentWillReceiveProps' ) ,
859
861
type : 'MethodDefinition'
860
862
} , {
861
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ShouldComponentUpdate' , expected : 'shouldComponentUpdate' } ) ,
863
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ShouldComponentUpdate' , 'shouldComponentUpdate' ) ,
862
864
type : 'MethodDefinition'
863
865
} , {
864
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentWillUpdate' , expected : 'componentWillUpdate' } ) ,
866
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentWillUpdate' , 'componentWillUpdate' ) ,
865
867
type : 'MethodDefinition'
866
868
} , {
867
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'UNSAFE_ComponentWillUpdate' , expected : 'UNSAFE_componentWillUpdate' } ) ,
869
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'UNSAFE_ComponentWillUpdate' , 'UNSAFE_componentWillUpdate' ) ,
868
870
type : 'MethodDefinition'
869
871
} , {
870
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'GetSnapshotBeforeUpdate' , expected : 'getSnapshotBeforeUpdate' } ) ,
872
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'GetSnapshotBeforeUpdate' , 'getSnapshotBeforeUpdate' ) ,
871
873
type : 'MethodDefinition'
872
874
} , {
873
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentDidUpdate' , expected : 'componentDidUpdate' } ) ,
875
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentDidUpdate' , 'componentDidUpdate' ) ,
874
876
type : 'MethodDefinition'
875
877
} , {
876
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentDidCatch' , expected : 'componentDidCatch' } ) ,
878
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentDidCatch' , 'componentDidCatch' ) ,
877
879
type : 'MethodDefinition'
878
880
} , {
879
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentWillUnmount' , expected : 'componentWillUnmount' } ) ,
881
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentWillUnmount' , 'componentWillUnmount' ) ,
880
882
type : 'MethodDefinition'
881
883
} ]
882
884
} , {
@@ -902,46 +904,46 @@ ruleTester.run('no-typos', rule, {
902
904
` ,
903
905
parserOptions,
904
906
errors : [ {
905
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'Getderivedstatefromprops' , expected : 'getDerivedStateFromProps' } ) ,
907
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'Getderivedstatefromprops' , 'getDerivedStateFromProps' ) ,
906
908
type : 'MethodDefinition'
907
909
} , {
908
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'Componentwillmount' , expected : 'componentWillMount' } ) ,
910
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'Componentwillmount' , 'componentWillMount' ) ,
909
911
type : 'MethodDefinition'
910
912
} , {
911
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'UNSAFE_Componentwillmount' , expected : 'UNSAFE_componentWillMount' } ) ,
913
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'UNSAFE_Componentwillmount' , 'UNSAFE_componentWillMount' ) ,
912
914
type : 'MethodDefinition'
913
915
} , {
914
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'Componentdidmount' , expected : 'componentDidMount' } ) ,
916
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'Componentdidmount' , 'componentDidMount' ) ,
915
917
type : 'MethodDefinition'
916
918
} , {
917
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'Componentwillreceiveprops' , expected : 'componentWillReceiveProps' } ) ,
919
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'Componentwillreceiveprops' , 'componentWillReceiveProps' ) ,
918
920
type : 'MethodDefinition'
919
921
} , {
920
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'UNSAFE_Componentwillreceiveprops' , expected : 'UNSAFE_componentWillReceiveProps' } ) ,
922
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'UNSAFE_Componentwillreceiveprops' , 'UNSAFE_componentWillReceiveProps' ) ,
921
923
type : 'MethodDefinition'
922
924
} , {
923
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'Shouldcomponentupdate' , expected : 'shouldComponentUpdate' } ) ,
925
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'Shouldcomponentupdate' , 'shouldComponentUpdate' ) ,
924
926
type : 'MethodDefinition'
925
927
} , {
926
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'Componentwillupdate' , expected : 'componentWillUpdate' } ) ,
928
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'Componentwillupdate' , 'componentWillUpdate' ) ,
927
929
type : 'MethodDefinition'
928
930
} , {
929
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'UNSAFE_Componentwillupdate' , expected : 'UNSAFE_componentWillUpdate' } ) ,
931
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'UNSAFE_Componentwillupdate' , 'UNSAFE_componentWillUpdate' ) ,
930
932
type : 'MethodDefinition'
931
933
} , {
932
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'Getsnapshotbeforeupdate' , expected : 'getSnapshotBeforeUpdate' } ) ,
934
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'Getsnapshotbeforeupdate' , 'getSnapshotBeforeUpdate' ) ,
933
935
type : 'MethodDefinition'
934
936
} , {
935
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'Componentdidupdate' , expected : 'componentDidUpdate' } ) ,
937
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'Componentdidupdate' , 'componentDidUpdate' ) ,
936
938
type : 'MethodDefinition'
937
939
} , {
938
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'Componentdidcatch' , expected : 'componentDidCatch' } ) ,
940
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'Componentdidcatch' , 'componentDidCatch' ) ,
939
941
type : 'MethodDefinition'
940
942
} , {
941
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'Componentwillunmount' , expected : 'componentWillUnmount' } ) ,
943
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'Componentwillunmount' , 'componentWillUnmount' ) ,
942
944
type : 'MethodDefinition'
943
945
} , {
944
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'Render' , expected : 'render' } ) ,
946
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'Render' , 'render' ) ,
945
947
nodeType : 'MethodDefinition'
946
948
} ]
947
949
} , {
@@ -967,43 +969,43 @@ ruleTester.run('no-typos', rule, {
967
969
` ,
968
970
parserOptions,
969
971
errors : [ {
970
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'getderivedstatefromprops' , expected : 'getDerivedStateFromProps' } ) ,
972
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'getderivedstatefromprops' , 'getDerivedStateFromProps' ) ,
971
973
type : 'MethodDefinition'
972
974
} , {
973
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'componentwillmount' , expected : 'componentWillMount' } ) ,
975
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'componentwillmount' , 'componentWillMount' ) ,
974
976
type : 'MethodDefinition'
975
977
} , {
976
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'unsafe_componentwillmount' , expected : 'UNSAFE_componentWillMount' } ) ,
978
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'unsafe_componentwillmount' , 'UNSAFE_componentWillMount' ) ,
977
979
type : 'MethodDefinition'
978
980
} , {
979
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'componentdidmount' , expected : 'componentDidMount' } ) ,
981
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'componentdidmount' , 'componentDidMount' ) ,
980
982
type : 'MethodDefinition'
981
983
} , {
982
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'componentwillreceiveprops' , expected : 'componentWillReceiveProps' } ) ,
984
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'componentwillreceiveprops' , 'componentWillReceiveProps' ) ,
983
985
type : 'MethodDefinition'
984
986
} , {
985
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'unsafe_componentwillreceiveprops' , expected : 'UNSAFE_componentWillReceiveProps' } ) ,
987
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'unsafe_componentwillreceiveprops' , 'UNSAFE_componentWillReceiveProps' ) ,
986
988
type : 'MethodDefinition'
987
989
} , {
988
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'shouldcomponentupdate' , expected : 'shouldComponentUpdate' } ) ,
990
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'shouldcomponentupdate' , 'shouldComponentUpdate' ) ,
989
991
type : 'MethodDefinition'
990
992
} , {
991
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'componentwillupdate' , expected : 'componentWillUpdate' } ) ,
993
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'componentwillupdate' , 'componentWillUpdate' ) ,
992
994
type : 'MethodDefinition'
993
995
} , {
994
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'unsafe_componentwillupdate' , expected : 'UNSAFE_componentWillUpdate' } ) ,
996
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'unsafe_componentwillupdate' , 'UNSAFE_componentWillUpdate' ) ,
995
997
type : 'MethodDefinition'
996
998
} , {
997
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'getsnapshotbeforeupdate' , expected : 'getSnapshotBeforeUpdate' } ) ,
999
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'getsnapshotbeforeupdate' , 'getSnapshotBeforeUpdate' ) ,
998
1000
type : 'MethodDefinition'
999
1001
} , {
1000
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'componentdidupdate' , expected : 'componentDidUpdate' } ) ,
1002
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'componentdidupdate' , 'componentDidUpdate' ) ,
1001
1003
type : 'MethodDefinition'
1002
1004
} , {
1003
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'componentdidcatch' , expected : 'componentDidCatch' } ) ,
1005
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'componentdidcatch' , 'componentDidCatch' ) ,
1004
1006
type : 'MethodDefinition'
1005
1007
} , {
1006
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'componentwillunmount' , expected : 'componentWillUnmount' } ) ,
1008
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'componentwillunmount' , 'componentWillUnmount' ) ,
1007
1009
type : 'MethodDefinition'
1008
1010
} ]
1009
1011
} , {
@@ -1583,27 +1585,54 @@ ruleTester.run('no-typos', rule, {
1583
1585
message : ERROR_MESSAGE_ES5 ,
1584
1586
type : 'Identifier'
1585
1587
} , {
1586
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentWillMount' , expected : 'componentWillMount' } ) ,
1588
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentWillMount' , 'componentWillMount' ) ,
1587
1589
type : 'Property'
1588
1590
} , {
1589
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentDidMount' , expected : 'componentDidMount' } ) ,
1591
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentDidMount' , 'componentDidMount' ) ,
1590
1592
type : 'Property'
1591
1593
} , {
1592
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentWillReceiveProps' , expected : 'componentWillReceiveProps' } ) ,
1594
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentWillReceiveProps' , 'componentWillReceiveProps' ) ,
1593
1595
type : 'Property'
1594
1596
} , {
1595
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ShouldComponentUpdate' , expected : 'shouldComponentUpdate' } ) ,
1597
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ShouldComponentUpdate' , 'shouldComponentUpdate' ) ,
1596
1598
type : 'Property'
1597
1599
} , {
1598
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentWillUpdate' , expected : 'componentWillUpdate' } ) ,
1600
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentWillUpdate' , 'componentWillUpdate' ) ,
1599
1601
type : 'Property'
1600
1602
} , {
1601
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentDidUpdate' , expected : 'componentDidUpdate' } ) ,
1603
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentDidUpdate' , 'componentDidUpdate' ) ,
1602
1604
type : 'Property'
1603
1605
} , {
1604
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentWillUnmount' , expected : 'componentWillUnmount' } ) ,
1606
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentWillUnmount' , 'componentWillUnmount' ) ,
1605
1607
type : 'Property'
1606
1608
} ]
1609
+ } , {
1610
+ code : `
1611
+ class Hello extends React.Component {
1612
+ getDerivedStateFromProps() { }
1613
+ }
1614
+ ` ,
1615
+ parser : parsers . BABEL_ESLINT ,
1616
+ parserOptions,
1617
+ errors : [ {
1618
+ message : ERROR_MESSAGE_STATIC ( 'getDerivedStateFromProps' ) ,
1619
+ nodeType : 'MethodDefinition'
1620
+ } ]
1621
+ } , {
1622
+ code : `
1623
+ class Hello extends React.Component {
1624
+ GetDerivedStateFromProps() { }
1625
+ }
1626
+ ` ,
1627
+ parser : parsers . BABEL_ESLINT ,
1628
+ parserOptions,
1629
+ errors : [ {
1630
+ message : ERROR_MESSAGE_STATIC ( 'GetDerivedStateFromProps' ) ,
1631
+ nodeType : 'MethodDefinition'
1632
+ } , {
1633
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'GetDerivedStateFromProps' , 'getDerivedStateFromProps' ) ,
1634
+ nodeType : 'MethodDefinition'
1635
+ } ]
1607
1636
} , {
1608
1637
code : `
1609
1638
import React from 'react';
@@ -1635,25 +1664,25 @@ ruleTester.run('no-typos', rule, {
1635
1664
message : ERROR_MESSAGE_ES5 ,
1636
1665
type : 'Identifier'
1637
1666
} , {
1638
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentWillMount' , expected : 'componentWillMount' } ) ,
1667
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentWillMount' , 'componentWillMount' ) ,
1639
1668
type : 'Property'
1640
1669
} , {
1641
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentDidMount' , expected : 'componentDidMount' } ) ,
1670
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentDidMount' , 'componentDidMount' ) ,
1642
1671
type : 'Property'
1643
1672
} , {
1644
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentWillReceiveProps' , expected : 'componentWillReceiveProps' } ) ,
1673
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentWillReceiveProps' , 'componentWillReceiveProps' ) ,
1645
1674
type : 'Property'
1646
1675
} , {
1647
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ShouldComponentUpdate' , expected : 'shouldComponentUpdate' } ) ,
1676
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ShouldComponentUpdate' , 'shouldComponentUpdate' ) ,
1648
1677
type : 'Property'
1649
1678
} , {
1650
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentWillUpdate' , expected : 'componentWillUpdate' } ) ,
1679
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentWillUpdate' , 'componentWillUpdate' ) ,
1651
1680
type : 'Property'
1652
1681
} , {
1653
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentDidUpdate' , expected : 'componentDidUpdate' } ) ,
1682
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentDidUpdate' , 'componentDidUpdate' ) ,
1654
1683
type : 'Property'
1655
1684
} , {
1656
- message : ERROR_MESSAGE_LIFECYCLE_METHOD ( { actual : 'ComponentWillUnmount' , expected : 'componentWillUnmount' } ) ,
1685
+ message : ERROR_MESSAGE_LIFECYCLE_METHOD ( 'ComponentWillUnmount' , 'componentWillUnmount' ) ,
1657
1686
type : 'Property'
1658
1687
} ]
1659
1688
/*
0 commit comments