9
9
10
10
const rule = require ( '../../../lib/rules/component-tags-order' )
11
11
const RuleTester = require ( 'eslint' ) . RuleTester
12
+ const assert = require ( 'assert' )
13
+ const { ESLint } = require ( '../../eslint-compat' )
14
+
15
+ // Initialize linter.
16
+ const eslint = new ESLint ( {
17
+ overrideConfig : {
18
+ parser : require . resolve ( 'vue-eslint-parser' ) ,
19
+ parserOptions : {
20
+ ecmaVersion : 2015
21
+ } ,
22
+ plugins : [ 'vue' ] ,
23
+ rules : {
24
+ 'vue/comment-directive' : 'error' ,
25
+ 'vue/component-tags-order' : 'error'
26
+ }
27
+ } ,
28
+ useEslintrc : false ,
29
+ plugins : { vue : require ( '../../../lib/index' ) }
30
+ } )
12
31
13
32
// ------------------------------------------------------------------------------
14
33
// Tests
@@ -108,7 +127,8 @@ tester.run('component-tags-order', rule, {
108
127
line : 1 ,
109
128
column : 37
110
129
}
111
- ]
130
+ ] ,
131
+ output : '<template></template><style></style><script></script>'
112
132
} ,
113
133
{
114
134
code : '<template></template><script></script><style></style>' ,
@@ -119,7 +139,8 @@ tester.run('component-tags-order', rule, {
119
139
line : 1 ,
120
140
column : 22
121
141
}
122
- ]
142
+ ] ,
143
+ output : '<script></script><template></template><style></style>'
123
144
} ,
124
145
{
125
146
code : `
@@ -133,7 +154,14 @@ tester.run('component-tags-order', rule, {
133
154
message : 'The <script> should be above the <style> on line 4.' ,
134
155
line : 6
135
156
}
136
- ]
157
+ ] ,
158
+ output :
159
+ '\n' +
160
+ ' <template></template>\n' +
161
+ '\n' +
162
+ ' <script></script>\n' +
163
+ '\n' +
164
+ ' <style></style>'
137
165
} ,
138
166
{
139
167
code : `
@@ -147,7 +175,13 @@ tester.run('component-tags-order', rule, {
147
175
message : 'The <script> should be above the <template> on line 2.' ,
148
176
line : 3
149
177
}
150
- ]
178
+ ] ,
179
+ output :
180
+ '\n' +
181
+ ' <script></script>\n' +
182
+ ' <template></template>\n' +
183
+ ' <style></style>\n' +
184
+ ' '
151
185
} ,
152
186
{
153
187
code : `
@@ -161,7 +195,13 @@ tester.run('component-tags-order', rule, {
161
195
message : 'The <template> should be above the <script> on line 2.' ,
162
196
line : 3
163
197
}
164
- ]
198
+ ] ,
199
+ output :
200
+ '\n' +
201
+ ' <template></template>\n' +
202
+ ' <script></script>\n' +
203
+ ' <style></style>\n' +
204
+ ' '
165
205
} ,
166
206
{
167
207
code : `
@@ -176,7 +216,14 @@ tester.run('component-tags-order', rule, {
176
216
message : 'The <docs> should be above the <template> on line 2.' ,
177
217
line : 3
178
218
}
179
- ]
219
+ ] ,
220
+ output :
221
+ '\n' +
222
+ ' <docs></docs>\n' +
223
+ ' <template></template>\n' +
224
+ ' <script></script>\n' +
225
+ ' <style></style>\n' +
226
+ ' '
180
227
} ,
181
228
{
182
229
code : `
@@ -191,7 +238,14 @@ tester.run('component-tags-order', rule, {
191
238
message : 'The <script> should be above the <template> on line 2.' ,
192
239
line : 4
193
240
}
194
- ]
241
+ ] ,
242
+ output :
243
+ '\n' +
244
+ ' <script></script>\n' +
245
+ ' <template></template>\n' +
246
+ ' <docs></docs>\n' +
247
+ ' <style></style>\n' +
248
+ ' '
195
249
} ,
196
250
{
197
251
code : `
@@ -207,7 +261,15 @@ tester.run('component-tags-order', rule, {
207
261
message : 'The <script> should be above the <template> on line 2.' ,
208
262
line : 5
209
263
}
210
- ]
264
+ ] ,
265
+ output :
266
+ '\n' +
267
+ ' <script></script>\n' +
268
+ ' <template></template>\n' +
269
+ ' <docs>\n' +
270
+ ' </docs>\n' +
271
+ ' <style></style>\n' +
272
+ ' '
211
273
} ,
212
274
{
213
275
code : `
@@ -220,7 +282,9 @@ tester.run('component-tags-order', rule, {
220
282
message : 'The <template> should be above the <script> on line 2.' ,
221
283
line : 3
222
284
}
223
- ]
285
+ ] ,
286
+ output :
287
+ '\n <template></template>\n <script></script>\n '
224
288
} ,
225
289
{
226
290
code : `
@@ -237,7 +301,13 @@ tester.run('component-tags-order', rule, {
237
301
message : 'The <script> should be above the <style> on line 2.' ,
238
302
line : 4
239
303
}
240
- ]
304
+ ] ,
305
+ output :
306
+ '\n' +
307
+ ' <template></template>\n' +
308
+ ' <style></style>\n' +
309
+ ' <script></script>\n' +
310
+ ' '
241
311
} ,
242
312
{
243
313
code : `
@@ -255,7 +325,14 @@ tester.run('component-tags-order', rule, {
255
325
message : 'The <script> should be above the <style> on line 2.' ,
256
326
line : 5
257
327
}
258
- ]
328
+ ] ,
329
+ output :
330
+ '\n' +
331
+ ' <template></template>\n' +
332
+ ' <style></style>\n' +
333
+ ' <docs></docs>\n' +
334
+ ' <script></script>\n' +
335
+ ' '
259
336
} ,
260
337
// no <template>
261
338
{
@@ -268,7 +345,23 @@ tester.run('component-tags-order', rule, {
268
345
message : 'The <script> should be above the <style> on line 2.' ,
269
346
line : 3
270
347
}
271
- ]
348
+ ] ,
349
+ output : '\n <script></script>\n <style></style>\n '
272
350
}
273
351
]
274
352
} )
353
+
354
+ describe ( 'suppress reporting with eslint-disable-next-line' , ( ) => {
355
+ it ( 'disable all rules if <!-- eslint-disable-line -->' , async ( ) => {
356
+ const code = `<style></style><template></template>
357
+ <!-- eslint-disable-next-line vue/component-tags-order -->
358
+ <script></script>`
359
+ const [ { messages } ] = await eslint . lintText ( code , { filePath : 'test.vue' } )
360
+ assert . strictEqual ( messages . length , 1 )
361
+ // should not fix <script>
362
+ assert . strictEqual (
363
+ messages [ 0 ] . fix . text ,
364
+ '<template></template><style></style>'
365
+ )
366
+ } )
367
+ } )
0 commit comments