@@ -564,6 +564,42 @@ describe('LDClient', () => {
564
564
} ) ;
565
565
} ) ;
566
566
567
+ it ( 'handles delete message for unknown flag by storing placeholder' , done => {
568
+ const client = platform . testing . makeClient ( envName , user , { bootstrap : { } } ) ;
569
+
570
+ client . on ( 'ready' , ( ) => {
571
+ client . on ( 'change' , ( ) => { } ) ;
572
+
573
+ streamEvents ( ) . delete ( {
574
+ data : '{"key":"mystery","version":3}' ,
575
+ } ) ;
576
+
577
+ // The following patch message should be ignored because it has a lower version than the deleted placeholder
578
+ streamEvents ( ) . patch ( {
579
+ data : '{"key":"mystery","value":"yes","version":2}' ,
580
+ } ) ;
581
+
582
+ expect ( client . variation ( 'mystery' ) ) . toBeUndefined ( ) ;
583
+ done ( ) ;
584
+ } ) ;
585
+ } ) ;
586
+
587
+ it ( 'ignores delete message with lower version' , done => {
588
+ const bootstrapData = { flag : 'yes' , $flagsState : { flag : { version : 3 } } } ;
589
+ const client = platform . testing . makeClient ( envName , user , { bootstrap : bootstrapData } ) ;
590
+
591
+ client . on ( 'ready' , ( ) => {
592
+ client . on ( 'change' , ( ) => { } ) ;
593
+
594
+ streamEvents ( ) . delete ( {
595
+ data : '{"key":"flag","version":2}' ,
596
+ } ) ;
597
+
598
+ expect ( client . variation ( 'flag' ) ) . toEqual ( 'yes' ) ;
599
+ done ( ) ;
600
+ } ) ;
601
+ } ) ;
602
+
567
603
it ( 'fires global change event when flag is deleted' , done => {
568
604
const client = platform . testing . makeClient ( envName , user , { bootstrap : { 'enable-foo' : true } } ) ;
569
605
0 commit comments