@@ -136,18 +136,8 @@ describe("Search Widget Listener Fix", () => {
136136 activity . turtleBlocksScale = 1 ;
137137
138138 // Fresh mocks for each instance
139- activity . addEventListener = jest . fn ( function ( target , type , listener ) {
140- if ( target && target . addEventListener ) {
141- target . addEventListener ( type , listener ) ;
142- }
143- if ( ! this . _listeners ) this . _listeners = [ ] ;
144- this . _listeners . push ( { target, type, listener } ) ;
145- } ) ;
146- activity . removeEventListener = jest . fn ( function ( target , type , listener ) {
147- if ( target && target . removeEventListener ) {
148- target . removeEventListener ( type , listener ) ;
149- }
150- } ) ;
139+ activity = new Activity ( ) ;
140+ activity . turtleBlocksScale = 1 ;
151141
152142 // Re-inject mocks that might be overwritten or needed
153143 activity . searchWidget = sandbox . document . getElementById ( "search" ) ;
@@ -167,35 +157,35 @@ describe("Search Widget Listener Fix", () => {
167157 throw e ;
168158 }
169159
170- const addCalls = activity . addEventListener . mock . calls . filter ( c => c [ 1 ] === "mousedown" ) ;
160+ const addCalls = sandbox . document . addEventListener . mock . calls . filter ( c => c [ 0 ] === "mousedown" ) ;
171161 expect ( addCalls . length ) . toBe ( 1 ) ;
172162 } ) ;
173163
174164 test ( "showSearchWidget should NOT accumulate listeners when toggled" , ( ) => {
175165 activity . showSearchWidget ( ) ; // Toggles ON
176- expect ( activity . addEventListener . mock . calls . filter ( c => c [ 1 ] === "mousedown" ) . length ) . toBe ( 1 ) ;
166+ expect ( sandbox . document . addEventListener . mock . calls . filter ( c => c [ 0 ] === "mousedown" ) . length ) . toBe ( 1 ) ;
177167
178168 activity . showSearchWidget ( ) ; // Toggles OFF
179169
180- expect ( activity . removeEventListener . mock . calls . filter ( c => c [ 1 ] === "mousedown" ) . length ) . toBe ( 1 ) ;
170+ expect ( sandbox . document . removeEventListener . mock . calls . filter ( c => c [ 0 ] === "mousedown" ) . length ) . toBe ( 1 ) ;
181171 // addEventListener should NOT have been called again during toggle OFF
182- expect ( activity . addEventListener . mock . calls . filter ( c => c [ 1 ] === "mousedown" ) . length ) . toBe ( 1 ) ;
172+ expect ( sandbox . document . addEventListener . mock . calls . filter ( c => c [ 0 ] === "mousedown" ) . length ) . toBe ( 1 ) ;
183173 } ) ;
184174
185- test ( "hideSearchWidget should remove the listener via wrapper " , ( ) => {
175+ test ( "hideSearchWidget should remove the listener" , ( ) => {
186176 activity . showSearchWidget ( ) ;
187177
188178 // Capture the listener added
189- const listener = activity . addEventListener . mock . calls . find ( c => c [ 1 ] === "mousedown" ) [ 2 ] ;
179+ const listener = sandbox . document . addEventListener . mock . calls . find ( c => c [ 0 ] === "mousedown" ) [ 1 ] ;
190180
191181 activity . hideSearchWidget ( ) ;
192182
193- expect ( activity . removeEventListener ) . toHaveBeenCalledWith ( sandbox . document , "mousedown" , listener ) ;
183+ expect ( sandbox . document . removeEventListener ) . toHaveBeenCalledWith ( "mousedown" , listener ) ;
194184 } ) ;
195185
196186 test ( "clicking inside search should NOT remove listener" , ( ) => {
197187 activity . showSearchWidget ( ) ;
198- const listener = activity . addEventListener . mock . calls . find ( c => c [ 1 ] === "mousedown" ) [ 2 ] ;
188+ const listener = sandbox . document . addEventListener . mock . calls . find ( c => c [ 0 ] === "mousedown" ) [ 1 ] ;
199189
200190 const searchElem = activity . searchWidget ;
201191 searchElem . style . visibility = "visible" ;
@@ -207,20 +197,20 @@ describe("Search Widget Listener Fix", () => {
207197 searchElem . contains . mockImplementation ( target => target === searchElem ) ;
208198
209199 // Verify removeEventListener was NOT called for this listener
210- const removeCalls = activity . removeEventListener . mock . calls . filter ( c => c [ 2 ] === listener ) ;
200+ const removeCalls = sandbox . document . removeEventListener . mock . calls . filter ( c => c [ 1 ] === listener ) ;
211201 expect ( removeCalls . length ) . toBe ( 0 ) ;
212202 } ) ;
213203
214204 test ( "clicking outside search SHOULD remove listener and hide widget" , ( ) => {
215205 activity . showSearchWidget ( ) ;
216- const listener = activity . addEventListener . mock . calls . find ( c => c [ 1 ] === "mousedown" ) [ 2 ] ;
206+ const listener = sandbox . document . addEventListener . mock . calls . find ( c => c [ 0 ] === "mousedown" ) [ 1 ] ;
217207 const hideSpy = jest . spyOn ( activity , "hideSearchWidget" ) ;
218208
219209 // Clicked outside
220210 listener ( { target : { } } ) ;
221211
222212 expect ( hideSpy ) . toHaveBeenCalled ( ) ;
223- expect ( activity . removeEventListener ) . toHaveBeenCalledWith ( sandbox . document , "mousedown" , listener ) ;
213+ expect ( sandbox . document . removeEventListener ) . toHaveBeenCalledWith ( "mousedown" , listener ) ;
224214 hideSpy . mockRestore ( ) ;
225215 } ) ;
226216} ) ;
0 commit comments