-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
/
destructuring-props-argument.js
60 lines (55 loc) · 1.4 KB
/
destructuring-props-argument.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/**
* @fileoverview Rule to forbid or enforce destructuring props argument.
**/
'use strict';
const rule = require('../../../lib/rules/destructuring-props-argument');
const RuleTester = require('eslint').RuleTester;
require('babel-eslint');
const parserOptions = {
ecmaVersion: 6,
sourceType: 'module',
ecmaFeatures: {
jsx: true
}
};
const ruleTester = new RuleTester({parserOptions});
ruleTester.run('destructuring-props-argument', rule, {
valid: [{
code: `const MyComponent = ({ id, className }) => (
<div id={id} className={className} />
);`
}, {
code: `const MyComponent = (props) => (
<div id={id} props={props} />
);`
}, {
code: `const Foo = class extends React.PureComponent {
render() {
return <div>{this.props.foo}</div>;
}
};`
}, {
code: `class Foo extends React.Component {
doStuff() {}
render() {
return <div>{this.props.foo}</div>;
}
}`
}],
invalid: [{
code: `const MyComponent = (props) => {
return (<div id={props.id} />)
};`,
errors: [
{message: 'Should use destructuring props assignment in SFC argument'}
]
}, {
code: `const MyComponent = ({ id, className }) => (
<div id={id} className={className} />
);`,
options: [{SFC: 'never'}],
errors: [
{message: 'Should never use destructuring props assignment in SFC argument'}
]
}]
});