Skip to content

Commit 641bd4a

Browse files
oakbanikellyroach-optimizely
authored andcommitted
Sort enabled feature keys (#96)
* Sort enabled feature keys * 🖊️ Assert that isFeatureEnabled gets called in an unsorted order to verify that sorting actually works
1 parent 8e220c5 commit 641bd4a

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

src/Optimizely/Optimizely.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,7 @@ public function getEnabledFeatures($userId, $attributes = null)
552552
}
553553
}
554554

555+
sort($enabledFeatureKeys);
555556
return $enabledFeatureKeys;
556557
}
557558

tests/OptimizelyTest.php

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2506,6 +2506,52 @@ public function testGetEnabledFeaturesGivenFeaturesAreEnabledForUser()
25062506
);
25072507
}
25082508

2509+
public function testGetEnabledFeaturesReturnsSortedFeatureKeys()
2510+
{
2511+
$optimizelyMock = $this->getMockBuilder(Optimizely::class)
2512+
->setConstructorArgs(array($this->datafile))
2513+
->setMethods(array('isFeatureEnabled'))
2514+
->getMock();
2515+
2516+
// Mock isFeatureEnabled and assert that isFeatureEnabled does get called in an unsorted order
2517+
$optimizelyMock->expects($this->at(0))
2518+
->method('isFeatureEnabled')
2519+
->with('boolean_feature', 'user_id', [])
2520+
->willReturn(true);
2521+
$optimizelyMock->expects($this->at(1))
2522+
->method('isFeatureEnabled')
2523+
->with('double_single_variable_feature', 'user_id', [])
2524+
->willReturn(true);
2525+
$optimizelyMock->expects($this->at(2))
2526+
->method('isFeatureEnabled')
2527+
->with('integer_single_variable_feature', 'user_id', [])
2528+
->willReturn(true);
2529+
$optimizelyMock->expects($this->at(3))
2530+
->method('isFeatureEnabled')
2531+
->with('boolean_single_variable_feature', 'user_id', [])
2532+
->willReturn(true);
2533+
$optimizelyMock->expects($this->at(4))
2534+
->method('isFeatureEnabled')
2535+
->with('string_single_variable_feature', 'user_id', [])
2536+
->willReturn(true);
2537+
$optimizelyMock->expects($this->at(5))
2538+
->method('isFeatureEnabled')
2539+
->with('multi_variate_feature', 'user_id', [])
2540+
->willReturn(true);
2541+
2542+
$this->assertEquals(
2543+
[
2544+
'boolean_feature',
2545+
'boolean_single_variable_feature',
2546+
'double_single_variable_feature',
2547+
'integer_single_variable_feature',
2548+
'multi_variate_feature',
2549+
'string_single_variable_feature'
2550+
],
2551+
$optimizelyMock->getEnabledFeatures("user_id", [])
2552+
);
2553+
}
2554+
25092555
public function testGetEnabledFeaturesWithUserAttributes()
25102556
{
25112557
$optimizelyMock = $this->getMockBuilder(Optimizely::class)

0 commit comments

Comments
 (0)