Skip to content

Commit e13635b

Browse files
committed
test: add options test cases
1 parent 8961878 commit e13635b

File tree

6 files changed

+105
-2
lines changed

6 files changed

+105
-2
lines changed

docs/rules/no-add-event-listener.md

+12-1
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,20 @@ This rule reports usages of `addEventListener`:
1919
<!--eslint-skip-->
2020

2121
```svelte
22+
<!-- ✓ GOOD -->
2223
<script>
2324
/* eslint svelte/no-add-event-listener: "error" */
24-
addEventListener(window, 'resize', handler);
25+
on(window, 'resize', handler);
26+
</script>
27+
```
28+
29+
<!--eslint-skip-->
30+
31+
```svelte
32+
<!-- ✗ BAD -->
33+
<script>
34+
/* eslint svelte/no-add-event-listener: "error" */
35+
window.addEventListener('resize', handler);
2536
</script>
2637
```
2738

packages/eslint-plugin-svelte/src/rules/no-add-event-listener.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export default createRule('no-add-event-listener', {
3030
const { callee, arguments: args } = node;
3131
let target: string | null = null;
3232

33-
if (args.length !== 2) {
33+
if (args.length < 2 || args.length > 3) {
3434
return;
3535
}
3636

packages/eslint-plugin-svelte/tests/fixtures/rules/no-add-event-listener/invalid/test01-errors.yaml

+62
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@
3333
window.addEventListener ('message', handler);
3434
// with a comment
3535
window.addEventListener/* foo */('message', handler);
36+
37+
// with options
38+
window.addEventListener('message', handler, { once: true });
3639
</script>
3740
3841
<button onclick={onClick}>Hello</button>
@@ -71,6 +74,9 @@
7174
window.addEventListener ('message', handler);
7275
// with a comment
7376
window.addEventListener/* foo */('message', handler);
77+
78+
// with options
79+
window.addEventListener('message', handler, { once: true });
7480
</script>
7581
7682
<button onclick={onClick}>Hello</button>
@@ -109,6 +115,9 @@
109115
window.addEventListener ('message', handler);
110116
// with a comment
111117
window.addEventListener/* foo */('message', handler);
118+
119+
// with options
120+
window.addEventListener('message', handler, { once: true });
112121
</script>
113122
114123
<button onclick={onClick}>Hello</button>
@@ -147,6 +156,9 @@
147156
window.addEventListener ('message', handler);
148157
// with a comment
149158
window.addEventListener/* foo */('message', handler);
159+
160+
// with options
161+
window.addEventListener('message', handler, { once: true });
150162
</script>
151163
152164
<button onclick={onClick}>Hello</button>
@@ -185,6 +197,9 @@
185197
window.addEventListener ('message', handler);
186198
// with a comment
187199
window.addEventListener/* foo */('message', handler);
200+
201+
// with options
202+
window.addEventListener('message', handler, { once: true });
188203
</script>
189204
190205
<button onclick={onClick}>Hello</button>
@@ -223,6 +238,9 @@
223238
on (window, 'message', handler);
224239
// with a comment
225240
window.addEventListener/* foo */('message', handler);
241+
242+
// with options
243+
window.addEventListener('message', handler, { once: true });
226244
</script>
227245
228246
<button onclick={onClick}>Hello</button>
@@ -261,6 +279,50 @@
261279
window.addEventListener ('message', handler);
262280
// with a comment
263281
on/* foo */(window, 'message', handler);
282+
283+
// with options
284+
window.addEventListener('message', handler, { once: true });
285+
</script>
286+
287+
<button onclick={onClick}>Hello</button>
288+
- message: Do not use `addEventListener`. Use the `on` function from
289+
`svelte/events` instead.
290+
line: 31
291+
column: 2
292+
suggestions:
293+
- desc: Use `on` from `svelte/events` instead
294+
output: |
295+
<script>
296+
const handler = (ev) => {
297+
console.log(ev);
298+
};
299+
300+
function onClick(event) {
301+
const target = event.currentTarget;
302+
303+
const deepObj = {
304+
deep: {
305+
obj: {
306+
target
307+
}
308+
}
309+
};
310+
311+
target.addEventListener('focus', handler);
312+
deepObj.deep.obj.target.addEventListener('focus', handler);
313+
}
314+
315+
addEventListener('message', handler);
316+
window.addEventListener('message', handler);
317+
document.addEventListener('visibilitychange', handler);
318+
319+
// with a load of whitespace
320+
window.addEventListener ('message', handler);
321+
// with a comment
322+
window.addEventListener/* foo */('message', handler);
323+
324+
// with options
325+
on(window, 'message', handler, { once: true });
264326
</script>
265327
266328
<button onclick={onClick}>Hello</button>

packages/eslint-plugin-svelte/tests/fixtures/rules/no-add-event-listener/invalid/test01-input.svelte

+3
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
window.addEventListener ('message', handler);
2727
// with a comment
2828
window.addEventListener/* foo */('message', handler);
29+
30+
// with options
31+
window.addEventListener('message', handler, { once: true });
2932
</script>
3033

3134
<button onclick={onClick}>Hello</button>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
- message: Do not use `addEventListener`. Use the `on` function from
2+
`svelte/events` instead.
3+
line: 6
4+
column: 2
5+
suggestions:
6+
- desc: Use `on` from `svelte/events` instead
7+
output: |
8+
<script lang="ts">
9+
const handler = (ev: Event) => {
10+
console.log(ev);
11+
};
12+
13+
on(window as any, 'message', handler);
14+
(window.addEventListener as any)('message', handler);
15+
</script>
16+
17+
<div>Hello</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<script lang="ts">
2+
const handler = (ev: Event) => {
3+
console.log(ev);
4+
};
5+
6+
(window as any).addEventListener('message', handler);
7+
(window.addEventListener as any)('message', handler);
8+
</script>
9+
10+
<div>Hello</div>

0 commit comments

Comments
 (0)