Skip to content

Commit 793d1d5

Browse files
wip: DecisionService testcases added for holdouts
1 parent fc15409 commit 793d1d5

File tree

4 files changed

+613
-1
lines changed

4 files changed

+613
-1
lines changed

OptimizelySwiftSDK.xcodeproj/project.pbxproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2054,6 +2054,8 @@
20542054
98AC97F42DAE9685001405DD /* HoldoutConfigTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AC97F22DAE9685001405DD /* HoldoutConfigTests.swift */; };
20552055
98AC98462DB7B762001405DD /* BucketTests_HoldoutToVariation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AC98452DB7B762001405DD /* BucketTests_HoldoutToVariation.swift */; };
20562056
98AC98472DB7B762001405DD /* BucketTests_HoldoutToVariation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AC98452DB7B762001405DD /* BucketTests_HoldoutToVariation.swift */; };
2057+
98AC98492DB8FC29001405DD /* DecisionServiceTests_Features_Holdouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AC98482DB8FC29001405DD /* DecisionServiceTests_Features_Holdouts.swift */; };
2058+
98AC984B2DB8FFE0001405DD /* DecisionServiceTests_Features_Holdouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AC98482DB8FC29001405DD /* DecisionServiceTests_Features_Holdouts.swift */; };
20572059
BD1C3E8524E4399C0084B4DA /* SemanticVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B97DD93249D327F003DE606 /* SemanticVersion.swift */; };
20582060
BD64853C2491474500F30986 /* Optimizely.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E75167A22C520D400B2B157 /* Optimizely.h */; settings = {ATTRIBUTES = (Public, ); }; };
20592061
BD64853E2491474500F30986 /* Audience.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E75169822C520D400B2B157 /* Audience.swift */; };
@@ -2500,6 +2502,7 @@
25002502
98AC97E12DAE4579001405DD /* HoldoutConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HoldoutConfig.swift; sourceTree = "<group>"; };
25012503
98AC97F22DAE9685001405DD /* HoldoutConfigTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HoldoutConfigTests.swift; sourceTree = "<group>"; };
25022504
98AC98452DB7B762001405DD /* BucketTests_HoldoutToVariation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BucketTests_HoldoutToVariation.swift; sourceTree = "<group>"; };
2505+
98AC98482DB8FC29001405DD /* DecisionServiceTests_Features_Holdouts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecisionServiceTests_Features_Holdouts.swift; sourceTree = "<group>"; };
25032506
BD6485812491474500F30986 /* Optimizely.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Optimizely.framework; sourceTree = BUILT_PRODUCTS_DIR; };
25042507
C78CAF572445AD8D009FE876 /* OptimizelyJSON.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptimizelyJSON.swift; sourceTree = "<group>"; };
25052508
C78CAF652446DB91009FE876 /* OptimizelyClientTests_OptimizelyJSON.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptimizelyClientTests_OptimizelyJSON.swift; sourceTree = "<group>"; };
@@ -3015,6 +3018,7 @@
30153018
6E27ECBD266FD78600B4A6D4 /* DecisionReasonsTests.swift */,
30163019
6E75198022C5211100B2B157 /* DecisionServiceTests_Experiments.swift */,
30173020
6E75199122C5211100B2B157 /* DecisionServiceTests_Features.swift */,
3021+
98AC98482DB8FC29001405DD /* DecisionServiceTests_Features_Holdouts.swift */,
30183022
6E75199422C5211100B2B157 /* DecisionServiceTests_Others.swift */,
30193023
6E75198622C5211100B2B157 /* DecisionServiceTests_UserProfiles.swift */,
30203024
6E75198822C5211100B2B157 /* DefaultLoggerTests.swift */,
@@ -4988,6 +4992,7 @@
49884992
6E7516F722C520D400B2B157 /* OptimizelyError.swift in Sources */,
49894993
84861812286D0B8900B7F41B /* OdpSegmentManagerTests.swift in Sources */,
49904994
6E75189122C520D400B2B157 /* Project.swift in Sources */,
4995+
98AC98492DB8FC29001405DD /* DecisionServiceTests_Features_Holdouts.swift in Sources */,
49914996
6E7517F522C520D400B2B157 /* DataStoreMemory.swift in Sources */,
49924997
6E0207A9272A11CF008C3711 /* NetworkReachabilityTests.swift in Sources */,
49934998
6E75183D22C520D400B2B157 /* EventForDispatch.swift in Sources */,
@@ -5340,6 +5345,7 @@
53405345
6EF8DE2124BD1BB2008B9488 /* OptimizelyDecideOption.swift in Sources */,
53415346
8464087928130D3200CCF97D /* Integration.swift in Sources */,
53425347
6E9B118122C5488100C22D81 /* ConditionLeafTests.swift in Sources */,
5348+
98AC984B2DB8FFE0001405DD /* DecisionServiceTests_Features_Holdouts.swift in Sources */,
53435349
6E75184522C520D400B2B157 /* Event.swift in Sources */,
53445350
6E75191122C520D500B2B157 /* BackgroundingCallbacks.swift in Sources */,
53455351
848617D12863DC2700B7F41B /* OdpSegmentManager.swift in Sources */,

Sources/Implementation/DefaultBucketer.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ class DefaultBucketer: OPTBucketer {
150150
}
151151

152152
func allocateTraffic(trafficAllocation: [TrafficAllocation], bucketValue: Int) -> String? {
153-
print("Bucketed value \(bucketValue)")
154153
for bucket in trafficAllocation where bucketValue < bucket.endOfRange {
155154
return bucket.entityId
156155
}

Sources/Implementation/DefaultDecisionService.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ class DefaultDecisionService: OPTDecisionService {
4242
self.userProfileService = userProfileService
4343
}
4444

45+
init(userProfileService: OPTUserProfileService, bucketer: OPTBucketer) {
46+
self.bucketer = bucketer
47+
self.userProfileService = userProfileService
48+
}
49+
4550
/// Public Method
4651
func getVariation(config: ProjectConfig,
4752
experiment: Experiment,
@@ -280,6 +285,7 @@ class DefaultDecisionService: OPTDecisionService {
280285
options: [OptimizelyDecideOption]? = nil) -> DecisionResponse<FeatureDecision> {
281286
let reasons = DecisionReasons(options: options)
282287
let holdouts = config.getHoldoutForFlag(id: featureFlag.id)
288+
283289
for holdout in holdouts {
284290
let dicisionResponse = getVariationForHoldout(config: config,
285291
flagKey: featureFlag.key,

0 commit comments

Comments
 (0)