Skip to content

Commit c7460b2

Browse files
[FSSDK-10761] fix: passed fsc for VUID optln (#564)
FSC test cases passed for vuid optln
1 parent 62ae49b commit c7460b2

File tree

5 files changed

+40
-30
lines changed

5 files changed

+40
-30
lines changed

Sources/ODP/OdpManager.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ public class OdpManager {
5757
cacheTimeoutInSecs: cacheTimeoutInSecs,
5858
resourceTimeoutInSecs: timeoutForSegmentFetchInSecs)
5959
self.eventManager = eventManager ?? OdpEventManager(sdkKey: sdkKey,
60-
resourceTimeoutInSecs: timeoutForEventDispatchInSecs)
60+
resourceTimeoutInSecs: timeoutForEventDispatchInSecs)
61+
6162
self.odpConfig = OdpConfig()
6263
self.segmentManager.odpConfig = odpConfig
6364
self.eventManager.odpConfig = odpConfig
@@ -80,6 +81,12 @@ public class OdpManager {
8081
completionHandler: completionHandler)
8182
}
8283

84+
func sendInitializedEvent(vuid: String) throws {
85+
guard enabled else { throw OptimizelyError.odpNotEnabled }
86+
guard odpConfig.eventQueueingAllowed else { throw OptimizelyError.odpNotIntegrated }
87+
eventManager.sendInitializedEvent(vuid: vuid)
88+
}
89+
8390
func identifyUser(userId: String) {
8491
guard enabled else {
8592
logger.d("ODP identify event is not dispatched (ODP disabled).")

Sources/Optimizely+Decide/OptimizelyClient+Decide.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ extension OptimizelyClient {
3636
/// - Parameter attributes: A map of attribute names to current user attribute values.
3737
/// - Returns: An OptimizelyUserContext associated with this OptimizelyClient
3838
public func createUserContext(attributes: [String: Any]? = nil) -> OptimizelyUserContext? {
39-
guard enableVuid, let vuid = self.vuid else {
39+
guard let vuid = self.vuid else {
4040
logger.e("Vuid is not enabled or invalid VUID. User context not created.")
4141
return nil
4242
}

Sources/Optimizely/OptimizelyClient.swift

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ open class OptimizelyClient: NSObject {
6060
var decisionService: OPTDecisionService!
6161
public var notificationCenter: OPTNotificationCenter?
6262
public var odpManager: OdpManager!
63-
private var vuidManager: VuidManager!
63+
public var vuid: String?
6464
let sdkSettings: OptimizelySdkSettings
6565

6666
// MARK: - Public interfaces
@@ -90,17 +90,19 @@ open class OptimizelyClient: NSObject {
9090
self.sdkKey = sdkKey
9191
self.sdkSettings = settings ?? OptimizelySdkSettings()
9292
self.defaultDecideOptions = defaultDecideOptions ?? []
93-
93+
9494
super.init()
95-
self.vuidManager = VuidManager.shared
96-
self.vuidManager.configure(enable: self.sdkSettings.enableVuid)
95+
VuidManager.shared.configure(enable: self.sdkSettings.enableVuid)
96+
if self.sdkSettings.enableVuid {
97+
self.vuid = VuidManager.shared.vuid
98+
}
99+
97100
self.odpManager = odpManager ?? OdpManager(sdkKey: sdkKey,
98101
disable: sdkSettings.disableOdp,
99102
cacheSize: sdkSettings.segmentsCacheSize,
100103
cacheTimeoutInSecs: sdkSettings.segmentsCacheTimeoutInSecs,
101104
timeoutForSegmentFetchInSecs: sdkSettings.timeoutForSegmentFetchInSecs,
102105
timeoutForEventDispatchInSecs: sdkSettings.timeoutForOdpEventInSecs)
103-
self.odpManager.vuid = vuidManager.vuid
104106
let userProfileService = userProfileService ?? DefaultUserProfileService()
105107
let logger = logger ?? DefaultLogger()
106108
type(of: logger).logLevel = defaultLogLevel ?? .info
@@ -117,17 +119,10 @@ open class OptimizelyClient: NSObject {
117119
self.datafileHandler = HandlerRegistryService.shared.injectDatafileHandler(sdkKey: self.sdkKey)
118120
self.decisionService = HandlerRegistryService.shared.injectDecisionService(sdkKey: self.sdkKey)
119121
self.notificationCenter = HandlerRegistryService.shared.injectNotificationCenter(sdkKey: self.sdkKey)
120-
121-
if let _vuid = self.vuidManager.vuid {
122-
try? sendOdpEvent(type: Constants.ODP.eventType,
123-
action: "client_initialized",
124-
identifiers: [
125-
Constants.ODP.keyForVuid: _vuid
126-
],
127-
data: [:])
122+
if let _vuid = vuid {
123+
self.odpManager.vuid = _vuid
124+
sendInitializedEvent(vuid: _vuid)
128125
}
129-
130-
131126
logger.d("SDK Version: \(version)")
132127
}
133128

@@ -983,13 +978,8 @@ extension OptimizelyClient {
983978
data: data)
984979
}
985980

986-
/// the device vuid (read only)
987-
public var vuid: String? {
988-
return self.vuidManager.vuid
989-
}
990-
991-
public var enableVuid: Bool {
992-
return self.vuidManager.enable
981+
func sendInitializedEvent(vuid: String) {
982+
try? odpManager.sendInitializedEvent(vuid: vuid)
993983
}
994984

995985
func identifyUserToOdp(userId: String) {

Sources/Optimizely/VuidManager.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ public class VuidManager {
2020
private var _vuid: String = ""
2121
private(set) var enable: Bool = false
2222
let logger = OPTLoggerFactory.getLogger()
23-
2423
// a single vuid should be shared for all SDK instances
2524
public static let shared = VuidManager()
2625

Tests/OptimizelyTests-APIs/OptimizelyClientTests_ODP.swift

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -190,14 +190,28 @@ class OptimizelyClientTests_ODP: XCTestCase {
190190
func testVuidEnabled() {
191191
let settings = OptimizelySdkSettings(enableVuid: true)
192192
optimizely = OptimizelyClient(sdkKey: OTUtils.randomSdkKey, settings: settings)
193-
XCTAssertTrue(optimizely.enableVuid)
193+
XCTAssertNotNil(optimizely.vuid)
194194
XCTAssert(optimizely.vuid!.starts(with: "vuid_"))
195195
}
196196

197-
func testVuidDiabled() {
198-
// Default client vuid diabled
199-
XCTAssertFalse(optimizely.enableVuid)
200-
XCTAssertNil(optimizely.vuid)
197+
func test_register_vuid_autometically_when_enabled() {
198+
let settings = OptimizelySdkSettings(enableVuid: true)
199+
optimizely = OptimizelyClient(sdkKey: OTUtils.randomSdkKey, settings: settings)
200+
let eventManager = optimizely.odpManager.eventManager!
201+
let evt = eventManager.eventQueue.getFirstItem()!
202+
203+
XCTAssertEqual("fullstack", evt.type)
204+
XCTAssertEqual("client_initialized", evt.action)
205+
XCTAssertEqual(["vuid": optimizely.vuid], evt.identifiers)
206+
XCTAssertNotNil(optimizely.vuid)
207+
}
208+
209+
func test_vuid_does_not_register_autometically_when_enabled_but_odp_disabled() {
210+
let settings = OptimizelySdkSettings(disableOdp: true, enableVuid: true)
211+
optimizely = OptimizelyClient(sdkKey: OTUtils.randomSdkKey, settings: settings)
212+
XCTAssertNotNil(optimizely.vuid)
213+
let eventManager = optimizely.odpManager.eventManager
214+
XCTAssertNil(eventManager)
201215
}
202216

203217
// MARK: - OdpConfig Update

0 commit comments

Comments
 (0)