@@ -26,12 +26,15 @@ import Foundation
2626 @objc private var experimentPayloads : [ Data ]
2727 @objc private var experimentMetadata : [ String : Any ]
2828 @objc private var activeExperimentPayloads : [ Data ]
29- private let dbManager : ConfigDBManager ?
29+ private let dbManager : ConfigDBManager
30+ // TODO(ncooke3): This property could be made non-optional after ensuring the
31+ // unit tests properly configure the default app. This is because the
32+ // experiment controller comes from the ABTesting component.
3033 private let experimentController : ExperimentController ?
3134 private let experimentStartTimeDateFormatter : DateFormatter
3235
3336 /// Designated initializer;
34- @objc public init ( DBManager: ConfigDBManager ? ,
37+ @objc public init ( DBManager: ConfigDBManager ,
3538 experimentController controller: ExperimentController ? ) {
3639 experimentPayloads = [ ]
3740 experimentMetadata = [ : ]
@@ -52,8 +55,6 @@ import Foundation
5255 }
5356
5457 @objc private func loadExperimentFromTable( ) {
55- guard let dbManager else { return }
56-
5758 let completionHandler : ( Bool , [ String : Any ] ? ) -> Void = { [ weak self] _, result in
5859 guard let self else { return }
5960
@@ -101,14 +102,14 @@ import Foundation
101102 @objc public func updateExperiments( withResponse response: [ [ String : Any ] ] ? ) {
102103 // Cache fetched experiment payloads.
103104 experimentPayloads. removeAll ( )
104- dbManager? . deleteExperimentTable ( forKey: ConfigConstants . experimentTableKeyPayload)
105+ dbManager. deleteExperimentTable ( forKey: ConfigConstants . experimentTableKeyPayload)
105106
106107 if let response {
107108 for experiment in response {
108109 do {
109110 let jsonData = try JSONSerialization . data ( withJSONObject: experiment)
110111 experimentPayloads. append ( jsonData)
111- dbManager?
112+ dbManager
112113 . insertExperimentTable (
113114 withKey: ConfigConstants . experimentTableKeyPayload,
114115 value: jsonData
@@ -160,7 +161,7 @@ import Foundation
160161 withJSONObject: experimentMetadata,
161162 options: . prettyPrinted
162163 ) {
163- dbManager?
164+ dbManager
164165 . insertExperimentTable (
165166 withKey: ConfigConstants . experimentTableKeyMetadata,
166167 value: serializedExperimentMetadata
@@ -171,10 +172,10 @@ import Foundation
171172 @objc private func updateActiveExperimentsInDB( ) {
172173 // Put current fetched experiment payloads into activated experiment DB.
173174 activeExperimentPayloads. removeAll ( )
174- dbManager? . deleteExperimentTable ( forKey: ConfigConstants . experimentTableKeyActivePayload)
175+ dbManager. deleteExperimentTable ( forKey: ConfigConstants . experimentTableKeyActivePayload)
175176 for data in experimentPayloads {
176177 activeExperimentPayloads. append ( data)
177- dbManager?
178+ dbManager
178179 . insertExperimentTable (
179180 withKey: ConfigConstants . experimentTableKeyActivePayload,
180181 value: data
0 commit comments