@@ -368,6 +368,231 @@ describe('Rokt Forwarder', () => {
368368 } ) ;
369369 } ) ;
370370
371+ describe ( '#terminate' , ( ) => {
372+ beforeEach ( ( ) => {
373+ window . Rokt = new MockRoktForwarder ( ) ;
374+ window . mParticle . Rokt = window . Rokt ;
375+ window . mParticle . Rokt . attachKitCalled = false ;
376+ window . mParticle . Rokt . attachKit = async ( kit ) => {
377+ window . mParticle . Rokt . attachKitCalled = true ;
378+ window . mParticle . Rokt . kit = kit ;
379+ Promise . resolve ( ) ;
380+ } ;
381+ } ) ;
382+
383+ it ( 'should call launcher.terminate when fully initialized' , async ( ) => {
384+ window . mParticle . forwarder . isInitialized = true ;
385+ window . mParticle . forwarder . launcher = {
386+ terminate : function ( ) {
387+ window . Rokt . terminateCalled = true ;
388+ return Promise . resolve ( ) ;
389+ } ,
390+ } ;
391+
392+ await window . mParticle . forwarder . terminate ( ) ;
393+
394+ window . Rokt . terminateCalled . should . equal ( true ) ;
395+ } ) ;
396+
397+ it ( 'should reject when called before initialization' , async ( ) => {
398+ window . mParticle . forwarder . isInitialized = false ;
399+
400+ try {
401+ await window . mParticle . forwarder . terminate ( ) ;
402+ } catch ( error ) {
403+ error . message . should . equal ( 'Rokt Kit: Not initialized' ) ;
404+ }
405+ } ) ;
406+
407+ it ( 'should log an error when called before initialization' , async ( ) => {
408+ const originalConsoleError = window . console . error ;
409+ let errorLogged = false ;
410+ let errorMessage = null ;
411+ window . console . error = function ( message ) {
412+ errorLogged = true ;
413+ errorMessage = message ;
414+ } ;
415+
416+ window . mParticle . forwarder . isInitialized = false ;
417+ window . mParticle . forwarder . launcher = null ;
418+
419+ try {
420+ await window . mParticle . forwarder . terminate ( ) ;
421+ throw new Error ( 'Expected promise to reject' ) ;
422+ } catch ( error ) {
423+ error . message . should . equal ( 'Rokt Kit: Not initialized' ) ;
424+ } finally {
425+ window . console . error = originalConsoleError ;
426+ }
427+
428+ errorLogged . should . equal ( true ) ;
429+ errorMessage . should . equal ( 'Rokt Kit: Not initialized' ) ;
430+ } ) ;
431+
432+ it ( 'should log an error when kit is initialized but launcher is missing' , async ( ) => {
433+ const originalConsoleError = window . console . error ;
434+ let errorLogged = false ;
435+ let errorMessage = null ;
436+ window . console . error = function ( message ) {
437+ errorLogged = true ;
438+ errorMessage = message ;
439+ } ;
440+
441+ window . mParticle . forwarder . isInitialized = true ;
442+ window . mParticle . forwarder . launcher = null ;
443+
444+ try {
445+ await window . mParticle . forwarder . terminate ( ) ;
446+ throw new Error ( 'Expected promise to reject' ) ;
447+ } catch ( error ) {
448+ error . message . should . equal ( 'Rokt Kit: Not initialized' ) ;
449+ } finally {
450+ window . console . error = originalConsoleError ;
451+ }
452+ errorLogged . should . equal ( true ) ;
453+ errorMessage . should . equal ( 'Rokt Kit: Not initialized' ) ;
454+ } ) ;
455+
456+ it ( 'should call launcher.terminate after init (test mode) and attach' , async ( ) => {
457+ window . mParticle . Rokt . attachKitCalled = false ;
458+ window . mParticle . Rokt . attachKit = async ( kit ) => {
459+ window . mParticle . Rokt . attachKitCalled = true ;
460+ window . mParticle . Rokt . kit = kit ;
461+ Promise . resolve ( ) ;
462+ } ;
463+
464+ window . Rokt . createLauncher = async function ( ) {
465+ return Promise . resolve ( {
466+ terminate : function ( ) {
467+ window . Rokt . terminateCalled = true ;
468+ return Promise . resolve ( ) ;
469+ } ,
470+ } ) ;
471+ } ;
472+
473+ await window . mParticle . forwarder . init (
474+ {
475+ accountId : '123456' ,
476+ } ,
477+ reportService . cb ,
478+ true ,
479+ null ,
480+ { }
481+ ) ;
482+
483+ await waitForCondition ( ( ) => window . mParticle . Rokt . attachKitCalled ) ;
484+
485+ await window . mParticle . forwarder . terminate ( ) ;
486+
487+ window . Rokt . terminateCalled . should . equal ( true ) ;
488+ } ) ;
489+ } ) ;
490+
491+ describe ( '#getVersion' , ( ) => {
492+ beforeEach ( ( ) => {
493+ window . Rokt = new MockRoktForwarder ( ) ;
494+ window . mParticle . Rokt = window . Rokt ;
495+ window . mParticle . Rokt . attachKitCalled = false ;
496+ window . mParticle . Rokt . attachKit = async ( kit ) => {
497+ window . mParticle . Rokt . attachKitCalled = true ;
498+ window . mParticle . Rokt . kit = kit ;
499+ Promise . resolve ( ) ;
500+ } ;
501+ } ) ;
502+
503+ it ( 'should call launcher.getVersion when fully initialized and return value' , async ( ) => {
504+ window . mParticle . forwarder . isInitialized = true ;
505+ window . mParticle . forwarder . launcher = {
506+ getVersion : function ( ) {
507+ window . Rokt . getVersionCalled = true ;
508+ return '1.1' ;
509+ } ,
510+ } ;
511+
512+ const version = window . mParticle . forwarder . getVersion ( ) ;
513+
514+ window . Rokt . getVersionCalled . should . equal ( true ) ;
515+ version . should . equal ( '1.1' ) ;
516+ } ) ;
517+
518+ it ( 'should return null and log when called before initialization' , async ( ) => {
519+ const originalConsoleError = window . console . error ;
520+ let errorLogged = false ;
521+ let errorMessage = null ;
522+ window . console . error = function ( message ) {
523+ errorLogged = true ;
524+ errorMessage = message ;
525+ } ;
526+
527+ window . mParticle . forwarder . isInitialized = false ;
528+ window . mParticle . forwarder . launcher = null ;
529+
530+ const version = window . mParticle . forwarder . getVersion ( ) ;
531+
532+ ( version === null ) . should . equal ( true ) ;
533+ errorLogged . should . equal ( true ) ;
534+ errorMessage . should . equal ( 'Rokt Kit: Not initialized' ) ;
535+
536+ window . console . error = originalConsoleError ;
537+ } ) ;
538+
539+ it ( 'should return null and log when kit is initialized but launcher is missing' , async ( ) => {
540+ const originalConsoleError = window . console . error ;
541+ let errorLogged = false ;
542+ let errorMessage = null ;
543+ window . console . error = function ( message ) {
544+ errorLogged = true ;
545+ errorMessage = message ;
546+ } ;
547+
548+ window . mParticle . forwarder . isInitialized = true ;
549+ window . mParticle . forwarder . launcher = null ;
550+
551+ const version = window . mParticle . forwarder . getVersion ( ) ;
552+
553+ ( version === null ) . should . equal ( true ) ;
554+ errorLogged . should . equal ( true ) ;
555+ errorMessage . should . equal ( 'Rokt Kit: Not initialized' ) ;
556+
557+ window . console . error = originalConsoleError ;
558+ } ) ;
559+
560+ it ( 'should call launcher.getVersion after init (test mode) and attach' , async ( ) => {
561+ window . mParticle . Rokt . attachKitCalled = false ;
562+ window . mParticle . Rokt . attachKit = async ( kit ) => {
563+ window . mParticle . Rokt . attachKitCalled = true ;
564+ window . mParticle . Rokt . kit = kit ;
565+ Promise . resolve ( ) ;
566+ } ;
567+
568+ window . Rokt . createLauncher = async function ( ) {
569+ return Promise . resolve ( {
570+ getVersion : function ( ) {
571+ window . Rokt . getVersionCalled = true ;
572+ return '1.1' ;
573+ } ,
574+ } ) ;
575+ } ;
576+
577+ await window . mParticle . forwarder . init (
578+ {
579+ accountId : '123456' ,
580+ } ,
581+ reportService . cb ,
582+ true ,
583+ null ,
584+ { }
585+ ) ;
586+
587+ await waitForCondition ( ( ) => window . mParticle . Rokt . attachKitCalled ) ;
588+
589+ const version = window . mParticle . forwarder . getVersion ( ) ;
590+
591+ window . Rokt . getVersionCalled . should . equal ( true ) ;
592+ version . should . equal ( '1.1' ) ;
593+ } ) ;
594+ } ) ;
595+
371596 describe ( '#hashAttributes' , ( ) => {
372597 beforeEach ( ( ) => {
373598 window . Rokt = new MockRoktForwarder ( ) ;
0 commit comments