@@ -5,6 +5,18 @@ import { ruleTester } from '../rule-tester';
55
66ruleTester ( { 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: () => of(42),
155170 };
156171 ` ,
157172 stripIndent `
158173 // void return property; unrelated
174+ import { 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: () => 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