@@ -454,27 +454,27 @@ describe('createProjectConfig - local holdouts (FSSDK-12369, FSSDK-12760)', () =
454454 } ;
455455
456456 it ( 'should set isGlobal=true for entries in the holdouts section (backward compat with old datafiles)' , ( ) => {
457- const config = projectConfig . createProjectConfig ( cloneDeep ( makeHoldoutsDatafile ( ) ) as any ) ;
457+ const config = projectConfig . createProjectConfig ( JSON . stringify ( makeHoldoutsDatafile ( ) ) ) ;
458458 const holdout = config . holdoutIdMap ! [ 'global_holdout_id' ] ;
459459 expect ( holdout . isGlobal ) . toBe ( true ) ;
460460 } ) ;
461461
462462 it ( 'should set isGlobal=false for entries in the localHoldouts section' , ( ) => {
463- const config = projectConfig . createProjectConfig ( cloneDeep ( makeHoldoutsDatafile ( ) ) as any ) ;
463+ const config = projectConfig . createProjectConfig ( JSON . stringify ( makeHoldoutsDatafile ( ) ) ) ;
464464 const holdout = config . holdoutIdMap ! [ 'local_holdout_rule_a_id' ] ;
465465 expect ( holdout . isGlobal ) . toBe ( false ) ;
466466 } ) ;
467467
468468 it ( 'getGlobalHoldouts should return only entries from the holdouts section' , ( ) => {
469- const config = projectConfig . createProjectConfig ( cloneDeep ( makeHoldoutsDatafile ( ) ) as any ) ;
469+ const config = projectConfig . createProjectConfig ( JSON . stringify ( makeHoldoutsDatafile ( ) ) ) ;
470470 const globals = getGlobalHoldouts ( config ) ;
471471 const globalIds = globals . map ( h => h . id ) ;
472472 expect ( globalIds ) . toContain ( 'global_holdout_id' ) ;
473473 expect ( globalIds ) . not . toContain ( 'local_holdout_rule_a_id' ) ;
474474 } ) ;
475475
476476 it ( 'getHoldoutsForRule should return local holdouts targeting the given rule ID' , ( ) => {
477- const config = projectConfig . createProjectConfig ( cloneDeep ( makeHoldoutsDatafile ( ) ) as any ) ;
477+ const config = projectConfig . createProjectConfig ( JSON . stringify ( makeHoldoutsDatafile ( ) ) ) ;
478478 const forRuleA = getHoldoutsForRule ( config , 'rule_a' ) ;
479479 expect ( forRuleA ) . toHaveLength ( 1 ) ;
480480 expect ( forRuleA [ 0 ] . id ) . toBe ( 'local_holdout_rule_a_id' ) ;
@@ -524,7 +524,7 @@ describe('createProjectConfig - local holdouts (FSSDK-12369, FSSDK-12760)', () =
524524 trafficAllocation : [ { entityId : 'var_both' , endOfRange : 5000 } ] ,
525525 } ,
526526 ] ;
527- const config = projectConfig . createProjectConfig ( datafile as any ) ;
527+ const config = projectConfig . createProjectConfig ( JSON . stringify ( datafile ) ) ;
528528
529529 const forRuleX = getHoldoutsForRule ( config , 'rule_x' ) ;
530530 const forRuleXIds = forRuleX . map ( h => h . id ) . sort ( ) ;
@@ -555,7 +555,7 @@ describe('createProjectConfig - local holdouts (FSSDK-12369, FSSDK-12760)', () =
555555 trafficAllocation : [ { entityId : 'var_local' , endOfRange : 5000 } ] ,
556556 } ,
557557 ] ;
558- const config = projectConfig . createProjectConfig ( datafile as any ) ;
558+ const config = projectConfig . createProjectConfig ( JSON . stringify ( datafile ) ) ;
559559
560560 const forRuleZ = getHoldoutsForRule ( config , 'rule_z' ) ;
561561 expect ( forRuleZ ) . toHaveLength ( 1 ) ;
@@ -566,7 +566,7 @@ describe('createProjectConfig - local holdouts (FSSDK-12369, FSSDK-12760)', () =
566566 } ) ;
567567
568568 it ( 'getHoldoutsForRule should return empty array for an unknown rule ID' , ( ) => {
569- const config = projectConfig . createProjectConfig ( cloneDeep ( makeHoldoutsDatafile ( ) ) as any ) ;
569+ const config = projectConfig . createProjectConfig ( JSON . stringify ( makeHoldoutsDatafile ( ) ) ) ;
570570 const forUnknown = getHoldoutsForRule ( config , 'nonexistent_rule' ) ;
571571 expect ( forUnknown ) . toHaveLength ( 0 ) ;
572572 } ) ;
@@ -588,19 +588,19 @@ describe('createProjectConfig - local holdouts (FSSDK-12369, FSSDK-12760)', () =
588588 trafficAllocation : [ { entityId : 'only_local_var_id' , endOfRange : 5000 } ] ,
589589 } ,
590590 ] ;
591- const config = projectConfig . createProjectConfig ( datafile as any ) ;
591+ const config = projectConfig . createProjectConfig ( JSON . stringify ( datafile ) ) ;
592592 expect ( getGlobalHoldouts ( config ) ) . toHaveLength ( 0 ) ;
593593 } ) ;
594594
595595 it ( 'should handle datafile with no holdouts gracefully' , ( ) => {
596596 const datafile = testDatafile . getTestProjectConfig ( ) ;
597- const config = projectConfig . createProjectConfig ( datafile as any ) ;
597+ const config = projectConfig . createProjectConfig ( JSON . stringify ( datafile ) ) ;
598598 expect ( getGlobalHoldouts ( config ) ) . toHaveLength ( 0 ) ;
599599 expect ( getHoldoutsForRule ( config , 'any_rule' ) ) . toHaveLength ( 0 ) ;
600600 } ) ;
601601
602602 it ( 'a single local holdout targeting multiple rules should appear for each targeted rule' , ( ) => {
603- const config = projectConfig . createProjectConfig ( cloneDeep ( makeHoldoutsDatafile ( ) ) as any ) ;
603+ const config = projectConfig . createProjectConfig ( JSON . stringify ( makeHoldoutsDatafile ( ) ) ) ;
604604 const forRuleA = getHoldoutsForRule ( config , 'rule_a' ) ;
605605 const forRuleB = getHoldoutsForRule ( config , 'rule_b' ) ;
606606 // Both rule_a and rule_b point to the same holdout
@@ -645,7 +645,7 @@ describe('createProjectConfig - localHoldouts section (FSSDK-12760)', () => {
645645 const datafile = cloneDeep ( makeBaseDatafile ( ) ) as any ;
646646 datafile . holdouts = [ ] ;
647647 datafile . localHoldouts = [ makeLocal ( 'l1' , 'local_h' , [ 'rule_x' ] ) ] ;
648- const config = projectConfig . createProjectConfig ( datafile ) ;
648+ const config = projectConfig . createProjectConfig ( JSON . stringify ( datafile ) ) ;
649649 expect ( Array . isArray ( config . localHoldouts ) ) . toBe ( true ) ;
650650 expect ( config . localHoldouts ) . toHaveLength ( 1 ) ;
651651 expect ( config . localHoldouts [ 0 ] . id ) . toBe ( 'l1' ) ;
@@ -655,7 +655,7 @@ describe('createProjectConfig - localHoldouts section (FSSDK-12760)', () => {
655655 const datafile = cloneDeep ( makeBaseDatafile ( ) ) as any ;
656656 datafile . holdouts = [ makeGlobal ( 'g1' , 'global_h' ) ] ;
657657 // No localHoldouts key at all
658- const config = projectConfig . createProjectConfig ( datafile ) ;
658+ const config = projectConfig . createProjectConfig ( JSON . stringify ( datafile ) ) ;
659659 expect ( config . localHoldouts ) . toEqual ( [ ] ) ;
660660 expect ( getGlobalHoldouts ( config ) . map ( h => h . id ) ) . toContain ( 'g1' ) ;
661661 expect ( getHoldoutsForRule ( config , 'any_rule' ) ) . toEqual ( [ ] ) ;
@@ -669,7 +669,7 @@ describe('createProjectConfig - localHoldouts section (FSSDK-12760)', () => {
669669 makeGlobal ( 'stray' , 'stray_global' , { includedRules : [ 'rule_should_be_ignored' ] } ) ,
670670 ] ;
671671 datafile . localHoldouts = [ ] ;
672- const config = projectConfig . createProjectConfig ( datafile ) ;
672+ const config = projectConfig . createProjectConfig ( JSON . stringify ( datafile ) ) ;
673673
674674 const stray = config . holdoutIdMap ! [ 'stray' ] ;
675675 // includedRules must be stripped at parse time
@@ -688,7 +688,7 @@ describe('createProjectConfig - localHoldouts section (FSSDK-12760)', () => {
688688 datafile . holdouts = [
689689 makeGlobal ( 'stray' , 'stray_global' , { includedRules : [ 'rule_x' ] } ) ,
690690 ] ;
691- projectConfig . createProjectConfig ( datafile ) ;
691+ projectConfig . createProjectConfig ( JSON . stringify ( datafile ) ) ;
692692 // Original datafile still has includedRules on the entry
693693 expect ( datafile . holdouts [ 0 ] . includedRules ) . toEqual ( [ 'rule_x' ] ) ;
694694 } ) ;
@@ -700,7 +700,7 @@ describe('createProjectConfig - localHoldouts section (FSSDK-12760)', () => {
700700 makeLocal ( 'l1' , 'l1' , [ 'rule_a' ] ) ,
701701 makeLocal ( 'l2' , 'l2' , [ 'rule_b' ] ) ,
702702 ] ;
703- const config = projectConfig . createProjectConfig ( datafile ) ;
703+ const config = projectConfig . createProjectConfig ( JSON . stringify ( datafile ) ) ;
704704
705705 expect ( getGlobalHoldouts ( config ) . map ( h => h . id ) . sort ( ) ) . toEqual ( [ 'g1' , 'g2' ] ) ;
706706 expect ( getHoldoutsForRule ( config , 'rule_a' ) . map ( h => h . id ) ) . toEqual ( [ 'l1' ] ) ;
@@ -718,7 +718,7 @@ describe('createProjectConfig - localHoldouts section (FSSDK-12760)', () => {
718718 delete invalid . includedRules ;
719719 datafile . localHoldouts = [ invalid ] ;
720720
721- const config = projectConfig . createProjectConfig ( datafile , null , logger ) ;
721+ const config = projectConfig . createProjectConfig ( JSON . stringify ( datafile ) , { logger } ) ;
722722
723723 expect ( getGlobalHoldouts ( config ) ) . toEqual ( [ ] ) ;
724724 expect ( getHoldoutsForRule ( config , 'any_rule' ) ) . toEqual ( [ ] ) ;
@@ -733,7 +733,7 @@ describe('createProjectConfig - localHoldouts section (FSSDK-12760)', () => {
733733 datafile . holdouts = [ ] ;
734734 datafile . localHoldouts = [ makeLocal ( 'bad_null' , 'null_local' , null ) ] ;
735735
736- const config = projectConfig . createProjectConfig ( datafile , null , logger ) ;
736+ const config = projectConfig . createProjectConfig ( JSON . stringify ( datafile ) , { logger } ) ;
737737
738738 expect ( getHoldoutsForRule ( config , 'any_rule' ) ) . toEqual ( [ ] ) ;
739739 expect ( config . holdoutIdMap ! [ 'bad_null' ] ) . toBeUndefined ( ) ;
@@ -747,7 +747,7 @@ describe('createProjectConfig - localHoldouts section (FSSDK-12760)', () => {
747747 datafile . holdouts = [ ] ;
748748 datafile . localHoldouts = [ makeLocal ( 'bad_empty' , 'empty_local' , [ ] ) ] ;
749749
750- const config = projectConfig . createProjectConfig ( datafile , null , logger ) ;
750+ const config = projectConfig . createProjectConfig ( JSON . stringify ( datafile ) , { logger } ) ;
751751
752752 expect ( getHoldoutsForRule ( config , 'any_rule' ) ) . toEqual ( [ ] ) ;
753753 expect ( config . holdoutIdMap ! [ 'bad_empty' ] ) . toBeUndefined ( ) ;
@@ -760,7 +760,7 @@ describe('createProjectConfig - localHoldouts section (FSSDK-12760)', () => {
760760 const datafile = cloneDeep ( makeBaseDatafile ( ) ) as any ;
761761 datafile . holdouts = [ makeGlobal ( 'g1' , 'g' ) ] ;
762762 datafile . localHoldouts = [ makeLocal ( 'l1' , 'l' , [ 'rule_x' ] ) ] ;
763- const config = projectConfig . createProjectConfig ( datafile ) ;
763+ const config = projectConfig . createProjectConfig ( JSON . stringify ( datafile ) ) ;
764764 expect ( config . variationIdMap [ 'g1_var' ] ) . toBeDefined ( ) ;
765765 expect ( config . variationIdMap [ 'l1_var' ] ) . toBeDefined ( ) ;
766766 } ) ;
0 commit comments