@@ -605,6 +605,7 @@ describe('javascript-sdk (Browser)', function() {
605605 beforeEach ( function ( ) {
606606 sandbox . stub ( logger , 'log' ) ;
607607 sandbox . stub ( logger , 'error' ) ;
608+ sandbox . stub ( logger , 'warn' ) ;
608609 clock = sinon . useFakeTimers ( new Date ( ) ) ;
609610 } ) ;
610611
@@ -804,6 +805,77 @@ describe('javascript-sdk (Browser)', function() {
804805 sinon . assert . called ( fakeEventManager . sendEvent ) ;
805806 } ) ;
806807
808+ it ( 'should convert fs-user-id, FS-USER-ID, and FS_USER_ID to fs_user_id identifier when calling sendOdpEvent' , async ( ) => {
809+ const fakeEventManager = {
810+ updateSettings : sinon . spy ( ) ,
811+ start : sinon . spy ( ) ,
812+ stop : sinon . spy ( ) ,
813+ registerVuid : sinon . spy ( ) ,
814+ identifyUser : sinon . spy ( ) ,
815+ sendEvent : sinon . spy ( ) ,
816+ flush : sinon . spy ( ) ,
817+ } ;
818+
819+ const client = optimizelyFactory . createInstance ( {
820+ datafile : testData . getOdpIntegratedConfigWithSegments ( ) ,
821+ errorHandler : fakeErrorHandler ,
822+ eventDispatcher : fakeEventDispatcher ,
823+ eventBatchSize : null ,
824+ logger,
825+ odpOptions : {
826+ eventManager : fakeEventManager ,
827+ } ,
828+ } ) ;
829+
830+ const readyData = await client . onReady ( ) ;
831+ assert . equal ( readyData . success , true ) ;
832+ assert . isUndefined ( readyData . reason ) ;
833+
834+ // fs-user-id
835+ client . sendOdpEvent ( ODP_EVENT_ACTION . INITIALIZED , undefined , new Map ( [ [ 'fs-user-id' , 'fsUserA' ] ] ) ) ;
836+ sinon . assert . notCalled ( logger . error ) ;
837+ sinon . assert . neverCalledWith ( logger . warn , LOG_MESSAGES . ODP_SEND_EVENT_IDENTIFIER_CONVERSION_FAILED ) ;
838+
839+ const sendEventArgs1 = fakeEventManager . sendEvent . args ;
840+ assert . deepEqual (
841+ sendEventArgs1 [ 0 ] . toString ( ) ,
842+ new OdpEvent ( 'fullstack' , 'client_initialized' , new Map ( [ [ 'fs_user_id' , 'fsUserA' ] ] ) , new Map ( ) ) . toString ( )
843+ ) ;
844+
845+ // FS-USER-ID
846+ client . sendOdpEvent ( ODP_EVENT_ACTION . INITIALIZED , undefined , new Map ( [ [ 'FS-USER-ID' , 'fsUserA' ] ] ) ) ;
847+ sinon . assert . notCalled ( logger . error ) ;
848+ sinon . assert . neverCalledWith ( logger . warn , LOG_MESSAGES . ODP_SEND_EVENT_IDENTIFIER_CONVERSION_FAILED ) ;
849+
850+ const sendEventArgs2 = fakeEventManager . sendEvent . args ;
851+ assert . deepEqual (
852+ sendEventArgs2 [ 0 ] . toString ( ) ,
853+ new OdpEvent ( 'fullstack' , 'client_initialized' , new Map ( [ [ 'fs_user_id' , 'fsUserA' ] ] ) , new Map ( ) ) . toString ( )
854+ ) ;
855+
856+ // FS_USER_ID
857+ client . sendOdpEvent ( ODP_EVENT_ACTION . INITIALIZED , undefined , new Map ( [ [ 'FS_USER_ID' , 'fsUserA' ] ] ) ) ;
858+ sinon . assert . notCalled ( logger . error ) ;
859+ sinon . assert . neverCalledWith ( logger . warn , LOG_MESSAGES . ODP_SEND_EVENT_IDENTIFIER_CONVERSION_FAILED ) ;
860+
861+ const sendEventArgs3 = fakeEventManager . sendEvent . args ;
862+ assert . deepEqual (
863+ sendEventArgs3 [ 0 ] . toString ( ) ,
864+ new OdpEvent ( 'fullstack' , 'client_initialized' , new Map ( [ [ 'fs_user_id' , 'fsUserA' ] ] ) , new Map ( ) ) . toString ( )
865+ ) ;
866+
867+ // fs_user_id
868+ client . sendOdpEvent ( ODP_EVENT_ACTION . INITIALIZED , undefined , new Map ( [ [ 'fs_user_id' , 'fsUserA' ] ] ) ) ;
869+ sinon . assert . notCalled ( logger . error ) ;
870+ sinon . assert . neverCalledWith ( logger . warn , LOG_MESSAGES . ODP_SEND_EVENT_IDENTIFIER_CONVERSION_FAILED ) ;
871+
872+ const sendEventArgs4 = fakeEventManager . sendEvent . args ;
873+ assert . deepEqual (
874+ sendEventArgs4 [ 0 ] . toString ( ) ,
875+ new OdpEvent ( 'fullstack' , 'client_initialized' , new Map ( [ [ 'fs_user_id' , 'fsUserA' ] ] ) , new Map ( ) ) . toString ( )
876+ ) ;
877+ } ) ;
878+
807879 it ( 'should throw an error and not send an odp event when calling sendOdpEvent with an invalid action input' , async ( ) => {
808880 const fakeEventManager = {
809881 updateSettings : sinon . spy ( ) ,
0 commit comments