@@ -16,6 +16,8 @@ const createMockLayers = () => [
1616
1717const createMockMap = ( layers = createMockLayers ( ) ) => {
1818 const layerVisibility : Record < string , string > = { } ;
19+ const sources : Record < string , unknown > = { } ;
20+ const dynamicLayers : Record < string , unknown > = { } ;
1921
2022 return {
2123 getStyle : vi . fn ( ( ) => ( { layers } ) ) ,
@@ -34,6 +36,20 @@ const createMockMap = (layers = createMockLayers()) => {
3436 ) ,
3537 on : vi . fn ( ) ,
3638 off : vi . fn ( ) ,
39+ getSource : vi . fn ( ( id : string ) => sources [ id ] ) ,
40+ addSource : vi . fn ( ( id : string , spec : unknown ) => {
41+ sources [ id ] = spec ;
42+ } ) ,
43+ removeSource : vi . fn ( ( id : string ) => {
44+ delete sources [ id ] ;
45+ } ) ,
46+ getLayer : vi . fn ( ( id : string ) => dynamicLayers [ id ] ) ,
47+ addLayer : vi . fn ( ( layer : { id : string } ) => {
48+ dynamicLayers [ layer . id ] = layer ;
49+ } ) ,
50+ removeLayer : vi . fn ( ( id : string ) => {
51+ delete dynamicLayers [ id ] ;
52+ } ) ,
3753 } ;
3854} ;
3955
@@ -360,7 +376,7 @@ describe('TilesControl', () => {
360376 render ( < TilesControl /> ) ;
361377
362378 const groupSwitches = screen . getAllByRole ( 'switch' ) ;
363- const roadsGroupSwitch = groupSwitches [ 1 ] ! ;
379+ const roadsGroupSwitch = groupSwitches [ 2 ] ! ;
364380
365381 await user . click ( roadsGroupSwitch ) ;
366382
@@ -386,7 +402,7 @@ describe('TilesControl', () => {
386402 render ( < TilesControl /> ) ;
387403
388404 const groupSwitches = screen . getAllByRole ( 'switch' ) ;
389- const waterGroupSwitch = groupSwitches [ 0 ] ! ;
405+ const waterGroupSwitch = groupSwitches [ 1 ] ! ;
390406
391407 await user . click ( waterGroupSwitch ) ;
392408 await user . click ( waterGroupSwitch ) ;
@@ -431,12 +447,14 @@ describe('TilesControl', () => {
431447 expect ( mockMap . getStyle ) . toHaveBeenCalled ( ) ;
432448 const initialCallCount = mockMap . getStyle . mock . calls . length ;
433449
434- const styleDataHandler = mockMap . on . mock . calls . find (
435- ( call ) => call [ 0 ] === 'styledata'
436- ) ?. [ 1 ] ;
450+ const styleDataHandlers = mockMap . on . mock . calls
451+ . filter ( ( call ) => call [ 0 ] === 'styledata' )
452+ . map ( ( call ) => call [ 1 ] ) ;
437453
438454 await act ( async ( ) => {
439- styleDataHandler ?.( ) ;
455+ for ( const handler of styleDataHandlers ) {
456+ handler ?.( ) ;
457+ }
440458 } ) ;
441459
442460 await waitFor ( ( ) => {
@@ -456,12 +474,14 @@ describe('TilesControl', () => {
456474 expect ( screen . getByText ( 'water-fill' ) ) . toBeInTheDocument ( ) ;
457475 } ) ;
458476
459- const styleDataHandler = mockMap . on . mock . calls . find (
460- ( call ) => call [ 0 ] === 'styledata'
461- ) ?. [ 1 ] ;
477+ const styleDataHandlers = mockMap . on . mock . calls
478+ . filter ( ( call ) => call [ 0 ] === 'styledata' )
479+ . map ( ( call ) => call [ 1 ] ) ;
462480
463481 await act ( async ( ) => {
464- styleDataHandler ?.( ) ;
482+ for ( const handler of styleDataHandlers ) {
483+ handler ?.( ) ;
484+ }
465485 } ) ;
466486
467487 await waitFor ( ( ) => {
0 commit comments