@@ -112,6 +112,75 @@ ruleTester.run('forbid-dom-props', rule, {
112112 } ,
113113 ] ,
114114 } ,
115+ {
116+ code : `
117+ const First = (props) => (
118+ <div someProp="someValue" />
119+ );
120+ ` ,
121+ options : [
122+ {
123+ forbid : [
124+ {
125+ propName : 'someProp' ,
126+ disallowedValues : [ ] ,
127+ } ,
128+ ] ,
129+ } ,
130+ ] ,
131+ } ,
132+ {
133+ code : `
134+ const First = (props) => (
135+ <Foo someProp="someValue" />
136+ );
137+ ` ,
138+ options : [
139+ {
140+ forbid : [
141+ {
142+ propName : 'someProp' ,
143+ disallowedValues : [ 'someValue' ] ,
144+ } ,
145+ ] ,
146+ } ,
147+ ] ,
148+ } ,
149+ {
150+ code : `
151+ const First = (props) => (
152+ <div someProp="value" />
153+ );
154+ ` ,
155+ options : [
156+ {
157+ forbid : [
158+ {
159+ propName : 'someProp' ,
160+ disallowedValues : [ 'someValue' ] ,
161+ } ,
162+ ] ,
163+ } ,
164+ ] ,
165+ } ,
166+ {
167+ code : `
168+ const First = (props) => (
169+ <div someProp="someValue" />
170+ );
171+ ` ,
172+ options : [
173+ {
174+ forbid : [
175+ {
176+ propName : 'someProp' ,
177+ disallowedValues : [ 'someValue' ] ,
178+ disallowedFor : [ 'span' ] ,
179+ } ,
180+ ] ,
181+ } ,
182+ ] ,
183+ } ,
115184 ] ) ,
116185
117186 invalid : parsers . all ( [
@@ -191,6 +260,58 @@ ruleTester.run('forbid-dom-props', rule, {
191260 } ,
192261 ] ,
193262 } ,
263+ {
264+ code : `
265+ const First = (props) => (
266+ <span otherProp="bar" />
267+ );
268+ ` ,
269+ options : [
270+ {
271+ forbid : [
272+ {
273+ propName : 'otherProp' ,
274+ disallowedFor : [ 'span' ] ,
275+ } ,
276+ ] ,
277+ } ,
278+ ] ,
279+ errors : [
280+ {
281+ messageId : 'propIsForbidden' ,
282+ data : { prop : 'otherProp' } ,
283+ line : 3 ,
284+ column : 17 ,
285+ type : 'JSXAttribute' ,
286+ } ,
287+ ] ,
288+ } ,
289+ {
290+ code : `
291+ const First = (props) => (
292+ <div someProp="someValue" />
293+ );
294+ ` ,
295+ options : [
296+ {
297+ forbid : [
298+ {
299+ propName : 'someProp' ,
300+ disallowedValues : [ 'someValue' ] ,
301+ } ,
302+ ] ,
303+ } ,
304+ ] ,
305+ errors : [
306+ {
307+ messageId : 'propIsForbiddenWithValue' ,
308+ data : { prop : 'someProp' , propValue : 'someValue' } ,
309+ line : 3 ,
310+ column : 16 ,
311+ type : 'JSXAttribute' ,
312+ } ,
313+ ] ,
314+ } ,
194315 {
195316 code : `
196317 const First = (props) => (
@@ -324,5 +445,70 @@ ruleTester.run('forbid-dom-props', rule, {
324445 } ,
325446 ] ,
326447 } ,
448+ {
449+ code : `
450+ const First = (props) => (
451+ <div className="foo">
452+ <input className="boo" />
453+ <span className="foobar">Foobar</span>
454+ <div otherProp="bar" />
455+ <p thirdProp="foo" />
456+ <div thirdProp="baz" />
457+ <p thirdProp="bar" />
458+ <p thirdProp="baz" />
459+ </div>
460+ );
461+ ` ,
462+ options : [
463+ {
464+ forbid : [
465+ {
466+ propName : 'className' ,
467+ disallowedFor : [ 'div' , 'span' ] ,
468+ message : 'Please use class instead of ClassName' ,
469+ } ,
470+ { propName : 'otherProp' , message : 'Avoid using otherProp' } ,
471+ {
472+ propName : 'thirdProp' ,
473+ disallowedFor : [ 'p' ] ,
474+ disallowedValues : [ 'bar' , 'baz' ] ,
475+ message : 'Do not use thirdProp with values bar and baz on p' ,
476+ } ,
477+ ] ,
478+ } ,
479+ ] ,
480+ errors : [
481+ {
482+ message : 'Please use class instead of ClassName' ,
483+ line : 3 ,
484+ column : 16 ,
485+ type : 'JSXAttribute' ,
486+ } ,
487+ {
488+ message : 'Please use class instead of ClassName' ,
489+ line : 5 ,
490+ column : 19 ,
491+ type : 'JSXAttribute' ,
492+ } ,
493+ {
494+ message : 'Avoid using otherProp' ,
495+ line : 6 ,
496+ column : 18 ,
497+ type : 'JSXAttribute' ,
498+ } ,
499+ {
500+ message : 'Do not use thirdProp with values bar and baz on p' ,
501+ line : 9 ,
502+ column : 16 ,
503+ type : 'JSXAttribute' ,
504+ } ,
505+ {
506+ message : 'Do not use thirdProp with values bar and baz on p' ,
507+ line : 10 ,
508+ column : 16 ,
509+ type : 'JSXAttribute' ,
510+ } ,
511+ ] ,
512+ } ,
327513 ] ) ,
328514} ) ;
0 commit comments