Skip to content

Commit 7c5d22a

Browse files
just adding more unit tests that should be able to capture weird sync issues better (#377)
1 parent 87e902a commit 7c5d22a

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed

Tests/OptimizelyTests-APIs/OptimizelyClientTests_Init_Sync.swift

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,61 @@ class OptimizelyClientTests_Init_Sync: XCTestCase {
158158
let optConfig = try! optimizely.getOptimizelyConfig()
159159
XCTAssertEqual(optConfig.revision, kRevisionUpdated)
160160
}
161+
162+
func testInitSync_multi() {
163+
let testSdkKey = OTUtils.randomSdkKey // unique but consistent with registry + start
164+
165+
let handler = FakeDatafileHandler(mode: .successWithData)
166+
HandlerRegistryService.shared.registerBinding(binder: Binder(service: OPTDatafileHandler.self).sdkKey(key: testSdkKey).using(instance: handler).to(factory: FakeDatafileHandler.init).reInitializeStrategy(strategy: .reUse).singetlon())
167+
168+
let optimizely = OptimizelyClient(sdkKey: testSdkKey,
169+
periodicDownloadInterval: 10)
170+
171+
try! optimizely.start(datafile: datafile,
172+
doUpdateConfigOnNewDatafile: false)
173+
174+
try! optimizely.start(datafile: datafile,
175+
doUpdateConfigOnNewDatafile: false)
176+
177+
try! optimizely.start(datafile: datafile,
178+
doUpdateConfigOnNewDatafile: false)
179+
180+
let optConfig = try! optimizely.getOptimizelyConfig()
181+
XCTAssertEqual(optConfig.revision, kRevisionUpdated)
182+
}
183+
184+
func testInitSync_asnync() {
185+
let testSdkKey = OTUtils.randomSdkKey // unique but consistent with registry + start
186+
187+
let handler = FakeDatafileHandler(mode: .successWithData)
188+
HandlerRegistryService.shared.registerBinding(binder: Binder(service: OPTDatafileHandler.self).sdkKey(key: testSdkKey).using(instance: handler).to(factory: FakeDatafileHandler.init).reInitializeStrategy(strategy: .reUse).singetlon())
189+
190+
let optimizely = OptimizelyClient(sdkKey: testSdkKey,
191+
periodicDownloadInterval: 10)
192+
193+
try! optimizely.start(datafile: datafile,
194+
doUpdateConfigOnNewDatafile: false)
195+
196+
let exp = expectation(description: "x")
197+
optimizely.start { result in
198+
if case .success = result {
199+
XCTAssert(true)
200+
} else {
201+
XCTAssert(false)
202+
}
203+
exp.fulfill()
204+
}
205+
206+
wait(for: [exp], timeout: 10)
207+
208+
let enabled = optimizely.isFeatureEnabled(featureKey: "no_key", userId: "userId")
209+
210+
XCTAssertEqual(enabled, false)
211+
212+
let optConfig = try! optimizely.getOptimizelyConfig()
213+
XCTAssertEqual(optConfig.revision, kRevisionUpdated)
214+
}
215+
161216
}
162217

163218
extension OptimizelyClientTests_Init_Sync {

0 commit comments

Comments
 (0)