Skip to content

Commit 4e656f0

Browse files
crisbetommalerba
authored andcommitted
refactor: fix tests leaking overlay containers (#5600)
Fixes a few test suites that were leaking `.cdk-overlay-container` instances.
1 parent c09e8a7 commit 4e656f0

File tree

4 files changed

+29
-18
lines changed

4 files changed

+29
-18
lines changed

src/lib/core/overlay/scroll/block-scroll-strategy.spec.ts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
OverlayState,
1010
Overlay,
1111
OverlayRef,
12+
OverlayContainer,
1213
} from '../../core';
1314

1415

@@ -26,24 +27,26 @@ describe('BlockScrollStrategy', () => {
2627
}));
2728

2829
beforeEach(inject([Overlay, ViewportRuler], (overlay: Overlay, viewportRuler: ViewportRuler) => {
29-
let overlayState = new OverlayState();
30+
let overlayState = new OverlayState();
3031

31-
overlayState.scrollStrategy = overlay.scrollStrategies.block();
32-
overlayRef = overlay.create(overlayState);
33-
componentPortal = new ComponentPortal(FocacciaMsg);
32+
overlayState.scrollStrategy = overlay.scrollStrategies.block();
33+
overlayRef = overlay.create(overlayState);
34+
componentPortal = new ComponentPortal(FocacciaMsg);
3435

35-
viewport = viewportRuler;
36-
forceScrollElement = document.createElement('div');
37-
document.body.appendChild(forceScrollElement);
38-
forceScrollElement.style.width = '100px';
39-
forceScrollElement.style.height = '3000px';
40-
}));
36+
viewport = viewportRuler;
37+
forceScrollElement = document.createElement('div');
38+
document.body.appendChild(forceScrollElement);
39+
forceScrollElement.style.width = '100px';
40+
forceScrollElement.style.height = '3000px';
41+
forceScrollElement.style.background = 'rebeccapurple';
42+
}));
4143

42-
afterEach(() => {
44+
afterEach(inject([OverlayContainer], (container: OverlayContainer) => {
4345
overlayRef.dispose();
4446
document.body.removeChild(forceScrollElement);
4547
setScrollPosition(0, 0);
46-
});
48+
container.getContainerElement().parentNode!.removeChild(container.getContainerElement());
49+
}));
4750

4851
it('should toggle scroll blocking along the y axis', skipIOS(() => {
4952
setScrollPosition(0, 100);

src/lib/core/overlay/scroll/close-scroll-strategy.spec.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
OverlayRef,
1010
OverlayModule,
1111
ScrollDispatcher,
12+
OverlayContainer,
1213
} from '../../core';
1314

1415

@@ -39,9 +40,10 @@ describe('CloseScrollStrategy', () => {
3940
componentPortal = new ComponentPortal(MozarellaMsg);
4041
}));
4142

42-
afterEach(() => {
43+
afterEach(inject([OverlayContainer], (container: OverlayContainer) => {
4344
overlayRef.dispose();
44-
});
45+
container.getContainerElement().parentNode!.removeChild(container.getContainerElement());
46+
}));
4547

4648
it('should detach the overlay as soon as the user scrolls', () => {
4749
overlayRef.attach(componentPortal);

src/lib/core/overlay/scroll/reposition-scroll-strategy.spec.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
OverlayState,
99
OverlayRef,
1010
OverlayModule,
11+
OverlayContainer,
1112
ScrollDispatcher,
1213
} from '../../core';
1314

@@ -39,9 +40,10 @@ describe('RepositionScrollStrategy', () => {
3940
componentPortal = new ComponentPortal(PastaMsg);
4041
}));
4142

42-
afterEach(() => {
43+
afterEach(inject([OverlayContainer], (container: OverlayContainer) => {
4344
overlayRef.dispose();
44-
});
45+
container.getContainerElement().parentNode!.removeChild(container.getContainerElement());
46+
}));
4547

4648
it('should update the overlay position when the page is scrolled', () => {
4749
overlayRef.attach(componentPortal);

src/lib/datepicker/datepicker.spec.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {Component, ViewChild} from '@angular/core';
2-
import {async, ComponentFixture, TestBed} from '@angular/core/testing';
2+
import {async, ComponentFixture, TestBed, inject} from '@angular/core/testing';
33
import {NoopAnimationsModule} from '@angular/platform-browser/animations';
44
import {FormControl, FormsModule, ReactiveFormsModule} from '@angular/forms';
55
import {By} from '@angular/platform-browser';
@@ -8,11 +8,15 @@ import {MdDatepicker} from './datepicker';
88
import {MdDatepickerInput} from './datepicker-input';
99
import {MdInputModule} from '../input/index';
1010
import {MdNativeDateModule, DateAdapter, NativeDateAdapter} from '../core/datetime/index';
11-
import {ESCAPE} from '../core';
11+
import {ESCAPE, OverlayContainer} from '../core';
1212
import {dispatchFakeEvent, dispatchMouseEvent, dispatchKeyboardEvent} from '@angular/cdk/testing';
1313
import {DEC, JAN} from '../core/testing/month-constants';
1414

1515
describe('MdDatepicker', () => {
16+
afterEach(inject([OverlayContainer], (container: OverlayContainer) => {
17+
container.getContainerElement().parentNode!.removeChild(container.getContainerElement());
18+
}));
19+
1620
describe('with MdNativeDateModule', () => {
1721
beforeEach(async(() => {
1822
TestBed.configureTestingModule({

0 commit comments

Comments
 (0)