@@ -444,6 +444,105 @@ describe('Rokt Forwarder', () => {
444444 } ) ;
445445 } ) ;
446446
447+ describe ( '#attachLauncher' , ( ) => {
448+ let mockMessageQueue ;
449+
450+ beforeEach ( ( ) => {
451+ mockMessageQueue = [ ] ;
452+
453+ // Reset forwarder state between tests
454+ window . mParticle . forwarder . isInitialized = false ;
455+
456+ window . Rokt = new MockRoktForwarder ( ) ;
457+ window . mParticle . Rokt = window . Rokt ;
458+ window . mParticle . Rokt . attachKitCalled = false ;
459+ window . mParticle . Rokt . attachKit = async ( kit ) => {
460+ console . log ( 'Rokt Kit: attachKit called' ) ;
461+ window . mParticle . Rokt . attachKitCalled = true ;
462+ window . mParticle . Rokt . kit = kit ;
463+
464+ // Call queued messages
465+ mockMessageQueue . forEach ( ( message ) => message ( ) ) ;
466+ mockMessageQueue = [ ] ;
467+
468+ return Promise . resolve ( ) ;
469+ } ;
470+ window . mParticle . Rokt . filters = {
471+ userAttributesFilters : [ ] ,
472+ filterUserAttributes : function ( attributes ) {
473+ return attributes ;
474+ } ,
475+ filteredUser : {
476+ getMPID : function ( ) {
477+ return '123' ;
478+ } ,
479+ } ,
480+ } ;
481+ } ) ;
482+
483+ it ( 'should call attachKit' , async ( ) => {
484+ await window . mParticle . forwarder . init (
485+ { accountId : '123456' } ,
486+ reportService . cb ,
487+ true ,
488+ null ,
489+ { }
490+ ) ;
491+
492+ await waitForCondition ( ( ) => window . mParticle . Rokt . attachKitCalled ) ;
493+
494+ window . mParticle . Rokt . attachKitCalled . should . equal ( true ) ;
495+ } ) ;
496+
497+ it ( 'should set isInitialized to true' , async ( ) => {
498+ await window . mParticle . forwarder . init (
499+ { accountId : '123456' } ,
500+ reportService . cb ,
501+ true ,
502+ null ,
503+ { }
504+ ) ;
505+
506+ await waitForCondition ( ( ) => window . mParticle . Rokt . attachKitCalled ) ;
507+
508+ window . mParticle . forwarder . isInitialized . should . equal ( true ) ;
509+ } ) ;
510+
511+ it ( 'should initialize the kit before calling queued messages' , async ( ) => {
512+ let queuedMessageCalled = false ;
513+ let wasKitInitializedFirst = false ;
514+
515+ const queuedMessage = ( ) => {
516+ wasKitInitializedFirst =
517+ window . mParticle . Rokt . kit &&
518+ window . mParticle . Rokt . kit . isInitialized ;
519+ queuedMessageCalled = true ;
520+ } ;
521+
522+ mockMessageQueue . push ( queuedMessage ) ;
523+
524+ await window . mParticle . forwarder . init (
525+ { accountId : '123456' } ,
526+ reportService . cb ,
527+ true ,
528+ null ,
529+ { }
530+ ) ;
531+
532+ window . mParticle . forwarder . isInitialized . should . equal ( false ) ;
533+ queuedMessageCalled . should . equal ( false ) ;
534+
535+ await waitForCondition ( ( ) => window . mParticle . Rokt . attachKitCalled ) ;
536+
537+ window . mParticle . forwarder . isInitialized . should . equal ( true ) ;
538+ queuedMessageCalled . should . equal ( true ) ;
539+
540+ wasKitInitializedFirst . should . equal ( true ) ;
541+
542+ mockMessageQueue . length . should . equal ( 0 ) ;
543+ } ) ;
544+ } ) ;
545+
447546 describe ( '#selectPlacements' , ( ) => {
448547 beforeEach ( ( ) => {
449548 window . Rokt = new MockRoktForwarder ( ) ;
0 commit comments