@@ -88,6 +88,15 @@ describe('Rokt Forwarder', () => {
8888 mParticle . generateHash = function ( input ) {
8989 return 'hashed-<' + input + '>-value' ;
9090 } ;
91+ // Mock for logEvent to capture custom event logging
92+ mParticle . loggedEvents = [ ] ;
93+ mParticle . logEvent = function ( eventName , eventType , eventAttributes ) {
94+ mParticle . loggedEvents . push ( {
95+ eventName : eventName ,
96+ eventType : eventType ,
97+ eventAttributes : eventAttributes ,
98+ } ) ;
99+ } ;
91100 // -------------------START EDITING BELOW:-----------------------
92101 var MockRoktForwarder = function ( ) {
93102 var self = this ;
@@ -756,6 +765,7 @@ describe('Rokt Forwarder', () => {
756765 window . mParticle . Rokt . attachKitCalled = true ;
757766 return Promise . resolve ( ) ;
758767 } ;
768+ mParticle . loggedEvents = [ ] ;
759769 window . mParticle . Rokt . setLocalSessionAttribute = function (
760770 key ,
761771 value
@@ -2517,6 +2527,97 @@ describe('Rokt Forwarder', () => {
25172527 ) ;
25182528 } ) ;
25192529 } ) ;
2530+
2531+ describe ( '#logSelectPlacementsEvent' , ( ) => {
2532+ it ( 'should log a custom event' , async ( ) => {
2533+ await window . mParticle . forwarder . init (
2534+ {
2535+ accountId : '123456' ,
2536+ } ,
2537+ reportService . cb ,
2538+ true ,
2539+ null ,
2540+ {
2541+ 'cached-user-attr' : 'cached-value' ,
2542+ }
2543+ ) ;
2544+
2545+ await window . mParticle . forwarder . selectPlacements ( {
2546+ identifier : 'test-placement' ,
2547+ attributes : {
2548+ 'new-attr' : 'new-value' ,
2549+ } ,
2550+ } ) ;
2551+
2552+ mParticle . loggedEvents . length . should . equal ( 1 ) ;
2553+ mParticle . loggedEvents [ 0 ] . eventName . should . equal (
2554+ 'selectPlacements'
2555+ ) ;
2556+ mParticle . loggedEvents [ 0 ] . eventType . should . equal ( 8 ) ; // EventType.Other
2557+
2558+ const eventAttributes =
2559+ mParticle . loggedEvents [ 0 ] . eventAttributes ;
2560+ eventAttributes . should . have . property ( 'mpid' ) ;
2561+ } ) ;
2562+
2563+ it ( 'should include merged user attributes, identities, and mpid' , async ( ) => {
2564+ await window . mParticle . forwarder . init (
2565+ {
2566+ accountId : '123456' ,
2567+ } ,
2568+ reportService . cb ,
2569+ true ,
2570+ null ,
2571+ {
2572+ 'cached-user-attr' : 'cached-value' ,
2573+ }
2574+ ) ;
2575+
2576+ await window . mParticle . forwarder . selectPlacements ( {
2577+ identifier : 'test-placement' ,
2578+ attributes : {
2579+ 'new-attr' : 'new-value' ,
2580+ } ,
2581+ } ) ;
2582+
2583+ const eventAttributes =
2584+ mParticle . loggedEvents [ 0 ] . eventAttributes ;
2585+
2586+ // eventAttributes should include merged attributes and mpid directly
2587+ eventAttributes . should . have . property ( 'mpid' , '123' ) ;
2588+ eventAttributes . should . have . property ( 'new-attr' , 'new-value' ) ;
2589+ eventAttributes . should . have . property (
2590+ 'cached-user-attr' ,
2591+ 'cached-value'
2592+ ) ;
2593+ } ) ;
2594+
2595+ it ( 'should skip logging when mParticle.logEvent is not available' , async ( ) => {
2596+ var originalLogEvent = window . mParticle . logEvent ;
2597+ window . mParticle . logEvent = undefined ;
2598+
2599+ await window . mParticle . forwarder . init (
2600+ {
2601+ accountId : '123456' ,
2602+ } ,
2603+ reportService . cb ,
2604+ true ,
2605+ null ,
2606+ { }
2607+ ) ;
2608+
2609+ await window . mParticle . forwarder . selectPlacements ( {
2610+ identifier : 'test-placement' ,
2611+ attributes : {
2612+ attr : 'value' ,
2613+ } ,
2614+ } ) ;
2615+
2616+ window . Rokt . selectPlacementsCalled . should . equal ( true ) ;
2617+ mParticle . loggedEvents . length . should . equal ( 0 ) ;
2618+ window . mParticle . logEvent = originalLogEvent ;
2619+ } ) ;
2620+ } ) ;
25202621 } ) ;
25212622
25222623 describe ( '#use' , ( ) => {
0 commit comments