@@ -556,15 +556,23 @@ describe('Store config UID2', () => {
556556 } ) ;
557557 } ) ;
558558
559- describe ( 'when no identity is sent in init ' , ( ) => {
559+ describe ( 'calls the NoIdentityAvailable event ' , ( ) => {
560560 let handler : ReturnType < typeof jest . fn > ;
561561 beforeEach ( ( ) => {
562562 handler = jest . fn ( ) ;
563563 uid2 . callbacks . push ( handler ) ;
564564 } ) ;
565- test ( 'runs NoIdentityAvailable event' , ( ) => {
565+
566+ test ( 'when init is called for the first time with no identity' , ( ) => {
567+ uid2 . init ( { } ) ;
568+ expect ( handler ) . toHaveBeenLastCalledWith ( EventType . NoIdentityAvailable , { identity : null } ) ;
569+ } ) ;
570+ test ( 'when init is already complete and called again with no identity' , ( ) => {
571+ uid2 . init ( { } ) ;
566572 uid2 . init ( { } ) ;
567573 expect ( handler ) . toHaveBeenLastCalledWith ( EventType . NoIdentityAvailable , { identity : null } ) ;
574+ } ) ;
575+ test ( 'when init is already complete and called again with an expired identity' , ( ) => {
568576 uid2 . init ( { } ) ;
569577 expect ( handler ) . toHaveBeenLastCalledWith ( EventType . NoIdentityAvailable , { identity : null } ) ;
570578 let expiredIdentity = makeIdentity ( {
@@ -578,55 +586,89 @@ describe('Store config UID2', () => {
578586 identity : expiredIdentity ,
579587 } ) ;
580588 } ) ;
581- test ( 'runs NoIdentityAvailable event ' , ( ) => {
589+ test ( 'when init is already complete but the existing identity is expired ' , ( ) => {
582590 let expiredIdentity = makeIdentity ( {
583591 identity_expires : Date . now ( ) - 100000 ,
584592 refresh_expires : Date . now ( ) - 100000 ,
585593 } ) ;
586594 uid2 . init ( {
587595 identity : expiredIdentity ,
588596 } ) ;
597+ expect ( handler ) . toHaveBeenLastCalledWith ( EventType . NoIdentityAvailable , {
598+ identity : expiredIdentity ,
599+ } ) ;
589600 uid2 . init ( { } ) ;
590601 expect ( handler ) . toHaveBeenLastCalledWith ( EventType . NoIdentityAvailable , {
591602 identity : expiredIdentity ,
592603 } ) ;
593604 } ) ;
594- test ( 'runs NoIdentityAvailable event' , ( ) => {
595- let expiredIdentity1 = makeIdentity ( {
596- identity_expires : Date . now ( ) - 5000 ,
597- refresh_expires : Date . now ( ) - 5000 ,
598- } ) ;
599- let expiredIdentity2 = makeIdentity ( {
600- identity_expires : Date . now ( ) - 100000 ,
601- refresh_expires : Date . now ( ) - 100000 ,
605+ test ( 'when identity is expired but refreshable' , ( ) => {
606+ let expiredRefreshableIdentity = makeIdentity ( {
607+ identity_expires : Date . now ( ) - 10000 ,
608+ refresh_expires : Date . now ( ) + 10000 ,
602609 } ) ;
603- uid2 . init ( {
604- identity : expiredIdentity1 ,
610+ uid2 . setIdentity ( expiredRefreshableIdentity ) ;
611+
612+ // in this case, identity is temporarily unavailable but still unavailable
613+ expect ( handler ) . toHaveBeenLastCalledWith ( EventType . NoIdentityAvailable , {
614+ identity : null ,
605615 } ) ;
606- uid2 . init ( { identity : expiredIdentity2 } ) ;
616+ } ) ;
617+ test ( 'when login is required' , ( ) => {
618+ uid2 . isLoginRequired ( ) ;
619+
607620 expect ( handler ) . toHaveBeenLastCalledWith ( EventType . NoIdentityAvailable , {
608- identity : expiredIdentity2 ,
621+ identity : null ,
609622 } ) ;
610623 } ) ;
611- test ( 'runs NoIdentityAvailable event' , ( ) => {
612- uid2 . init ( { } ) ;
613- let expiredIdentity = makeIdentity ( {
614- identity_expires : Date . now ( ) - 5000 ,
615- refresh_expires : Date . now ( ) - 5000 ,
624+ test ( 'when get identity returns null or get advertising token returns undefined' , ( ) => {
625+ const nullIdentity = uid2 . getIdentity ( ) ;
626+
627+ expect ( nullIdentity ) . toBeNull ( ) ;
628+ expect ( handler ) . toHaveBeenLastCalledWith ( EventType . NoIdentityAvailable , {
629+ identity : null ,
616630 } ) ;
617- uid2 . setIdentity ( expiredIdentity ) ;
631+ } ) ;
632+ test ( 'when there is no advertising token' , ( ) => {
633+ const token = uid2 . getAdvertisingToken ( ) ;
634+
635+ expect ( token ) . toBeUndefined ( ) ;
618636 expect ( handler ) . toHaveBeenLastCalledWith ( EventType . NoIdentityAvailable , {
619637 identity : null ,
620638 } ) ;
621639 } ) ;
622- test ( 'runs NoIdentityAvailable event' , ( ) => {
640+ } ) ;
641+
642+ describe ( 'does not call NoIdentityAvailable event' , ( ) => {
643+ let handler : ReturnType < typeof jest . fn > ;
644+ beforeEach ( ( ) => {
645+ handler = jest . fn ( ) ;
646+ uid2 . callbacks . push ( handler ) ;
647+ } ) ;
648+
649+ test ( 'when setIdentity is run with a valid identity, should not call NoIdentityAvailable on set or get' , ( ) => {
623650 uid2 . init ( { } ) ;
624- let expiredIdentity = makeIdentity ( {
625- identity_expires : Date . now ( ) - 5000 ,
626- refresh_expires : Date . now ( ) - 5000 ,
651+ let validIdentity = makeIdentity ( ) ;
652+ uid2 . setIdentity ( validIdentity ) ;
653+ expect ( handler ) . not . toHaveBeenCalledWith ( EventType . NoIdentityAvailable , {
654+ identity : null ,
627655 } ) ;
628- uid2 . setIdentity ( expiredIdentity ) ;
629- expect ( handler ) . toHaveBeenLastCalledWith ( EventType . NoIdentityAvailable , {
656+
657+ uid2 . getIdentity ( ) ;
658+ expect ( handler ) . not . toHaveBeenCalledWith ( EventType . NoIdentityAvailable , {
659+ identity : null ,
660+ } ) ;
661+
662+ uid2 . getAdvertisingToken ( ) ;
663+ expect ( handler ) . not . toHaveBeenCalledWith ( EventType . NoIdentityAvailable , {
664+ identity : null ,
665+ } ) ;
666+ } ) ;
667+ test ( 'when identity is set with opted out identity' , ( ) => {
668+ uid2 . init ( { } ) ;
669+ let optedOutIdentity = makeIdentity ( { status : 'optout' } ) ;
670+ uid2 . setIdentity ( optedOutIdentity ) ;
671+ expect ( handler ) . not . toHaveBeenLastCalledWith ( EventType . NoIdentityAvailable , {
630672 identity : null ,
631673 } ) ;
632674 } ) ;
0 commit comments