@@ -351,6 +351,66 @@ ruleTester.run('no-typos', rule, {
351
351
` ,
352
352
parser : 'babel-eslint' ,
353
353
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
354
414
} , {
355
415
code : `
356
416
import PropTypes from "prop-types";
@@ -1060,6 +1120,158 @@ ruleTester.run('no-typos', rule, {
1060
1120
} , {
1061
1121
message : 'Typo in declared prop type: objectof'
1062
1122
} ]
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
+ } ]
1063
1275
} ]
1064
1276
/*
1065
1277
// createClass tests below fail, so they're commented out
@@ -1108,6 +1320,48 @@ ruleTester.run('no-typos', rule, {
1108
1320
}, {
1109
1321
message: 'Typo in declared prop type: objectof'
1110
1322
}]
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
+ }]
1111
1365
}]
1112
1366
// ---------
1113
1367
// createClass tests above fail, so they're commented out
0 commit comments