Skip to content

Commit

Permalink
Merge bd23ce0 into c687e53
Browse files Browse the repository at this point in the history
  • Loading branch information
ozayr-zaviar committed Jan 22, 2021
2 parents c687e53 + bd23ce0 commit 42cfd24
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 25 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
},
"require-dev": {
"phpunit/phpunit": "^4.8|^5.0",
"php-coveralls/php-coveralls": "v2.3.0",
"php-coveralls/php-coveralls": "v2.0.0",
"squizlabs/php_codesniffer": "3.*",
"icecave/parity": "^1.0 || ^2.0"
},
Expand Down
6 changes: 3 additions & 3 deletions src/Optimizely/Optimizely.php
Original file line number Diff line number Diff line change
Expand Up @@ -375,9 +375,9 @@ public function decide(OptimizelyUserContext $userContext, $key, array $decideOp
$this->sendImpressionEvent(
$config,
$ruleKey,
$variationKey === null ? '' : $variationKey,
$variationKey,
$flagKey,
$ruleKey === null ? '' : $ruleKey,
$ruleKey,
$source,
$featureEnabled,
$userId,
Expand Down Expand Up @@ -415,7 +415,7 @@ public function decide(OptimizelyUserContext $userContext, $key, array $decideOp
'flagKey'=> $flagKey,
'enabled'=> $featureEnabled,
'variables' => $allVariables,
'variationKey' => $variationKey,
'variation' => $variationKey,
'ruleKey' => $ruleKey,
'reasons' => $shouldIncludeReasons ? $decideReasons:[],
'decisionEventDispatched' => $decisionEventDispatched
Expand Down
11 changes: 8 additions & 3 deletions src/Optimizely/OptimizelyUserContext.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,24 +31,29 @@ public function __construct(Optimizely $optimizelyClient, $userId, array $attrib
$this->attributes = $attributes;
}

protected function replicate()
{
return new OptimizelyUserContext($this->optimizelyClient, $this->userId, $this->attributes);
}

public function setAttribute($key, $value)
{
$this->attributes[$key] = $value;
}

public function decide($key, array $options = [])
{
return $this->optimizelyClient->decide($this, $key, $options);
return $this->optimizelyClient->decide($this->replicate(), $key, $options);
}

public function decideForKeys(array $keys, array $options = [])
{
return $this->optimizelyClient->decideForKeys($this, $keys, $options);
return $this->optimizelyClient->decideForKeys($this->replicate(), $keys, $options);
}

public function decideAll(array $options = [])
{
return $this->optimizelyClient->decideAll($this, $options);
return $this->optimizelyClient->decideAll($this->replicate(), $options);
}

public function trackEvent($eventKey, array $eventTags = [])
Expand Down
36 changes: 18 additions & 18 deletions tests/OptimizelyTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ public function testDecide()
'flagKey'=>'double_single_variable_feature',
'enabled'=> true,
'variables'=> ["double_variable" => 42.42],
'variationKey' => 'control',
'variation' => 'control',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => [],
'decisionEventDispatched' => true
Expand Down Expand Up @@ -590,7 +590,7 @@ public function testDecidewhenUserIsBucketedIntoFeatureExperiment()
'flagKey'=>'double_single_variable_feature',
'enabled'=> true,
'variables'=> ["double_variable" => 42.42],
'variationKey' => 'control',
'variation' => 'control',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => [],
'decisionEventDispatched' => true
Expand Down Expand Up @@ -681,7 +681,7 @@ public function testDecidewhenUserIsBucketedIntoRolloutAndSendFlagDecisionIsTrue
'flagKey'=>'double_single_variable_feature',
'enabled'=> true,
'variables'=> ["double_variable" => 42.42],
'variationKey' => 'control',
'variation' => 'control',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => [],
'decisionEventDispatched' => true
Expand Down Expand Up @@ -772,7 +772,7 @@ public function testDecidewhenUserIsBucketedIntoRolloutAndSendFlagDecisionIsFals
'flagKey'=>'double_single_variable_feature',
'enabled'=> true,
'variables'=> ["double_variable" => 42.42],
'variationKey' => 'control',
'variation' => 'control',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => [],
'decisionEventDispatched' => false
Expand Down Expand Up @@ -852,7 +852,7 @@ public function testDecidewhenDecisionServiceReturnsNullAndSendFlagDecisionIsTru
'flagKey'=>'double_single_variable_feature',
'enabled'=> false,
'variables'=> ["double_variable" => 14.99],
'variationKey' => null,
'variation' => null,
'ruleKey' => null,
'reasons' => [],
'decisionEventDispatched' => true
Expand Down Expand Up @@ -936,7 +936,7 @@ public function testwhenDecisionServiceReturnNullAndSendFlagDecisionIsFalse()
'flagKey'=>'double_single_variable_feature',
'enabled'=> false,
'variables'=> ["double_variable" => 14.99],
'variationKey' => null,
'variation' => null,
'ruleKey' => null,
'reasons' => [],
'decisionEventDispatched' => false
Expand Down Expand Up @@ -1012,7 +1012,7 @@ public function testDecideOptionDisableDecisionEvent()
'flagKey'=>'double_single_variable_feature',
'enabled'=> true,
'variables'=> ["double_variable" => 42.42],
'variationKey' => 'control',
'variation' => 'control',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => [],
'decisionEventDispatched' => false
Expand Down Expand Up @@ -1078,7 +1078,7 @@ public function testDecideOptionDisableDecisionEventWhenPassedInDefaultOptions()
'flagKey'=>'double_single_variable_feature',
'enabled'=> true,
'variables'=> ["double_variable" => 42.42],
'variationKey' => 'control',
'variation' => 'control',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => [],
'decisionEventDispatched' => false
Expand Down Expand Up @@ -1140,7 +1140,7 @@ public function testDecideRespectsUserProfileServiceLookup()
'flagKey'=>'double_single_variable_feature',
'enabled'=> false,
'variables'=> ["double_variable" => 14.99],
'variationKey' => 'variation',
'variation' => 'variation',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => [],
'decisionEventDispatched' => true
Expand Down Expand Up @@ -1214,7 +1214,7 @@ public function testDecideRespectsUserProfileServiceSave()
'flagKey'=>'double_single_variable_feature',
'enabled'=> true,
'variables'=> ["double_variable" => 42.42],
'variationKey' => 'control',
'variation' => 'control',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => [],
'decisionEventDispatched' => true
Expand Down Expand Up @@ -1288,7 +1288,7 @@ public function testDecideOptionIgnoreUserProfileService()
'flagKey'=>'double_single_variable_feature',
'enabled'=> true,
'variables'=> ["double_variable" => 42.42],
'variationKey' => 'control',
'variation' => 'control',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => [],
'decisionEventDispatched' => true
Expand Down Expand Up @@ -1364,7 +1364,7 @@ public function testDecideOptionIgnoreUserProfileServiceWhenPassedInDefaultOptio
'flagKey'=>'double_single_variable_feature',
'enabled'=> true,
'variables'=> ["double_variable" => 42.42],
'variationKey' => 'control',
'variation' => 'control',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => [],
'decisionEventDispatched' => true
Expand Down Expand Up @@ -1439,7 +1439,7 @@ public function testDecideOptionExcludeVariables()
'flagKey'=>'double_single_variable_feature',
'enabled'=> true,
'variables'=> [],
'variationKey' => 'control',
'variation' => 'control',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => [],
'decisionEventDispatched' => true
Expand Down Expand Up @@ -1527,7 +1527,7 @@ public function testDecideOptionExcludeVariablesWhenPassedInDefaultOptions()
'flagKey'=>'double_single_variable_feature',
'enabled'=> true,
'variables'=> [],
'variationKey' => 'control',
'variation' => 'control',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => [],
'decisionEventDispatched' => true
Expand Down Expand Up @@ -1667,7 +1667,7 @@ public function testDecideOptionIncludeReasons()
'flagKey'=>'double_single_variable_feature',
'enabled'=> true,
'variables'=> ["double_variable" => 42.42],
'variationKey' => 'control',
'variation' => 'control',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => $expectedReasons,
'decisionEventDispatched' => true
Expand Down Expand Up @@ -1762,7 +1762,7 @@ public function testDecideOptionIncludeReasonsWhenPassedInDefaultOptions()
'flagKey'=>'empty_feature',
'enabled'=> false,
'variables'=> [],
'variationKey' => null,
'variation' => null,
'ruleKey' => null,
'reasons' => $expectedReasons,
'decisionEventDispatched' => false
Expand Down Expand Up @@ -1840,7 +1840,7 @@ public function testDecideParamOptionsWorkTogetherWithDefaultOptions()
'flagKey'=>'double_single_variable_feature',
'enabled'=> true,
'variables'=> [],
'variationKey' => 'control',
'variation' => 'control',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => [],
'decisionEventDispatched' => false
Expand Down Expand Up @@ -1951,7 +1951,7 @@ public function testDecidewithAllDecideOptionsSet()
'flagKey'=>'double_single_variable_feature',
'enabled'=> true,
'variables'=> [],
'variationKey' => 'control',
'variation' => 'control',
'ruleKey' => 'test_experiment_double_feature',
'reasons' => [],
'decisionEventDispatched' => false
Expand Down
16 changes: 16 additions & 0 deletions tests/OptimizelyUserContextTests.php
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,22 @@ public function testDecideCallsAndReturnsOptimizelyDecideAPI()
);
}

public function testDecideResponseUserContextNotEqualCalledUserContext()
{
$userId = 'test_user';
$attributes = [ "browser" => "chrome"];

$optlyObject = new Optimizely($this->datafile);

$optUserContext = new OptimizelyUserContext($optlyObject, $userId, $attributes);
$decision = $optUserContext->decide('test_feature', ['DISABLE_DECISION_EVENT', 'ENABLED_FLAGS_ONLY']);
$optUserContext->setAttribute("test_key", "test_value");
$this->assertNotEquals(
$optUserContext->getAttributes(),
$decision->getUserContext()->getAttributes()
);
}

public function testDecideAllCallsAndReturnsOptimizelyDecideAllAPI()
{
$userId = 'test_user';
Expand Down

0 comments on commit 42cfd24

Please sign in to comment.