Skip to content

Commit 241967c

Browse files
authored
feat: google.maps.event mocks (#189)
1 parent 35bd810 commit 241967c

File tree

7 files changed

+83
-13
lines changed

7 files changed

+83
-13
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ node_modules
22
dist/
33
.npmrc
44
**/docs
5+
.prettierrc
56

67
# Logs
78
logs

src/drawing/marker/marker.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616

1717
import { LatLng } from "../../maps/coordinates/latlng";
18+
import { MapsEventListener } from "../../maps/event/event";
1819
import { MVCObject } from "../../maps/event/mvcobject";
1920

2021
export class Marker extends MVCObject implements google.maps.Marker {
@@ -124,7 +125,6 @@ export class Marker extends MVCObject implements google.maps.Marker {
124125
(
125126
eventName: string,
126127
handler: (this: Marker, event: MouseEvent) => void
127-
): google.maps.MapsEventListener =>
128-
jest.fn() as unknown as google.maps.MapsEventListener
128+
): google.maps.MapsEventListener => MapsEventListener
129129
);
130130
}

src/index.ts

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import {
4444
import { StreetViewService } from "./street-view/service/service";
4545
import { ControlPosition } from "./maps/controls/controlposition";
4646
import { MapTypeId } from "./maps/maps/constants";
47+
import { event } from "./maps/event/event";
4748

4849
const initialize = function (): void {
4950
(global as any).google = {
@@ -66,16 +67,7 @@ const initialize = function (): void {
6667
StreetViewPreference: StreetViewPreference,
6768
StreetViewSource: StreetViewSource,
6869
StreetViewStatus: StreetViewStatus,
69-
event: {
70-
addListener: jest.fn(),
71-
addListenerOnce: jest.fn(),
72-
addDomListerner: jest.fn(),
73-
addDomListernerOnce: jest.fn(),
74-
clearInstanceListeners: jest.fn(),
75-
clearListeners: jest.fn(),
76-
removeListener: jest.fn(),
77-
trigger: jest.fn(),
78-
},
70+
event: event,
7971
places: {
8072
Autocomplete: Autocomplete,
8173
SearchBox: SearchBox,
@@ -93,6 +85,7 @@ const initialize = function (): void {
9385
export {
9486
Circle,
9587
Data,
88+
event,
9689
Feature,
9790
LatLng,
9891
LatLngBounds,

src/maps/event/event.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { initialize } from "../../index";
2+
import { event } from "./event";
3+
4+
test("event system", () => {
5+
initialize();
6+
expect(google.maps.event).toStrictEqual(event);
7+
});

src/maps/event/event.ts

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
export const MapsEventListener: google.maps.MapsEventListener = {
2+
remove: jest.fn(),
3+
};
4+
5+
export const event: typeof google.maps.event = {
6+
addDomListener: jest
7+
.fn()
8+
.mockImplementation(
9+
(
10+
instance: object,
11+
eventName: string,
12+
handler: Function,
13+
capture?: boolean
14+
): google.maps.MapsEventListener => MapsEventListener
15+
),
16+
addDomListenerOnce: jest
17+
.fn()
18+
.mockImplementation(
19+
(
20+
instance: object,
21+
eventName: string,
22+
handler: Function,
23+
capture?: boolean
24+
): google.maps.MapsEventListener => MapsEventListener
25+
),
26+
addListener: jest
27+
.fn()
28+
.mockImplementation(
29+
(
30+
instance: object,
31+
eventName: string,
32+
handler: Function
33+
): google.maps.MapsEventListener => MapsEventListener
34+
),
35+
addListenerOnce: jest
36+
.fn()
37+
.mockImplementation(
38+
(
39+
instance: object,
40+
eventName: string,
41+
handler: Function
42+
): google.maps.MapsEventListener => MapsEventListener
43+
),
44+
clearInstanceListeners: jest
45+
.fn()
46+
.mockImplementation((instance: object): void => null),
47+
clearListeners: jest
48+
.fn()
49+
.mockImplementation((instance: object, eventName: string): void => null),
50+
hasListeners: jest
51+
.fn()
52+
.mockImplementation(
53+
(instance: object, eventName: string): boolean => false
54+
),
55+
removeListener: jest
56+
.fn()
57+
.mockImplementation(
58+
(listener: google.maps.MapsEventListener): void => null
59+
),
60+
trigger: jest
61+
.fn()
62+
.mockImplementation(
63+
(instance: object, eventName: string, ...eventArgs: any[]): void => null
64+
),
65+
};

src/maps/event/mvcobject.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ test("instances are stored", () => {
66
const mvcObject = new MVCObject();
77
expect(MVCObject.mockInstances).toStrictEqual([mvcObject]);
88
expect(MVCObject.mockInstances[0].addListener).toBeTruthy();
9+
expect(mvcObject.addListener()).toBeTruthy();
910
});
1011

1112
test("setup child class", () => {

src/maps/event/mvcobject.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
* limitations under the License.
1515
*/
1616

17+
import { MapsEventListener } from "./event";
18+
1719
/* eslint-disable @typescript-eslint/no-explicit-any */
1820

1921
export class MVCObject implements google.maps.MVCObject {
@@ -38,7 +40,8 @@ export class MVCObject implements google.maps.MVCObject {
3840
public addListener = jest
3941
.fn()
4042
.mockImplementation(
41-
(eventName: string, handler: (...args: any[]) => void): void => null
43+
(eventName: string, handler: Function): google.maps.MapsEventListener =>
44+
MapsEventListener
4245
);
4346
public bindTo = jest
4447
.fn()

0 commit comments

Comments
 (0)