@@ -11,6 +11,8 @@ import { S3TransferManager } from "./S3TransferManager";
1111 * - removeEventListener()
1212 * - TM Constructor
1313 * - *iterateListeners()
14+ * - joinStreams()
15+ * - iterateStreams()
1416 * - validateExpectedRanges()
1517 */
1618
@@ -114,7 +116,7 @@ describe("S3TransferManager Unit Tests", () => {
114116 } ) ;
115117 } ) ;
116118
117- describe ( "addEventListener" , ( ) => {
119+ describe ( "addEventListener() " , ( ) => {
118120 it ( "Should register callbacks for all supported event types" , ( ) => {
119121 tm . addEventListener ( "transferInitiated" , initiated ) ;
120122 tm . addEventListener ( "bytesTransferred" , transferring ) ;
@@ -206,7 +208,7 @@ describe("S3TransferManager Unit Tests", () => {
206208 } ) ;
207209 } ) ;
208210
209- describe ( "dispatchEvent" , ( ) => {
211+ describe ( "dispatchEvent() " , ( ) => {
210212 it ( "Should dispatch an event" , ( ) => {
211213 const mockCallback = vi . fn ( ) ;
212214 tm . addEventListener ( "bytesTransferred" , mockCallback ) ;
@@ -259,9 +261,73 @@ describe("S3TransferManager Unit Tests", () => {
259261 expect ( mockCallback ) . toHaveBeenCalledWith ( event ) ;
260262 expect ( result ) . toBe ( true ) ;
261263 } ) ;
264+
265+ it ( "Should call listeners in the order they were added" , ( ) => {
266+ const callOrder : number [ ] = [ ] ;
267+ const mockCallback1 = vi . fn ( ( ) => callOrder . push ( 1 ) ) ;
268+ const mockCallback2 = vi . fn ( ( ) => callOrder . push ( 2 ) ) ;
269+ const mockCallback3 = vi . fn ( ( ) => callOrder . push ( 3 ) ) ;
270+
271+ tm . addEventListener ( "transferInitiated" , mockCallback1 ) ;
272+ tm . addEventListener ( "transferInitiated" , mockCallback2 ) ;
273+ tm . addEventListener ( "transferInitiated" , mockCallback3 ) ;
274+
275+ const event = Object . assign ( new Event ( "transferInitiated" ) , {
276+ request : { } ,
277+ snapshot : { } ,
278+ } ) ;
279+
280+ tm . dispatchEvent ( event ) ;
281+
282+ expect ( callOrder ) . toEqual ( [ 1 , 2 , 3 ] ) ;
283+ } ) ;
284+
285+ it ( "Should handle object-style callbacks with handleEvent method" , ( ) => {
286+ const mockCallback = vi . fn ( ) ;
287+ const objectCallback = {
288+ handleEvent : mockCallback ,
289+ } ;
290+ tm . addEventListener ( "transferInitiated" , objectCallback as any ) ;
291+
292+ const event = Object . assign ( new Event ( "transferInitiated" ) , {
293+ request : { } ,
294+ snapshot : { } ,
295+ } ) ;
296+
297+ tm . dispatchEvent ( event ) ;
298+
299+ expect ( mockCallback ) . toHaveBeenCalledTimes ( 1 ) ;
300+ expect ( mockCallback ) . toHaveBeenCalledWith ( event ) ;
301+ } ) ;
302+
303+ it ( "Should handle events with no registered listeners" , ( ) => {
304+ const event = Object . assign ( new Event ( "transferInitiated" ) , {
305+ request : { } ,
306+ snapshot : { } ,
307+ } ) ;
308+ const result = tm . dispatchEvent ( event ) ;
309+
310+ expect ( result ) . toBe ( true ) ;
311+ } ) ;
312+
313+ it ( "Should handle unknown event types" , ( ) => { } ) ;
314+
315+ it ( "Should handle a mix of object-style callbacks and functions" , ( ) => { } ) ;
262316 } ) ;
263317
264- describe . skip ( "removeEventListener" , ( ) => { } ) ;
318+ describe . skip ( "removeEventListener()" , ( ) => {
319+ it ( "Should remove a listener from an event" , ( ) => { } ) ;
320+
321+ it ( "Should remove a listener from an event" , ( ) => { } ) ;
322+
323+ it ( "Should remove a listener from an event" , ( ) => { } ) ;
324+ } ) ;
325+
326+ describe . skip ( "iterateListeners()" , ( ) => { } ) ;
327+
328+ describe . skip ( "joinStreams()" , ( ) => { } ) ;
329+
330+ describe . skip ( "iterateStreams()" , ( ) => { } ) ;
265331 } ) ;
266332
267333 describe ( "validateExpectedRanges()" , ( ) => {
0 commit comments