@@ -351,6 +351,66 @@ ruleTester.run('no-typos', rule, {
351351 ` ,
352352 parser : 'babel-eslint' ,
353353 parserOptions : parserOptions
354+ } , {
355+ code : `
356+ import PropTypes from "prop-types";
357+ class Component extends React.Component {};
358+ Component.childContextTypes = {
359+ a: PropTypes.string,
360+ b: PropTypes.string.isRequired,
361+ c: PropTypes.shape({
362+ d: PropTypes.string,
363+ e: PropTypes.number.isRequired,
364+ }).isRequired
365+ }
366+ ` ,
367+ parserOptions : parserOptions
368+ } , {
369+ code : `
370+ import PropTypes from "prop-types";
371+ class Component extends React.Component {};
372+ Component.contextTypes = {
373+ a: PropTypes.string,
374+ b: PropTypes.string.isRequired,
375+ c: PropTypes.shape({
376+ d: PropTypes.string,
377+ e: PropTypes.number.isRequired,
378+ }).isRequired
379+ }
380+ ` ,
381+ parserOptions : parserOptions
382+ } , {
383+ code : `
384+ import PropTypes from 'prop-types'
385+ import * as MyPropTypes from 'lib/my-prop-types'
386+ class Component extends React.Component {};
387+ Component.propTypes = {
388+ a: PropTypes.string,
389+ b: MyPropTypes.MYSTRING,
390+ c: MyPropTypes.MYSTRING.isRequired,
391+ }
392+ ` ,
393+ parserOptions : parserOptions
394+ } , {
395+ code : `
396+ import PropTypes from "prop-types"
397+ import * as MyPropTypes from 'lib/my-prop-types'
398+ class Component extends React.Component {};
399+ Component.propTypes = {
400+ b: PropTypes.string,
401+ a: MyPropTypes.MYSTRING,
402+ }
403+ ` ,
404+ parserOptions : parserOptions
405+ } , {
406+ code : `
407+ import CustomReact from "react"
408+ class Component extends React.Component {};
409+ Component.propTypes = {
410+ b: CustomReact.PropTypes.string,
411+ }
412+ ` ,
413+ parserOptions : parserOptions
354414 } , {
355415 code : `
356416 import PropTypes from "prop-types";
@@ -1060,6 +1120,158 @@ ruleTester.run('no-typos', rule, {
10601120 } , {
10611121 message : 'Typo in declared prop type: objectof'
10621122 } ]
1123+ } , {
1124+ code : `
1125+ import PropTypes from 'prop-types';
1126+ class Component extends React.Component {};
1127+ Component.childContextTypes = {
1128+ a: PropTypes.bools,
1129+ b: PropTypes.Array,
1130+ c: PropTypes.function,
1131+ d: PropTypes.objectof,
1132+ }
1133+ ` ,
1134+ parserOptions : parserOptions ,
1135+ errors : [ {
1136+ message : 'Typo in declared prop type: bools'
1137+ } , {
1138+ message : 'Typo in declared prop type: Array'
1139+ } , {
1140+ message : 'Typo in declared prop type: function'
1141+ } , {
1142+ message : 'Typo in declared prop type: objectof'
1143+ } ]
1144+ } , {
1145+ code : `
1146+ import PropTypes from 'prop-types';
1147+ class Component extends React.Component {};
1148+ Component.propTypes = {
1149+ a: PropTypes.string.isrequired,
1150+ b: PropTypes.shape({
1151+ c: PropTypes.number
1152+ }).isrequired
1153+ }
1154+ ` ,
1155+ parserOptions : parserOptions ,
1156+ errors : [ {
1157+ message : 'Typo in prop type chain qualifier: isrequired'
1158+ } , {
1159+ message : 'Typo in prop type chain qualifier: isrequired'
1160+ } ]
1161+ } , {
1162+ code : `
1163+ import PropTypes from 'prop-types';
1164+ class Component extends React.Component {};
1165+ Component.propTypes = {
1166+ a: PropTypes.string.isrequired,
1167+ b: PropTypes.shape({
1168+ c: PropTypes.number
1169+ }).isrequired
1170+ }
1171+ ` ,
1172+ parserOptions : parserOptions ,
1173+ errors : [ {
1174+ message : 'Typo in prop type chain qualifier: isrequired'
1175+ } , {
1176+ message : 'Typo in prop type chain qualifier: isrequired'
1177+ } ]
1178+ } , {
1179+ code : `
1180+ import RealPropTypes from 'prop-types';
1181+ class Component extends React.Component {};
1182+ Component.childContextTypes = {
1183+ a: RealPropTypes.bools,
1184+ b: RealPropTypes.Array,
1185+ c: RealPropTypes.function,
1186+ d: RealPropTypes.objectof,
1187+ }
1188+ ` ,
1189+ parserOptions : parserOptions ,
1190+ errors : [ {
1191+ message : 'Typo in declared prop type: bools'
1192+ } , {
1193+ message : 'Typo in declared prop type: Array'
1194+ } , {
1195+ message : 'Typo in declared prop type: function'
1196+ } , {
1197+ message : 'Typo in declared prop type: objectof'
1198+ } ]
1199+ } , {
1200+ code : `
1201+ import React from 'react';
1202+ class Component extends React.Component {};
1203+ Component.propTypes = {
1204+ a: React.PropTypes.string.isrequired,
1205+ b: React.PropTypes.shape({
1206+ c: React.PropTypes.number
1207+ }).isrequired
1208+ }
1209+ ` ,
1210+ parserOptions : parserOptions ,
1211+ errors : [ {
1212+ message : 'Typo in prop type chain qualifier: isrequired'
1213+ } , {
1214+ message : 'Typo in prop type chain qualifier: isrequired'
1215+ } ]
1216+ } , {
1217+ code : `
1218+ import React from 'react';
1219+ class Component extends React.Component {};
1220+ Component.childContextTypes = {
1221+ a: React.PropTypes.bools,
1222+ b: React.PropTypes.Array,
1223+ c: React.PropTypes.function,
1224+ d: React.PropTypes.objectof,
1225+ }
1226+ ` ,
1227+ parserOptions : parserOptions ,
1228+ errors : [ {
1229+ message : 'Typo in declared prop type: bools'
1230+ } , {
1231+ message : 'Typo in declared prop type: Array'
1232+ } , {
1233+ message : 'Typo in declared prop type: function'
1234+ } , {
1235+ message : 'Typo in declared prop type: objectof'
1236+ } ]
1237+ } , {
1238+ code : `
1239+ import { PropTypes } from 'react';
1240+ class Component extends React.Component {};
1241+ Component.propTypes = {
1242+ a: PropTypes.string.isrequired,
1243+ b: PropTypes.shape({
1244+ c: PropTypes.number
1245+ }).isrequired
1246+ }
1247+ ` ,
1248+ parserOptions : parserOptions ,
1249+ errors : [ {
1250+ message : 'Typo in prop type chain qualifier: isrequired'
1251+ } , {
1252+ message : 'Typo in prop type chain qualifier: isrequired'
1253+ } ]
1254+ } , {
1255+ code : `
1256+ import { PropTypes } from 'react';
1257+ class Component extends React.Component {};
1258+ Component.childContextTypes = {
1259+ a: PropTypes.bools,
1260+ b: PropTypes.Array,
1261+ c: PropTypes.function,
1262+ d: PropTypes.objectof,
1263+ }
1264+ ` ,
1265+ parserOptions : parserOptions ,
1266+ errors : [ {
1267+ message : 'Typo in declared prop type: bools'
1268+ } , {
1269+ message : 'Typo in declared prop type: Array'
1270+ } , {
1271+ message : 'Typo in declared prop type: function'
1272+ } , {
1273+ message : 'Typo in declared prop type: objectof'
1274+ } ]
10631275 } ]
10641276/*
10651277// createClass tests below fail, so they're commented out
@@ -1108,6 +1320,48 @@ ruleTester.run('no-typos', rule, {
11081320 }, {
11091321 message: 'Typo in declared prop type: objectof'
11101322 }]
1323+ }, {
1324+ code: `
1325+ import React from 'react';
1326+ import PropTypes from 'prop-types';
1327+ const Component = React.createClass({
1328+ propTypes: {
1329+ a: PropTypes.string.isrequired,
1330+ b: PropTypes.shape({
1331+ c: PropTypes.number
1332+ }).isrequired
1333+ }
1334+ });
1335+ `,
1336+ parserOptions: parserOptions,
1337+ errors: [{
1338+ message: 'Typo in prop type chain qualifier: isrequired'
1339+ }, {
1340+ message: 'Typo in prop type chain qualifier: isrequired'
1341+ }]
1342+ }, {
1343+ code: `
1344+ import React from 'react';
1345+ import PropTypes from 'prop-types';
1346+ const Component = React.createClass({
1347+ childContextTypes: {
1348+ a: PropTypes.bools,
1349+ b: PropTypes.Array,
1350+ c: PropTypes.function,
1351+ d: PropTypes.objectof,
1352+ }
1353+ });
1354+ `,
1355+ parserOptions: parserOptions,
1356+ errors: [{
1357+ message: 'Typo in declared prop type: bools'
1358+ }, {
1359+ message: 'Typo in declared prop type: Array'
1360+ }, {
1361+ message: 'Typo in declared prop type: function'
1362+ }, {
1363+ message: 'Typo in declared prop type: objectof'
1364+ }]
11111365 }]
11121366// ---------
11131367// createClass tests above fail, so they're commented out
0 commit comments