@@ -401,6 +401,93 @@ public function testAllFlagsStateCanFilterForClientSideFlags()
401401 $ this ->assertEquals (array ('client-side-1 ' => 'value1 ' , 'client-side-2 ' => 'value2 ' ), $ state ->toValuesMap ());
402402 }
403403
404+ public function testAllFlagsStateCanOmitDetailsForUntrackedFlags ()
405+ {
406+ $ flag1Json = array (
407+ 'key ' => 'flag1 ' ,
408+ 'version ' => 100 ,
409+ 'deleted ' => false ,
410+ 'on ' => false ,
411+ 'targets ' => array (),
412+ 'prerequisites ' => array (),
413+ 'rules ' => array (),
414+ 'offVariation ' => 0 ,
415+ 'fallthrough ' => null ,
416+ 'variations ' => array ('value1 ' ),
417+ 'salt ' => '' ,
418+ 'trackEvents ' => false
419+ );
420+ $ flag2Json = array (
421+ 'key ' => 'flag2 ' ,
422+ 'version ' => 200 ,
423+ 'deleted ' => false ,
424+ 'on ' => false ,
425+ 'targets ' => array (),
426+ 'prerequisites ' => array (),
427+ 'rules ' => array (),
428+ 'offVariation ' => 0 ,
429+ 'fallthrough ' => null ,
430+ 'variations ' => array ('value2 ' ),
431+ 'salt ' => '' ,
432+ 'trackEvents ' => true
433+ );
434+ $ flag3Json = array (
435+ 'key ' => 'flag3 ' ,
436+ 'version ' => 300 ,
437+ 'deleted ' => false ,
438+ 'on ' => false ,
439+ 'targets ' => array (),
440+ 'prerequisites ' => array (),
441+ 'rules ' => array (),
442+ 'offVariation ' => 0 ,
443+ 'fallthrough ' => null ,
444+ 'variations ' => array ('value3 ' ),
445+ 'salt ' => '' ,
446+ 'trackEvents ' => false ,
447+ 'debugEventsUntilDate ' => 1000
448+ );
449+ $ flag1 = FeatureFlag::decode ($ flag1Json );
450+ $ flag2 = FeatureFlag::decode ($ flag2Json );
451+ $ flag3 = FeatureFlag::decode ($ flag3Json );
452+
453+ MockFeatureRequester::$ flags = array ('flag1 ' => $ flag1 , 'flag2 ' => $ flag2 , 'flag3 ' => $ flag3 );
454+ $ client = new LDClient ("someKey " , array (
455+ 'feature_requester_class ' => MockFeatureRequester::class,
456+ 'events ' => false
457+ ));
458+
459+ $ builder = new LDUserBuilder (3 );
460+ $ user = $ builder ->build ();
461+ $ state = $ client ->allFlagsState ($ user , array ('withReasons ' => true , 'detailsOnlyForTrackedFlags ' => true ));
462+
463+ $ this ->assertTrue ($ state ->isValid ());
464+ $ this ->assertEquals (array ('flag1 ' => 'value1 ' , 'flag2 ' => 'value2 ' , 'flag3 ' => 'value3 ' ), $ state ->toValuesMap ());
465+ $ expectedState = array (
466+ 'flag1 ' => 'value1 ' ,
467+ 'flag2 ' => 'value2 ' ,
468+ 'flag3 ' => 'value3 ' ,
469+ '$flagsState ' => array (
470+ 'flag1 ' => array (
471+ 'variation ' => 0 ,
472+ ),
473+ 'flag2 ' => array (
474+ 'variation ' => 0 ,
475+ 'version ' => 200 ,
476+ 'reason ' => array ('kind ' => 'OFF ' ),
477+ 'trackEvents ' => true
478+ ),
479+ 'flag3 ' => array (
480+ 'variation ' => 0 ,
481+ 'version ' => 300 ,
482+ 'reason ' => array ('kind ' => 'OFF ' ),
483+ 'debugEventsUntilDate ' => 1000
484+ )
485+ ),
486+ '$valid ' => true
487+ );
488+ $ this ->assertEquals ($ expectedState , $ state ->jsonSerialize ());
489+ }
490+
404491 public function testOnlyValidFeatureRequester ()
405492 {
406493 $ this ->setExpectedException (InvalidArgumentException::class);
0 commit comments