Skip to content

Commit 4b08bbc

Browse files
authored
refactor(google-maps): switch tests away from fakeAsync (#32957)
Reworks the Google Maps tests to not depend on `fakeAsync`.
1 parent 5be204a commit 4b08bbc

File tree

14 files changed

+167
-239
lines changed

14 files changed

+167
-239
lines changed

src/google-maps/map-advanced-marker/map-advanced-marker.spec.ts

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {Component, ViewChild} from '@angular/core';
2-
import {TestBed, fakeAsync, flush} from '@angular/core/testing';
2+
import {TestBed} from '@angular/core/testing';
33

44
import {DEFAULT_OPTIONS, GoogleMap} from '../google-map/google-map';
55
import {
@@ -22,13 +22,13 @@ describe('MapAdvancedMarker', () => {
2222
(window.google as any) = undefined;
2323
});
2424

25-
it('initializes a Google Map advanced marker', fakeAsync(() => {
25+
it('initializes a Google Map advanced marker', () => {
2626
const advancedMarkerSpy = createAdvancedMarkerSpy(DEFAULT_MARKER_OPTIONS);
2727
const advancedMarkerConstructorSpy = createAdvancedMarkerConstructorSpy(advancedMarkerSpy);
2828

2929
const fixture = TestBed.createComponent(TestApp);
3030
fixture.detectChanges();
31-
flush();
31+
3232
expect(advancedMarkerConstructorSpy).toHaveBeenCalledWith({
3333
...DEFAULT_MARKER_OPTIONS,
3434
title: undefined,
@@ -37,9 +37,9 @@ describe('MapAdvancedMarker', () => {
3737
zIndex: undefined,
3838
map: mapSpy,
3939
});
40-
}));
40+
});
4141

42-
it('sets advanced marker inputs', fakeAsync(() => {
42+
it('sets advanced marker inputs', () => {
4343
const options: google.maps.marker.AdvancedMarkerElementOptions = {
4444
position: {lat: 3, lng: 5},
4545
title: 'marker title',
@@ -59,12 +59,11 @@ describe('MapAdvancedMarker', () => {
5959
fixture.componentInstance.zIndex = options.zIndex!;
6060

6161
fixture.detectChanges();
62-
flush();
6362

6463
expect(advancedMarkerConstructorSpy).toHaveBeenCalledWith(options);
65-
}));
64+
});
6665

67-
it('sets marker options, ignoring map', fakeAsync(() => {
66+
it('sets marker options, ignoring map', () => {
6867
const options: google.maps.marker.AdvancedMarkerElementOptions = {
6968
position: {lat: 3, lng: 5},
7069
title: 'marker title',
@@ -78,12 +77,11 @@ describe('MapAdvancedMarker', () => {
7877
const fixture = TestBed.createComponent(TestApp);
7978
fixture.componentInstance.options = options;
8079
fixture.detectChanges();
81-
flush();
8280

8381
expect(advancedMarkerConstructorSpy).toHaveBeenCalledWith({...options, map: mapSpy});
84-
}));
82+
});
8583

86-
it('gives precedence to specific inputs over options', fakeAsync(() => {
84+
it('gives precedence to specific inputs over options', () => {
8785
const options: google.maps.marker.AdvancedMarkerElementOptions = {
8886
position: {lat: 3, lng: 5},
8987
title: 'marker title',
@@ -112,20 +110,18 @@ describe('MapAdvancedMarker', () => {
112110
fixture.componentInstance.options = options!;
113111

114112
fixture.detectChanges();
115-
flush();
116113

117114
expect(advancedMarkerConstructorSpy).toHaveBeenCalledWith(expectedOptions);
118-
}));
115+
});
119116

120-
it('initializes marker event handlers', fakeAsync(() => {
117+
it('initializes marker event handlers', () => {
121118
const advancedMarkerSpy = createAdvancedMarkerSpy(DEFAULT_MARKER_OPTIONS);
122119
createAdvancedMarkerConstructorSpy(advancedMarkerSpy);
123120

124121
const customSpy = advancedMarkerSpy.addListener;
125122
const nativeSpy = advancedMarkerSpy.addEventListener;
126123
const fixture = TestBed.createComponent(TestApp);
127124
fixture.detectChanges();
128-
flush();
129125

130126
expect(customSpy).toHaveBeenCalledWith('click', jasmine.any(Function));
131127
expect(nativeSpy).toHaveBeenCalledWith('dblclick', jasmine.any(Function));
@@ -136,16 +132,15 @@ describe('MapAdvancedMarker', () => {
136132
expect(customSpy).not.toHaveBeenCalledWith('drag', jasmine.any(Function));
137133
expect(customSpy).not.toHaveBeenCalledWith('dragend', jasmine.any(Function));
138134
expect(customSpy).not.toHaveBeenCalledWith('dragstart', jasmine.any(Function));
139-
}));
135+
});
140136

141-
it('should be able to add an event listener after init', fakeAsync(() => {
137+
it('should be able to add an event listener after init', () => {
142138
const advancedMarkerSpy = createAdvancedMarkerSpy(DEFAULT_MARKER_OPTIONS);
143139
createAdvancedMarkerConstructorSpy(advancedMarkerSpy);
144140

145141
const addSpy = advancedMarkerSpy.addListener;
146142
const fixture = TestBed.createComponent(TestApp);
147143
fixture.detectChanges();
148-
flush();
149144

150145
expect(addSpy).not.toHaveBeenCalledWith('drag', jasmine.any(Function));
151146

@@ -155,7 +150,7 @@ describe('MapAdvancedMarker', () => {
155150

156151
expect(addSpy).toHaveBeenCalledWith('drag', jasmine.any(Function));
157152
subscription.unsubscribe();
158-
}));
153+
});
159154
});
160155

161156
@Component({

src/google-maps/map-bicycling-layer/map-bicycling-layer.spec.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {Component} from '@angular/core';
2-
import {TestBed, fakeAsync, flush} from '@angular/core/testing';
2+
import {TestBed} from '@angular/core/testing';
33

44
import {DEFAULT_OPTIONS, GoogleMap} from '../google-map/google-map';
55
import {
@@ -23,16 +23,15 @@ describe('MapBicyclingLayer', () => {
2323
(window.google as any) = undefined;
2424
});
2525

26-
it('initializes a Google Map Bicycling Layer', fakeAsync(() => {
26+
it('initializes a Google Map Bicycling Layer', () => {
2727
const bicyclingLayerSpy = createBicyclingLayerSpy();
2828
const bicyclingLayerConstructorSpy = createBicyclingLayerConstructorSpy(bicyclingLayerSpy);
2929
const fixture = TestBed.createComponent(TestApp);
3030
fixture.detectChanges();
31-
flush();
3231

3332
expect(bicyclingLayerConstructorSpy).toHaveBeenCalled();
3433
expect(bicyclingLayerSpy.setMap).toHaveBeenCalledWith(mapSpy);
35-
}));
34+
});
3635
});
3736

3837
@Component({

src/google-maps/map-circle/map-circle.spec.ts

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {Component, ViewChild} from '@angular/core';
2-
import {TestBed, fakeAsync, flush} from '@angular/core/testing';
2+
import {TestBed} from '@angular/core/testing';
33
import {By} from '@angular/platform-browser';
44

55
import {DEFAULT_OPTIONS, GoogleMap} from '../google-map/google-map';
@@ -38,19 +38,18 @@ describe('MapCircle', () => {
3838
(window.google as any) = undefined;
3939
});
4040

41-
it('initializes a Google Map Circle', fakeAsync(() => {
41+
it('initializes a Google Map Circle', () => {
4242
const circleSpy = createCircleSpy({});
4343
const circleConstructorSpy = createCircleConstructorSpy(circleSpy);
4444

4545
const fixture = TestBed.createComponent(TestApp);
4646
fixture.detectChanges();
47-
flush();
4847

4948
expect(circleConstructorSpy).toHaveBeenCalledWith({center: undefined, radius: undefined});
5049
expect(circleSpy.setMap).toHaveBeenCalledWith(mapSpy);
51-
}));
50+
});
5251

53-
it('sets center and radius from input', fakeAsync(() => {
52+
it('sets center and radius from input', () => {
5453
const center: google.maps.LatLngLiteral = {lat: 3, lng: 5};
5554
const radius = 15;
5655
const options: google.maps.CircleOptions = {center, radius};
@@ -61,12 +60,11 @@ describe('MapCircle', () => {
6160
fixture.componentInstance.center = center;
6261
fixture.componentInstance.radius = radius;
6362
fixture.detectChanges();
64-
flush();
6563

6664
expect(circleConstructorSpy).toHaveBeenCalledWith(options);
67-
}));
65+
});
6866

69-
it('gives precedence to other inputs over options', fakeAsync(() => {
67+
it('gives precedence to other inputs over options', () => {
7068
const center: google.maps.LatLngLiteral = {lat: 3, lng: 5};
7169
const radius = 15;
7270
const expectedOptions: google.maps.CircleOptions = {...circleOptions, center, radius};
@@ -78,12 +76,11 @@ describe('MapCircle', () => {
7876
fixture.componentInstance.center = center;
7977
fixture.componentInstance.radius = radius;
8078
fixture.detectChanges();
81-
flush();
8279

8380
expect(circleConstructorSpy).toHaveBeenCalledWith(expectedOptions);
84-
}));
81+
});
8582

86-
it('exposes methods that provide information about the Circle', fakeAsync(() => {
83+
it('exposes methods that provide information about the Circle', () => {
8784
const circleSpy = createCircleSpy(circleOptions);
8885
createCircleConstructorSpy(circleSpy);
8986

@@ -92,7 +89,6 @@ describe('MapCircle', () => {
9289
.query(By.directive(MapCircle))!
9390
.injector.get<MapCircle>(MapCircle);
9491
fixture.detectChanges();
95-
flush();
9692

9793
circleComponent.getCenter();
9894
expect(circleSpy.getCenter).toHaveBeenCalled();
@@ -108,16 +104,15 @@ describe('MapCircle', () => {
108104

109105
circleSpy.getVisible.and.returnValue(true);
110106
expect(circleComponent.getVisible()).toBe(true);
111-
}));
107+
});
112108

113-
it('initializes Circle event handlers', fakeAsync(() => {
109+
it('initializes Circle event handlers', () => {
114110
const circleSpy = createCircleSpy(circleOptions);
115111
createCircleConstructorSpy(circleSpy);
116112

117113
const addSpy = circleSpy.addListener;
118114
const fixture = TestBed.createComponent(TestApp);
119115
fixture.detectChanges();
120-
flush();
121116

122117
expect(addSpy).toHaveBeenCalledWith('center_changed', jasmine.any(Function));
123118
expect(addSpy).toHaveBeenCalledWith('click', jasmine.any(Function));
@@ -132,16 +127,15 @@ describe('MapCircle', () => {
132127
expect(addSpy).not.toHaveBeenCalledWith('mouseup', jasmine.any(Function));
133128
expect(addSpy).not.toHaveBeenCalledWith('radius_changed', jasmine.any(Function));
134129
expect(addSpy).toHaveBeenCalledWith('rightclick', jasmine.any(Function));
135-
}));
130+
});
136131

137-
it('should be able to add an event listener after init', fakeAsync(() => {
132+
it('should be able to add an event listener after init', () => {
138133
const circleSpy = createCircleSpy(circleOptions);
139134
createCircleConstructorSpy(circleSpy);
140135

141136
const addSpy = circleSpy.addListener;
142137
const fixture = TestBed.createComponent(TestApp);
143138
fixture.detectChanges();
144-
flush();
145139

146140
expect(addSpy).not.toHaveBeenCalledWith('dragend', jasmine.any(Function));
147141

@@ -151,7 +145,7 @@ describe('MapCircle', () => {
151145

152146
expect(addSpy).toHaveBeenCalledWith('dragend', jasmine.any(Function));
153147
subscription.unsubscribe();
154-
}));
148+
});
155149
});
156150

157151
@Component({

src/google-maps/map-directions-renderer/map-directions-renderer.spec.ts

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {Component, ViewChild} from '@angular/core';
2-
import {TestBed, fakeAsync, flush} from '@angular/core/testing';
2+
import {TestBed} from '@angular/core/testing';
33
import {By} from '@angular/platform-browser';
44
import {MapDirectionsRenderer} from './map-directions-renderer';
55
import {DEFAULT_OPTIONS, GoogleMap} from '../google-map/google-map';
@@ -28,41 +28,39 @@ describe('MapDirectionsRenderer', () => {
2828
(window.google as any) = undefined;
2929
});
3030

31-
it('initializes a Google Maps DirectionsRenderer', fakeAsync(() => {
31+
it('initializes a Google Maps DirectionsRenderer', () => {
3232
const directionsRendererSpy = createDirectionsRendererSpy({directions: DEFAULT_DIRECTIONS});
3333
const directionsRendererConstructorSpy =
3434
createDirectionsRendererConstructorSpy(directionsRendererSpy);
3535

3636
const fixture = TestBed.createComponent(TestApp);
3737
fixture.componentInstance.options = {directions: DEFAULT_DIRECTIONS};
3838
fixture.detectChanges();
39-
flush();
4039

4140
expect(directionsRendererConstructorSpy).toHaveBeenCalledWith({
4241
directions: DEFAULT_DIRECTIONS,
4342
map: jasmine.any(Object),
4443
});
4544
expect(directionsRendererSpy.setMap).toHaveBeenCalledWith(mapSpy);
46-
}));
45+
});
4746

48-
it('sets directions from directions input', fakeAsync(() => {
47+
it('sets directions from directions input', () => {
4948
const directionsRendererSpy = createDirectionsRendererSpy({directions: DEFAULT_DIRECTIONS});
5049
const directionsRendererConstructorSpy =
5150
createDirectionsRendererConstructorSpy(directionsRendererSpy);
5251

5352
const fixture = TestBed.createComponent(TestApp);
5453
fixture.componentInstance.directions = DEFAULT_DIRECTIONS;
5554
fixture.detectChanges();
56-
flush();
5755

5856
expect(directionsRendererConstructorSpy).toHaveBeenCalledWith({
5957
directions: DEFAULT_DIRECTIONS,
6058
map: jasmine.any(Object),
6159
});
6260
expect(directionsRendererSpy.setMap).toHaveBeenCalledWith(mapSpy);
63-
}));
61+
});
6462

65-
it('gives precedence to directions over options', fakeAsync(() => {
63+
it('gives precedence to directions over options', () => {
6664
const updatedDirections: google.maps.DirectionsResult = {
6765
geocoded_waypoints: [{partial_match: false, place_id: 'test', types: []}],
6866
request: {
@@ -80,16 +78,15 @@ describe('MapDirectionsRenderer', () => {
8078
fixture.componentInstance.options = {directions: DEFAULT_DIRECTIONS};
8179
fixture.componentInstance.directions = updatedDirections;
8280
fixture.detectChanges();
83-
flush();
8481

8582
expect(directionsRendererConstructorSpy).toHaveBeenCalledWith({
8683
directions: updatedDirections,
8784
map: jasmine.any(Object),
8885
});
8986
expect(directionsRendererSpy.setMap).toHaveBeenCalledWith(mapSpy);
90-
}));
87+
});
9188

92-
it('exposes methods that provide information from the DirectionsRenderer', fakeAsync(() => {
89+
it('exposes methods that provide information from the DirectionsRenderer', () => {
9390
const directionsRendererSpy = createDirectionsRendererSpy({});
9491
createDirectionsRendererConstructorSpy(directionsRendererSpy);
9592

@@ -99,7 +96,6 @@ describe('MapDirectionsRenderer', () => {
9996
.query(By.directive(MapDirectionsRenderer))!
10097
.injector.get<MapDirectionsRenderer>(MapDirectionsRenderer);
10198
fixture.detectChanges();
102-
flush();
10399

104100
directionsRendererSpy.getDirections.and.returnValue(DEFAULT_DIRECTIONS);
105101
expect(directionsRendererComponent.getDirections()).toBe(DEFAULT_DIRECTIONS);
@@ -109,21 +105,20 @@ describe('MapDirectionsRenderer', () => {
109105

110106
directionsRendererSpy.getRouteIndex.and.returnValue(10);
111107
expect(directionsRendererComponent.getRouteIndex()).toBe(10);
112-
}));
108+
});
113109

114-
it('initializes DirectionsRenderer event handlers', fakeAsync(() => {
110+
it('initializes DirectionsRenderer event handlers', () => {
115111
const directionsRendererSpy = createDirectionsRendererSpy({});
116112
createDirectionsRendererConstructorSpy(directionsRendererSpy);
117113

118114
const fixture = TestBed.createComponent(TestApp);
119115
fixture.detectChanges();
120-
flush();
121116

122117
expect(directionsRendererSpy.addListener).toHaveBeenCalledWith(
123118
'directions_changed',
124119
jasmine.any(Function),
125120
);
126-
}));
121+
});
127122
});
128123

129124
@Component({

0 commit comments

Comments
 (0)