Skip to content

Commit d12791a

Browse files
GetEnabledFeatures sorted (#220)
1 parent b5fc6a8 commit d12791a

File tree

3 files changed

+35
-25
lines changed

3 files changed

+35
-25
lines changed

OptimizelySDKCore/OptimizelySDKCore/Optimizely.m

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,8 @@ - (NSString *)getFeatureVariableString:(nullable NSString *)featureKey
364364
[enabledFeatures addObject:featureKey];
365365
}
366366
}
367-
return enabledFeatures;
367+
NSArray *enabledFeaturesSorted = [enabledFeatures sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
368+
return enabledFeaturesSorted;
368369
}
369370

370371
#pragma mark trackEvent methods

OptimizelySDKCore/OptimizelySDKCoreTests/OptimizelyTest.m

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -940,13 +940,22 @@ -(void)testGetEnabledFeaturesWithNoFeatureEnabledForUser {
940940
[optimizelyMock stopMocking];
941941
}
942942

943-
// should return empty feature array as no feature is enabled for user
943+
// should return feature array as some feature is enabled for user
944944
-(void)testGetEnabledFeaturesWithSomeFeaturesEnabledForUser {
945945
NSArray<NSString *> *enabledFeatures = @[@"booleanFeature", @"booleanSingleVariableFeature", @"multiVariateFeature"];
946946
NSArray<NSString *> *features = [self.optimizely getEnabledFeatures:kUserId attributes:self.attributes];
947947
XCTAssertEqualObjects(features, enabledFeatures);
948948
}
949949

950+
// should return sorted feature array as some feature is enabled for user
951+
-(void)testGetEnabledFeaturesSortedWithSomeFeaturesEnabledForUser {
952+
NSArray<NSString *> *sortedEnabledFeatures = @[@"booleanFeature", @"booleanSingleVariableFeature", @"multiVariateFeature"];
953+
NSArray<NSString *> *unSortedEnabledFeatures = @[ @"multiVariateFeature", @"booleanFeature", @"booleanSingleVariableFeature"];
954+
NSArray<NSString *> *features = [self.optimizely getEnabledFeatures:kUserId attributes:self.attributes];
955+
XCTAssertEqualObjects(features, sortedEnabledFeatures);
956+
XCTAssertNotEqualObjects(features, unSortedEnabledFeatures);
957+
}
958+
950959
#pragma mark - Helper Methods
951960

952961
- (id)getOptimizelyMockForFeatureVariableType:(NSString *)featureVariableType variableKey:(NSString *)variableKey expectedReturn:(NSString *)expectedReturn {

OptimizelySDKCore/OptimizelySDKCoreTests/TestData/test_data_10_experiments.json

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,29 @@
713713
"experimentIds": [],
714714
"variables": []
715715
},
716+
{
717+
"id": "155559",
718+
"key": "multiVariateFeature",
719+
"groupId": "",
720+
"rolloutId": "",
721+
"experimentIds": [
722+
"6358043287"
723+
],
724+
"variables": [
725+
{
726+
"id": "155560",
727+
"key": "firstLetter",
728+
"type": "string",
729+
"defaultValue": "H"
730+
},
731+
{
732+
"id": "155561",
733+
"key": "restOfName",
734+
"type": "string",
735+
"defaultValue": "arry"
736+
}
737+
]
738+
},
716739
{
717740
"id": "155549",
718741
"key": "booleanFeature",
@@ -765,29 +788,6 @@
765788
}
766789
]
767790
},
768-
{
769-
"id": "155559",
770-
"key": "multiVariateFeature",
771-
"groupId": "",
772-
"rolloutId": "",
773-
"experimentIds": [
774-
"6358043287"
775-
],
776-
"variables": [
777-
{
778-
"id": "155560",
779-
"key": "firstLetter",
780-
"type": "string",
781-
"defaultValue": "H"
782-
},
783-
{
784-
"id": "155561",
785-
"key": "restOfName",
786-
"type": "string",
787-
"defaultValue": "arry"
788-
}
789-
]
790-
},
791791
{
792792
"id": "155666",
793793
"key": "doubleSingleVariableFeature",

0 commit comments

Comments
 (0)