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