2025-01-03 09:14:18 +03:00

54 lines
1.6 KiB
JavaScript

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$))`'}],
}
],
}
);
});