Skip to content

Commit c182d04

Browse files
wip: add decide test cases for holdout
1 parent e445f7b commit c182d04

File tree

4 files changed

+572
-5
lines changed

4 files changed

+572
-5
lines changed

OptimizelySwiftSDK.xcodeproj/project.pbxproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2058,6 +2058,8 @@
20582058
98AC984B2DB8FFE0001405DD /* DecisionServiceTests_Features_Holdouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AC98482DB8FC29001405DD /* DecisionServiceTests_Features_Holdouts.swift */; };
20592059
98AC985E2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AC985D2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift */; };
20602060
98AC985F2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98AC985D2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift */; };
2061+
98D5AE842DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D5AE832DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift */; };
2062+
98D5AE852DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98D5AE832DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift */; };
20612063
BD1C3E8524E4399C0084B4DA /* SemanticVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B97DD93249D327F003DE606 /* SemanticVersion.swift */; };
20622064
BD64853C2491474500F30986 /* Optimizely.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E75167A22C520D400B2B157 /* Optimizely.h */; settings = {ATTRIBUTES = (Public, ); }; };
20632065
BD64853E2491474500F30986 /* Audience.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E75169822C520D400B2B157 /* Audience.swift */; };
@@ -2506,6 +2508,7 @@
25062508
98AC98452DB7B762001405DD /* BucketTests_HoldoutToVariation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BucketTests_HoldoutToVariation.swift; sourceTree = "<group>"; };
25072509
98AC98482DB8FC29001405DD /* DecisionServiceTests_Features_Holdouts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecisionServiceTests_Features_Holdouts.swift; sourceTree = "<group>"; };
25082510
98AC985D2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift; sourceTree = "<group>"; };
2511+
98D5AE832DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptimizelyUserContextTests_Decide_Holdouts.swift; sourceTree = "<group>"; };
25092512
BD6485812491474500F30986 /* Optimizely.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Optimizely.framework; sourceTree = BUILT_PRODUCTS_DIR; };
25102513
C78CAF572445AD8D009FE876 /* OptimizelyJSON.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptimizelyJSON.swift; sourceTree = "<group>"; };
25112514
C78CAF652446DB91009FE876 /* OptimizelyClientTests_OptimizelyJSON.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OptimizelyClientTests_OptimizelyJSON.swift; sourceTree = "<group>"; };
@@ -3042,6 +3045,7 @@
30423045
6E75198122C5211100B2B157 /* OptimizelyErrorTests.swift */,
30433046
6EC6DD6824AE94820017D296 /* OptimizelyUserContextTests.swift */,
30443047
6E2D34B8250AD14000A0CDFE /* OptimizelyUserContextTests_Decide.swift */,
3048+
98D5AE832DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift */,
30453049
6E7E9B362523F8BF009E4426 /* OptimizelyUserContextTests_Decide_Reasons.swift */,
30463050
98AC985D2DBA6721001405DD /* OptimizelyUserContextTests_Decide_With_Holdouts_Reasons.swift */,
30473051
6EB97BCC24C89DFB00068883 /* OptimizelyUserContextTests_Decide_Legacy.swift */,
@@ -4894,6 +4898,7 @@
48944898
6E9B116322C5487100C22D81 /* BucketTests_GroupToExp.swift in Sources */,
48954899
6E7516AF22C520D400B2B157 /* DefaultLogger.swift in Sources */,
48964900
6EF8DE2524BD1BB2008B9488 /* OptimizelyDecideOption.swift in Sources */,
4901+
98D5AE852DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift in Sources */,
48974902
6E75194522C520D500B2B157 /* OPTDecisionService.swift in Sources */,
48984903
6E75185522C520D400B2B157 /* ProjectConfig.swift in Sources */,
48994904
84F6BAB427FCC5CF004BE62A /* OptimizelyUserContextTests_ODP.swift in Sources */,
@@ -5173,6 +5178,7 @@
51735178
6E9B114922C5486E00C22D81 /* BucketTests_GroupToExp.swift in Sources */,
51745179
6E75182B22C520D400B2B157 /* BatchEvent.swift in Sources */,
51755180
6EF8DE1E24BD1BB2008B9488 /* OptimizelyDecideOption.swift in Sources */,
5181+
98D5AE842DBB91C0000D5844 /* OptimizelyUserContextTests_Decide_Holdouts.swift in Sources */,
51765182
6E75190322C520D500B2B157 /* Attribute.swift in Sources */,
51775183
6E75192722C520D500B2B157 /* DataStoreQueueStack.swift in Sources */,
51785184
6E7516F122C520D400B2B157 /* OptimizelyError.swift in Sources */,

Sources/Implementation/DefaultDecisionService.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ class DefaultDecisionService: OPTDecisionService {
269269
options: [OptimizelyDecideOption]? = nil) -> DecisionResponse<FeatureDecision> {
270270
let reasons = DecisionReasons(options: options)
271271
let holdouts = config.getHoldoutForFlag(id: featureFlag.id)
272-
272+
print("Holdouts \(holdouts)")
273273
for holdout in holdouts {
274274
let dicisionResponse = getVariationForHoldout(config: config,
275275
flagKey: featureFlag.key,

Tests/OptimizelyTests-Common/DecisionServiceTests_Features_Holdouts.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -397,8 +397,7 @@ class DecisionServiceTests_Features_Holdouts: XCTestCase {
397397
excludedHoldout.trafficAllocation[0].endOfRange = tfAllocationRange
398398

399399
self.config.project.holdouts = [globalHoldout, includedHoldout, excludedHoldout]
400-
print("All holdouts \(self.config.holdoutConfig.allHoldouts)")
401-
print("All global holdouts \(self.config.holdoutConfig.global)")
400+
402401
// Mock bucketer to bucket into the first valid holdout (global)
403402
let mockBucketer = MockBucketer(mockBucketValue: 1000) // Within all holdout ranges
404403
let mockDecisionService = MockDecisionService(bucketer: mockBucketer, userProfileService: decisionService.userProfileService)
@@ -421,7 +420,6 @@ class DecisionServiceTests_Features_Holdouts: XCTestCase {
421420
// Setup multiple holdouts
422421
let globalHoldout = try! OTUtils.model(from: sampleHoldoutGlobal) as Holdout
423422
let includedHoldout = try! OTUtils.model(from: sampleHoldoutIncluded) as Holdout
424-
print(self.config.project.featureFlags)
425423
self.config.project.holdouts = [globalHoldout, includedHoldout]
426424

427425
// Mock bucketer to fail global holdout bucketing, succeed for included
@@ -586,7 +584,6 @@ class MockBucketer: DefaultBucketer {
586584
}
587585

588586
override func generateBucketValue(bucketingId: String) -> Int {
589-
print("Mock bucket value: \(mockBucketValue)")
590587
return mockBucketValue
591588
}
592589
}

0 commit comments

Comments
 (0)