54 lines
1.6 KiB
JavaScript
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$))`'}],
|
||
|
}
|
||
|
],
|
||
|
}
|
||
|
);
|
||
|
});
|