var RuleTester = require('eslint').RuleTester; var rxjsNoMemoryLeaksRule = require('./rxjs-no-memory-leaks'); describe('rxjs-no-memory-leak', () => { let ruleTester = new RuleTester({ parserOptions: {ecmaVersion: 2015} }); ruleTester.run( "rxjs-no-memory-leaks", rxjsNoMemoryLeaksRule, { valid: [{ code: ` let subjValid$ = new Subject(); let destroy$ = new Subject(); subjValid$.pipe(map(() => 1234), tap(console.log), takeUntil(destroy$)).subscribe(console.log); subjValid$.next(); `, }], invalid: [ { code: ` let subjInval1$ = new Subject(); subjInval$1.subscribe(() => console.log(1234)); `, errors: [{message: 'Subscriptions Should be piped with release operator'}], }, { code: ` let subjInval2$ = new Subject(); subjInval2$.pipe().subscribe(() => console.log(1234)); `, errors: [{message: 'Pipe associated with subscribed observable should have release operator such `takeUntil(destroy$)`'}], }, { code: ` let subjInval3$ = new Subject(); subjInval3$.pipe(map(() => console.log(4567))).subscribe(() => console.log(1234)); `, errors: [{message: 'Last operator in pipe should release subscription. Example: `subj$.pipe(operator1(), operator2(), takeUntil(destroy$))`'}], } ], } ); });