diff --git a/.gitmodules b/.gitmodules index f8ca411..15a9644 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ [submodule "tests/Engine/EngineTests/EngineTestData"] path = tests/Engine/EngineTests/EngineTestData url = git@github.com:Flagsmith/engine-test-data.git - tag = v3.2.1 + tag = v3.4.1 diff --git a/src/Engine/Engine.php b/src/Engine/Engine.php index f1e97e4..d5f70ce 100644 --- a/src/Engine/Engine.php +++ b/src/Engine/Engine.php @@ -81,17 +81,16 @@ public static function getEvaluationResult($context): EvaluationResult foreach ($context->features as $feature) { $featureName = $feature->name; $evaluatedFeature = $evaluatedFeatures[$featureName] ?? null; + $reason = 'DEFAULT'; if ($evaluatedFeature) { - $evaluatedFlags[$featureName] = self::getFlagResultFromSegmentContext( - $evaluatedFeature, - $matchedSegmentsByFeatureName[$featureName], - ); - continue; + $feature = $evaluatedFeature; + $reason = "TARGETING_MATCH; segment={$matchedSegmentsByFeatureName[$featureName]->name}"; } $evaluatedFlags[$featureName] = self::getFlagResultFromFeatureContext( $feature, $context->identity?->key, + $reason, ); } @@ -142,9 +141,10 @@ private static function isContextInSegment($context, $segment): bool /** * @param FeatureContext $feature * @param ?string $splitKey + * @param string $reason * @return FlagResult */ - private static function getFlagResultFromFeatureContext($feature, $splitKey) + private static function getFlagResultFromFeatureContext($feature, $splitKey, $reason = 'DEFAULT') { if ($splitKey !== null && !empty($feature->variants)) { $hashing = new Hashing(); @@ -180,23 +180,7 @@ private static function getFlagResultFromFeatureContext($feature, $splitKey) $flag->name = $feature->name; $flag->enabled = $feature->enabled; $flag->value = $feature->value; - $flag->reason = 'DEFAULT'; - $flag->metadata = $feature->metadata; - return $flag; - } - - /** - * @param FeatureContext $feature - * @param SegmentContext $segment - * @return FlagResult - */ - private static function getFlagResultFromSegmentContext($feature, $segment) - { - $flag = new FlagResult(); - $flag->name = $feature->name; - $flag->enabled = $feature->enabled; - $flag->value = $feature->value; - $flag->reason = "TARGETING_MATCH; segment={$segment->name}"; + $flag->reason = $reason; $flag->metadata = $feature->metadata; return $flag; } diff --git a/src/Engine/Utils/Types/Context/EvaluationContext.php b/src/Engine/Utils/Types/Context/EvaluationContext.php index 7630116..9636642 100644 --- a/src/Engine/Utils/Types/Context/EvaluationContext.php +++ b/src/Engine/Utils/Types/Context/EvaluationContext.php @@ -30,7 +30,7 @@ public static function fromJsonObject($jsonContext) if (!empty($jsonContext->identity)) { $context->identity = new IdentityContext(); - $context->identity->key = $jsonContext->identity->key; + $context->identity->key = $jsonContext->identity->key ?? null; $context->identity->identifier = $jsonContext->identity->identifier; $context->identity->traits = (array) ($jsonContext->identity->traits ?? []); } diff --git a/src/Engine/Utils/Types/Context/IdentityContext.php b/src/Engine/Utils/Types/Context/IdentityContext.php index d69ffcf..fbaf171 100644 --- a/src/Engine/Utils/Types/Context/IdentityContext.php +++ b/src/Engine/Utils/Types/Context/IdentityContext.php @@ -4,7 +4,7 @@ class IdentityContext { - /** @var string */ + /** @var ?string */ public $key; /** @var string */ diff --git a/tests/Engine/EngineTests/EngineTestData b/tests/Engine/EngineTests/EngineTestData index 218757f..839e8d5 160000 --- a/tests/Engine/EngineTests/EngineTestData +++ b/tests/Engine/EngineTests/EngineTestData @@ -1 +1 @@ -Subproject commit 218757fd23f932760be681a09c686c9d6ef55fad +Subproject commit 839e8d5e5f2e9af6392062cf5e575d43c03770d4