Skip to content

Commit 2053869

Browse files
committed
chore: vitest v4 fixes
1 parent d825df9 commit 2053869

File tree

3 files changed

+33
-18
lines changed

3 files changed

+33
-18
lines changed

test/e2e/extend-registry.test.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ describe('basic', async () => {
99
await setup({
1010
rootDir: resolve('../fixtures/extend-registry'),
1111
})
12-
it('extended registry script loads and executes function', async () => {
12+
it('extended registry script loads and executes function', { timeout: 30000 }, async () => {
1313
const page = await createPage()
1414
const logs: { text: string, location: string }[] = []
1515
// visit and collect all logs, we need to do a snapshot on them
@@ -37,7 +37,5 @@ describe('basic', async () => {
3737
},
3838
]
3939
`)
40-
}, {
41-
timeout: 30000,
4240
})
4341
})

test/unit/__mocks__/google-maps-api.ts

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,28 +33,44 @@ export const createMockMarkerClusterer = () => ({
3333
render: vi.fn(),
3434
})
3535

36+
// Class-based mocks for Vitest 4 constructor support - returns shared instance
37+
const createMockClass = <T>(instance: T) => {
38+
const MockClass = vi.fn(function () {
39+
return instance
40+
}) as unknown as (new (...args: any[]) => T) & ReturnType<typeof vi.fn>
41+
return MockClass
42+
}
43+
3644
export const createMockGoogleMapsAPI = () => {
3745
const mockMarker = createMockMarker()
3846
const mockAdvancedMarkerElement = createMockAdvancedMarkerElement()
3947
const mockInfoWindow = createMockInfoWindow()
4048
const mockPinElement = createMockPinElement()
4149
const mockMarkerClusterer = createMockMarkerClusterer()
4250

51+
const MockMarker = createMockClass(mockMarker)
52+
const MockAdvancedMarkerElement = createMockClass(mockAdvancedMarkerElement)
53+
const MockPinElement = createMockClass(mockPinElement)
54+
const MockInfoWindow = createMockClass(mockInfoWindow)
55+
const MockLatLng = vi.fn(function (this: any, lat: number, lng: number) {
56+
return { lat, lng }
57+
}) as unknown as (new (lat: number, lng: number) => { lat: number, lng: number }) & ReturnType<typeof vi.fn>
58+
4359
const mockMapsApi = {
44-
Marker: vi.fn(() => mockMarker),
60+
Marker: MockMarker,
4561
marker: {
46-
AdvancedMarkerElement: vi.fn(() => mockAdvancedMarkerElement),
47-
PinElement: vi.fn(() => mockPinElement),
62+
AdvancedMarkerElement: MockAdvancedMarkerElement,
63+
PinElement: MockPinElement,
4864
},
49-
InfoWindow: vi.fn(() => mockInfoWindow),
65+
InfoWindow: MockInfoWindow,
5066
event: {
5167
clearInstanceListeners: vi.fn(),
5268
},
5369
importLibrary: vi.fn().mockResolvedValue({
54-
AdvancedMarkerElement: vi.fn(() => mockAdvancedMarkerElement),
55-
PinElement: vi.fn(() => mockPinElement),
70+
AdvancedMarkerElement: MockAdvancedMarkerElement,
71+
PinElement: MockPinElement,
5672
}),
57-
LatLng: vi.fn((lat: number, lng: number) => ({ lat, lng })),
73+
LatLng: MockLatLng,
5874
}
5975

6076
return {

test/unit/__mocks__/markerclusterer.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import { vi } from 'vitest'
22

3-
export const MarkerClusterer = vi.fn().mockImplementation(options => ({
4-
addMarker: vi.fn(),
5-
removeMarker: vi.fn(),
6-
setMap: vi.fn(),
7-
addListener: vi.fn(),
8-
render: vi.fn(),
9-
...options,
10-
}))
3+
export const MarkerClusterer = vi.fn(function (this: any, options: any) {
4+
this.addMarker = vi.fn()
5+
this.removeMarker = vi.fn()
6+
this.setMap = vi.fn()
7+
this.addListener = vi.fn()
8+
this.render = vi.fn()
9+
Object.assign(this, options)
10+
return this
11+
}) as unknown as (new (options: any) => any) & ReturnType<typeof vi.fn>
1112

1213
// Mock the entire module
1314
const mockMarkerClusterer = { MarkerClusterer }

0 commit comments

Comments
 (0)