Skip to content

Commit a8063fc

Browse files
test(no-misused-observables): test edge cases
1 parent 65ce7ab commit a8063fc

File tree

1 file changed

+37
-5
lines changed

1 file changed

+37
-5
lines changed

tests/rules/no-misused-observables.test.ts

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,18 @@ import { ruleTester } from '../rule-tester';
55

66
ruleTester({ types: true }).run('no-misused-observables', noMisusedObservablesRule, {
77
valid: [
8+
{
9+
code: stripIndent`
10+
// all checks disabled
11+
import { of } from "rxjs";
12+
13+
[1, 2, 3].forEach(i => of(i));
14+
15+
const source = of(42);
16+
const foo = { ...source };
17+
`,
18+
options: [{ checksVoidReturn: false, checksSpreads: false }],
19+
},
820
// #region valid; void return argument
921
{
1022
code: stripIndent`
@@ -27,9 +39,9 @@ ruleTester({ types: true }).run('no-misused-observables', noMisusedObservablesRu
2739
[1, 2, 3].forEach(i => { return i; });
2840
2941
class Foo {
30-
constructor(x: () => void) {}
42+
constructor(x: () => void, y: number) {}
3143
}
32-
new Foo(() => 42);
44+
new Foo(() => 42, 0);
3345
new Foo;
3446
`,
3547
stripIndent`
@@ -61,10 +73,10 @@ ruleTester({ types: true }).run('no-misused-observables', noMisusedObservablesRu
6173
// void return attribute; unrelated
6274
import React, { FC } from "react";
6375
64-
const Component: FC<{ foo: () => void }> = () => <div />;
76+
const Component: FC<{ foo: () => void, bar: boolean }> = () => <div />;
6577
const App = () => {
6678
return (
67-
<Component foo={() => 42} />
79+
<Component foo={() => 42} bar />
6880
);
6981
};
7082
`,
@@ -101,10 +113,12 @@ ruleTester({ types: true }).run('no-misused-observables', noMisusedObservablesRu
101113
102114
class Foo {
103115
foo(): Observable<number> { return of(42); }
116+
s(): void {}
104117
}
105118
106119
class Bar extends Foo {
107120
foo(): Observable<number> { return of(43); }
121+
static s(): Observable<number> { return of(43); }
108122
}
109123
110124
const Baz = class extends Foo {
@@ -152,16 +166,31 @@ ruleTester({ types: true }).run('no-misused-observables', noMisusedObservablesRu
152166
a: () => of(42),
153167
b,
154168
c(): Observable<number> { return of(42); },
169+
d(): Observable<number> { return of(42); },
155170
};
156171
`,
157172
stripIndent`
158173
// void return property; unrelated
174+
import { Observable, of } from "rxjs";
175+
159176
type Foo = { a: () => void, b: () => void, c: () => void };
160177
const b: () => number = () => 42;
161178
const foo: Foo = {
162179
a: () => 42,
163180
b,
164-
c(): number { return 42; },
181+
['c'](): number { return 42; },
182+
};
183+
const bar = {
184+
a(): Observable<number> { return of(42); },
185+
}
186+
`,
187+
stripIndent`
188+
// computed property name for method declaration is not supported
189+
import { Observable, of } from "rxjs";
190+
191+
type Foo = { a: () => void };
192+
const foo: Foo = {
193+
['a'](): Observable<number> { return of(42); },
165194
};
166195
`,
167196
stripIndent`
@@ -203,6 +232,9 @@ ruleTester({ types: true }).run('no-misused-observables', noMisusedObservablesRu
203232
function bar(): () => void {
204233
return (): number => 42;
205234
}
235+
function baz(): () => void {
236+
return (): void => { return; };
237+
}
206238
`,
207239
// #endregion valid; void return return value
208240
// #region valid; void return variable

0 commit comments

Comments
 (0)