Skip to content

Commit 558576c

Browse files
committed
Add more tests with spread, add examples
1 parent ba394d2 commit 558576c

File tree

2 files changed

+106
-0
lines changed

2 files changed

+106
-0
lines changed

docs/rules/jsx-sort-default-props.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,24 @@ Component.defaultProps = {
4747
y: "y",
4848
a: "a"
4949
};
50+
51+
const defaults = {
52+
b: "b"
53+
};
54+
const types = {
55+
a: PropTypes.string,
56+
b: PropTypes.string,
57+
c: PropTypes.string'
58+
};
59+
function StatelessComponentWithSpreadInPropTypes({ a, b, c }) {
60+
return <div>{a}{b}{c}</div>;
61+
}
62+
StatelessComponentWithSpreadInPropTypes.propTypes = types;
63+
StatelessComponentWithSpreadInPropTypes.defaultProps = {
64+
c: "c",
65+
a: "a",
66+
...defaults,
67+
};
5068
```
5169
5270
The following patterns are considered okay and do **not** cause warnings:
@@ -90,6 +108,24 @@ Component.defaultProps = {
90108
y: "y",
91109
z: "z"
92110
};
111+
112+
const defaults = {
113+
b: "b"
114+
};
115+
const types = {
116+
a: PropTypes.string,
117+
b: PropTypes.string,
118+
c: PropTypes.string'
119+
};
120+
function StatelessComponentWithSpreadInPropTypes({ a, b, c }) {
121+
return <div>{a}{b}{c}</div>;
122+
}
123+
StatelessComponentWithSpreadInPropTypes.propTypes = types;
124+
StatelessComponentWithSpreadInPropTypes.defaultProps = {
125+
a: "a",
126+
c: "c",
127+
...defaults,
128+
};
93129
```
94130

95131
## Rule Options

tests/lib/rules/jsx-sort-default-props.js

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,27 @@ ruleTester.run('jsx-sort-default-props', rule, {
262262
'}'
263263
].join('\n'),
264264
parser: 'babel-eslint'
265+
}, {
266+
code: [
267+
'const defaults = {',
268+
' b: "b"',
269+
'};',
270+
'const types = {',
271+
' a: PropTypes.string,',
272+
' b: PropTypes.string,',
273+
' c: PropTypes.string',
274+
'};',
275+
'function StatelessComponentWithSpreadInPropTypes({ a, b, c }) {',
276+
' return <div>{a}{b}{c}</div>;',
277+
'}',
278+
'StatelessComponentWithSpreadInPropTypes.propTypes = types;',
279+
'StatelessComponentWithSpreadInPropTypes.defaultProps = {',
280+
' c: "c",',
281+
' ...defaults,',
282+
' a: "a"',
283+
'};'
284+
].join('\n'),
285+
parser: 'babel-eslint'
265286
}, {
266287
code: [
267288
'const propTypes = require(\'./externalPropTypes\')',
@@ -494,5 +515,54 @@ ruleTester.run('jsx-sort-default-props', rule, {
494515
column: 3,
495516
type: 'Property'
496517
}]
518+
}, {
519+
code: [
520+
'export default class ClassWithSpreadInPropTypes extends BaseClass {',
521+
' static propTypes = {',
522+
' b: PropTypes.string,',
523+
' ...c.propTypes,',
524+
' a: PropTypes.string',
525+
' }',
526+
' static defaultProps = {',
527+
' b: "b",',
528+
' a: "a",',
529+
' ...c.defaultProps',
530+
' }',
531+
'}'
532+
].join('\n'),
533+
parser: 'babel-eslint',
534+
errors: [{
535+
message: ERROR_MESSAGE,
536+
line: 9,
537+
column: 5,
538+
type: 'Property'
539+
}]
540+
}, {
541+
code: [
542+
'const defaults = {',
543+
' b: "b"',
544+
'};',
545+
'const types = {',
546+
' a: PropTypes.string,',
547+
' b: PropTypes.string,',
548+
' c: PropTypes.string',
549+
'};',
550+
'function StatelessComponentWithSpreadInPropTypes({ a, b, c }) {',
551+
' return <div>{a}{b}{c}</div>;',
552+
'}',
553+
'StatelessComponentWithSpreadInPropTypes.propTypes = types;',
554+
'StatelessComponentWithSpreadInPropTypes.defaultProps = {',
555+
' c: "c",',
556+
' a: "a",',
557+
' ...defaults,',
558+
'};'
559+
].join('\n'),
560+
parser: 'babel-eslint',
561+
errors: [{
562+
message: ERROR_MESSAGE,
563+
line: 15,
564+
column: 3,
565+
type: 'Property'
566+
}]
497567
}]
498568
});

0 commit comments

Comments
 (0)