/
jsx-props-no-multi-spaces.js
131 lines (124 loc) · 3.24 KB
/
jsx-props-no-multi-spaces.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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/**
* @fileoverview Disallow multiple spaces between inline JSX props
* @author Adrian Moennich
*/
'use strict';
// ------------------------------------------------------------------------------
// Requirements
// ------------------------------------------------------------------------------
const rule = require('../../../lib/rules/jsx-props-no-multi-spaces');
const RuleTester = require('eslint').RuleTester;
const parsers = require('../../helpers/parsers');
const parserOptions = {
ecmaVersion: 2018,
sourceType: 'module',
ecmaFeatures: {
jsx: true
}
};
// ------------------------------------------------------------------------------
// Tests
// ------------------------------------------------------------------------------
const ruleTester = new RuleTester({parserOptions});
ruleTester.run('jsx-props-no-multi-spaces', rule, {
valid: [{
code: [
'<App />'
].join('\n')
}, {
code: [
'<App foo />'
].join('\n')
}, {
code: [
'<App foo bar />'
].join('\n')
}, {
code: [
'<App foo="with spaces " bar />'
].join('\n')
}, {
code: [
'<App',
' foo bar />'
].join('\n')
}, {
code: [
'<App',
' foo',
' bar />'
].join('\n')
}, {
code: [
'<App',
' foo {...test}',
' bar />'
].join('\n')
}, {
code: '<App<T> foo bar />',
parser: parsers.TYPESCRIPT_ESLINT
}, {
code: '<Foo.Bar baz="quux" />'
}, {
code: '<Foobar.Foo.Bar.Baz.Qux.Quux.Quuz.Corge.Grault.Garply.Waldo.Fred.Plugh xyzzy="thud" />'
}],
invalid: [{
code: [
'<App foo />'
].join('\n'),
output: [
'<App foo />'
].join('\n'),
errors: [{message: 'Expected only one space between "App" and "foo"'}]
}, {
code: [
'<App foo="with spaces " bar />'
].join('\n'),
output: [
'<App foo="with spaces " bar />'
].join('\n'),
errors: [{message: 'Expected only one space between "foo" and "bar"'}]
}, {
code: [
'<App foo bar />'
].join('\n'),
output: [
'<App foo bar />'
].join('\n'),
errors: [{message: 'Expected only one space between "foo" and "bar"'}]
}, {
code: [
'<App foo bar />'
].join('\n'),
output: [
'<App foo bar />'
].join('\n'),
errors: [
{message: 'Expected only one space between "App" and "foo"'},
{message: 'Expected only one space between "foo" and "bar"'}
]
}, {
code: [
'<App foo {...test} bar />'
].join('\n'),
output: [
'<App foo {...test} bar />'
].join('\n'),
errors: [
{message: 'Expected only one space between "foo" and "test"'},
{message: 'Expected only one space between "test" and "bar"'}
]
}, {
code: '<Foo.Bar baz="quux" />',
output: '<Foo.Bar baz="quux" />',
errors: [
{message: 'Expected only one space between "Foo.Bar" and "baz"'}
]
}, {
code: '<Foobar.Foo.Bar.Baz.Qux.Quux.Quuz.Corge.Grault.Garply.Waldo.Fred.Plugh xyzzy="thud" />',
output: '<Foobar.Foo.Bar.Baz.Qux.Quux.Quuz.Corge.Grault.Garply.Waldo.Fred.Plugh xyzzy="thud" />',
errors: [
{message: 'Expected only one space between "Foobar.Foo.Bar.Baz.Qux.Quux.Quuz.Corge.Grault.Garply.Waldo.Fred.Plugh" and "xyzzy"'}
]
}]
});