@@ -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+
3644export 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 {
0 commit comments