33
44use InvalidArgumentException ;
55use LaunchDarkly \EvaluationReason ;
6- use LaunchDarkly \FeatureRequester ;
76use LaunchDarkly \LDClient ;
87use LaunchDarkly \LDUser ;
98use LaunchDarkly \LDUserBuilder ;
10- use LaunchDarkly \Impl \Events \EventFactory ;
11- use LaunchDarkly \Impl \Events \EventProcessor ;
129use LaunchDarkly \Impl \Model \FeatureFlag ;
1310use Psr \Log \LoggerInterface ;
14- use PHPUnit \Framework \TestCase ;
1511
1612class LDClientTest extends \PHPUnit \Framework \TestCase
1713{
@@ -64,7 +60,7 @@ private function makeClient($overrideOptions = array())
6460 );
6561 return new LDClient ("someKey " , array_merge ($ options , $ overrideOptions ));
6662 }
67-
63+
6864 public function testVariationReturnsFlagValue ()
6965 {
7066 $ flag = $ this ->makeOffFlagWithValue ('feature ' , 'value ' );
@@ -362,7 +358,7 @@ public function testAllFlagsStateReturnsState()
362358 $ builder = new LDUserBuilder (3 );
363359 $ user = $ builder ->build ();
364360 $ state = $ client ->allFlagsState ($ user );
365-
361+
366362 $ this ->assertTrue ($ state ->isValid ());
367363 $ this ->assertEquals (array ('feature ' => 'off ' ), $ state ->toValuesMap ());
368364 $ expectedState = array (
@@ -405,7 +401,7 @@ public function testAllFlagsStateReturnsStateWithReasons()
405401 $ builder = new LDUserBuilder (3 );
406402 $ user = $ builder ->build ();
407403 $ state = $ client ->allFlagsState ($ user , array ('withReasons ' => true ));
408-
404+
409405 $ this ->assertTrue ($ state ->isValid ());
410406 $ this ->assertEquals (array ('feature ' => 'off ' ), $ state ->toValuesMap ());
411407 $ expectedState = array (
@@ -447,7 +443,7 @@ public function testAllFlagsStateCanFilterForClientSideFlags()
447443 $ builder = new LDUserBuilder (3 );
448444 $ user = $ builder ->build ();
449445 $ state = $ client ->allFlagsState ($ user , array ('clientSideOnly ' => true ));
450-
446+
451447 $ this ->assertTrue ($ state ->isValid ());
452448 $ this ->assertEquals (array ('client-side-1 ' => 'value1 ' , 'client-side-2 ' => 'value2 ' ), $ state ->toValuesMap ());
453449 }
@@ -507,7 +503,7 @@ public function testAllFlagsStateCanOmitDetailsForUntrackedFlags()
507503 $ builder = new LDUserBuilder (3 );
508504 $ user = $ builder ->build ();
509505 $ state = $ client ->allFlagsState ($ user , array ('withReasons ' => true , 'detailsOnlyForTrackedFlags ' => true ));
510-
506+
511507 $ this ->assertTrue ($ state ->isValid ());
512508 $ this ->assertEquals (array ('flag1 ' => 'value1 ' , 'flag2 ' => 'value2 ' , 'flag3 ' => 'value3 ' ), $ state ->toValuesMap ());
513509 $ expectedState = array (
@@ -610,7 +606,7 @@ public function testAliasEventsAreCorrect()
610606 {
611607 $ ep = new MockEventProcessor ();
612608 $ client = $ this ->makeClient (array ('event_processor ' => $ ep ));
613-
609+
614610 $ user_builder =
new LDUserBuilder (
"[email protected] " );
615611 $ user = $ user_builder ->anonymous (false )->build ();
616612 $ anon_builder =
new LDUserBuilder (
"[email protected] " );
@@ -639,16 +635,21 @@ public function testEventsAreNotPublishedIfSendEventsIsFalse()
639635 $ mockPublisher = new MockEventPublisher ("" , array ());
640636 $ options = array (
641637 'feature_requester_class ' => MockFeatureRequester::class,
642- 'event_publisher ' => $ mockPublisher
638+ 'event_publisher ' => $ mockPublisher ,
639+ 'send_events ' => false ,
643640 );
644641 $ client = new LDClient ("someKey " , $ options );
645642 $ client ->track ('eventkey ' , new LDUser ('userkey ' ));
643+
644+ // We don't flush the event processor until __destruct is called. Let's
645+ // force that by unsetting this variable.
646+ unset($ client );
646647 $ this ->assertEquals (array (), $ mockPublisher ->payloads );
647648 }
648649
649650 public function testOnlyValidFeatureRequester ()
650651 {
651- $ this ->expectException (\ InvalidArgumentException::class);
652+ $ this ->expectException (InvalidArgumentException::class);
652653 new LDClient ("BOGUS_SDK_KEY " , ['feature_requester_class ' => \stdClass::class]);
653654 }
654655
@@ -658,29 +659,29 @@ public function testSecureModeHash()
658659 $ user = new LDUser ("Message " );
659660 $ this ->assertEquals ("aa747c502a898200f9e4fa21bac68136f886a0e27aec70ba06daf2e2a5cb5597 " , $ client ->secureModeHash ($ user ));
660661 }
661-
662+
662663 public function testLoggerInterfaceWarn ()
663664 {
664665 // Use LoggerInterface impl, instead of concreate Logger from Monolog, to demonstrate the problem with `warn`.
665666 $ logger = $ this ->getMockBuilder (LoggerInterface::class)->getMock ();
666-
667+
667668 $ logger ->expects (self ::atLeastOnce ())->method ('warning ' );
668-
669+
669670 $ client = new LDClient ('secret ' , [
670671 'logger ' => $ logger ,
671672 ]);
672-
673+
673674 $ user = new LDUser ('' );
674-
675+
675676 $ client ->variation ('MyFeature ' , $ user );
676677 }
677-
678+
678679 private function getPrivateField (&$ object , $ fieldName )
679680 {
680681 $ reflection = new \ReflectionClass (get_class ($ object ));
681682 $ field = $ reflection ->getProperty ($ fieldName );
682683 $ field ->setAccessible (true );
683-
684+
684685 return $ field ->getValue ($ object );
685686 }
686687}
0 commit comments