From 05dc79783c3adb1a80393e00b825e3c537308262 Mon Sep 17 00:00:00 2001 From: mnoman09 Date: Mon, 13 Dec 2021 20:31:28 +0500 Subject: [PATCH 1/6] Php forced Decision fix --- src/Optimizely/Event/Builder/EventBuilder.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Optimizely/Event/Builder/EventBuilder.php b/src/Optimizely/Event/Builder/EventBuilder.php index 744d2cf1..5a777e19 100644 --- a/src/Optimizely/Event/Builder/EventBuilder.php +++ b/src/Optimizely/Event/Builder/EventBuilder.php @@ -251,10 +251,9 @@ public function createImpressionEvent($config, $experimentId, $variationKey, $fl { $eventParams = $this->getCommonParams($config, $userId, $attributes); $experiment = $config->getExperimentFromId($experimentId); + $variation = $config->getFlagVariationByKey($flagKey, $variationKey); - if (empty($experimentId)) { - $variation = $config->getFlagVariationByKey($flagKey, $variationKey); - } else { + if (!$variation) { $variation = $config->getVariationFromKeyByExperimentId($experimentId, $variationKey); } From 7adcf214ee3b9d4e5d0504a2a9060a89b53bfaa8 Mon Sep 17 00:00:00 2001 From: mnoman09 Date: Wed, 15 Dec 2021 19:53:37 +0500 Subject: [PATCH 2/6] added unit test and comments --- src/Optimizely/Event/Builder/EventBuilder.php | 3 ++ tests/EventTests/EventBuilderTest.php | 47 +++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/src/Optimizely/Event/Builder/EventBuilder.php b/src/Optimizely/Event/Builder/EventBuilder.php index 5a777e19..45554929 100644 --- a/src/Optimizely/Event/Builder/EventBuilder.php +++ b/src/Optimizely/Event/Builder/EventBuilder.php @@ -251,8 +251,11 @@ public function createImpressionEvent($config, $experimentId, $variationKey, $fl { $eventParams = $this->getCommonParams($config, $userId, $attributes); $experiment = $config->getExperimentFromId($experimentId); + + // Mapped flagKey can be directly used in variation in that case no experimentKey exist $variation = $config->getFlagVariationByKey($flagKey, $variationKey); + // When variation is not mapped to any flagKey if (!$variation) { $variation = $config->getVariationFromKeyByExperimentId($experimentId, $variationKey); } diff --git a/tests/EventTests/EventBuilderTest.php b/tests/EventTests/EventBuilderTest.php index 9dd4e79c..9a0bd6a2 100644 --- a/tests/EventTests/EventBuilderTest.php +++ b/tests/EventTests/EventBuilderTest.php @@ -157,6 +157,53 @@ public function testCreateImpressionEventNoAttributesNoValue() $this->assertTrue($result[0], $result[1]); } + public function testCreateImpressionEventVariationFromSameFlagButDifferentExperiments() + { + $decisions = array('decisions' => [[ + 'campaign_id'=> '5', + 'experiment_id'=> '122235', + 'variation_id'=> '177775', + 'metadata'=> [ + 'flag_key' => 'string_single_variable_feature', + 'rule_key' => 'test_experiment_with_feature_rollout', + 'rule_type' => 'experiment', + 'variation_key'=> '177775', + 'enabled' => true + ] + ]] + ); + $this->expectedImpressionEventParams['visitors'][0]['snapshots'][0] = $decisions + + $this->expectedImpressionEventParams['visitors'][0]['snapshots'][0]; + $this->expectedImpressionEventParams['visitors'][0]['snapshots'][0]['events'][0] = + [ + 'entity_id'=> '5', + 'timestamp'=> $this->timestamp, + 'uuid'=> $this->uuid, + 'key'=> 'campaign_activated' + ]; + $expectedLogEvent = new LogEvent( + $this->expectedEventUrl, + $this->expectedImpressionEventParams, + $this->expectedEventHttpVerb, + $this->expectedEventHeaders + ); + + $logEvent = $this->eventBuilder->createImpressionEvent( + $this->config, + '122235', + '177775', + 'string_single_variable_feature', + 'test_experiment_with_feature_rollout', + 'experiment', + true, + $this->testUserId, + null + ); + $logEvent = $this->fakeParamsToReconcile($logEvent); + $result = $this->areLogEventsEqual($expectedLogEvent, $logEvent); + $this->assertTrue($result[0], $result[1]); + } + public function testCreateImpressionEventWithAttributesNoValue() { array_unshift( From ac2dfe10e43ffec42d8832648367cbaa6b74c418 Mon Sep 17 00:00:00 2001 From: mnoman09 Date: Wed, 15 Dec 2021 20:59:59 +0500 Subject: [PATCH 3/6] nit fix --- src/Optimizely/Event/Builder/EventBuilder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Optimizely/Event/Builder/EventBuilder.php b/src/Optimizely/Event/Builder/EventBuilder.php index 45554929..0c2d7c3c 100644 --- a/src/Optimizely/Event/Builder/EventBuilder.php +++ b/src/Optimizely/Event/Builder/EventBuilder.php @@ -255,7 +255,7 @@ public function createImpressionEvent($config, $experimentId, $variationKey, $fl // Mapped flagKey can be directly used in variation in that case no experimentKey exist $variation = $config->getFlagVariationByKey($flagKey, $variationKey); - // When variation is not mapped to any flagKey + // When variation is not mapped to any flagKey if (!$variation) { $variation = $config->getVariationFromKeyByExperimentId($experimentId, $variationKey); } From c43bda33867646b5594b5be12a02de03e38a7a47 Mon Sep 17 00:00:00 2001 From: mnoman09 Date: Fri, 17 Dec 2021 16:51:49 +0500 Subject: [PATCH 4/6] Added empty checks in flagkey and experiment key --- src/Optimizely/Event/Builder/EventBuilder.php | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Optimizely/Event/Builder/EventBuilder.php b/src/Optimizely/Event/Builder/EventBuilder.php index 0c2d7c3c..df5b0a3a 100644 --- a/src/Optimizely/Event/Builder/EventBuilder.php +++ b/src/Optimizely/Event/Builder/EventBuilder.php @@ -252,11 +252,14 @@ public function createImpressionEvent($config, $experimentId, $variationKey, $fl $eventParams = $this->getCommonParams($config, $userId, $attributes); $experiment = $config->getExperimentFromId($experimentId); + $variation = ""; // Mapped flagKey can be directly used in variation in that case no experimentKey exist - $variation = $config->getFlagVariationByKey($flagKey, $variationKey); - + if (!empty($flagKey)) { + $variation = $config->getFlagVariationByKey($flagKey, $variationKey); + } + // When variation is not mapped to any flagKey - if (!$variation) { + if (!$variation && !empty($experimentId)) { $variation = $config->getVariationFromKeyByExperimentId($experimentId, $variationKey); } From bcb8eea9bb606fb940deebfe84c8894ad8aec114 Mon Sep 17 00:00:00 2001 From: mnoman09 Date: Fri, 17 Dec 2021 17:51:17 +0500 Subject: [PATCH 5/6] removed unnesecary checks and moved getVariationFromExperiment above and then checking $variation = $config->getFlagVariationByKey($flagKey, $variationKey); --- src/Optimizely/Event/Builder/EventBuilder.php | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/Optimizely/Event/Builder/EventBuilder.php b/src/Optimizely/Event/Builder/EventBuilder.php index df5b0a3a..953c4d2c 100644 --- a/src/Optimizely/Event/Builder/EventBuilder.php +++ b/src/Optimizely/Event/Builder/EventBuilder.php @@ -252,17 +252,13 @@ public function createImpressionEvent($config, $experimentId, $variationKey, $fl $eventParams = $this->getCommonParams($config, $userId, $attributes); $experiment = $config->getExperimentFromId($experimentId); - $variation = ""; + // When variation is not mapped to any flagKey + $variation = $config->getVariationFromKeyByExperimentId($experimentId, $variationKey); + // Mapped flagKey can be directly used in variation in that case no experimentKey exist - if (!empty($flagKey)) { + if ($variation && !$variation->getKey()){ $variation = $config->getFlagVariationByKey($flagKey, $variationKey); } - - // When variation is not mapped to any flagKey - if (!$variation && !empty($experimentId)) { - $variation = $config->getVariationFromKeyByExperimentId($experimentId, $variationKey); - } - $impressionParams = $this->getImpressionParams($experiment, $variation, $flagKey, $ruleKey, $ruleType, $enabled); $eventParams[VISITORS][0][SNAPSHOTS][] = $impressionParams; From 451fb2a69737241ab3460f2f4a3706b7bde9ee52 Mon Sep 17 00:00:00 2001 From: mnoman09 Date: Fri, 17 Dec 2021 20:52:14 +0500 Subject: [PATCH 6/6] lint fix --- src/Optimizely/Event/Builder/EventBuilder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Optimizely/Event/Builder/EventBuilder.php b/src/Optimizely/Event/Builder/EventBuilder.php index 953c4d2c..60074d65 100644 --- a/src/Optimizely/Event/Builder/EventBuilder.php +++ b/src/Optimizely/Event/Builder/EventBuilder.php @@ -256,7 +256,7 @@ public function createImpressionEvent($config, $experimentId, $variationKey, $fl $variation = $config->getVariationFromKeyByExperimentId($experimentId, $variationKey); // Mapped flagKey can be directly used in variation in that case no experimentKey exist - if ($variation && !$variation->getKey()){ + if ($variation && !$variation->getKey()) { $variation = $config->getFlagVariationByKey($flagKey, $variationKey); } $impressionParams = $this->getImpressionParams($experiment, $variation, $flagKey, $ruleKey, $ruleType, $enabled); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy