diff --git a/Sources/SuperwallKit/Superwall.swift b/Sources/SuperwallKit/Superwall.swift index 5565306f96..5303c8b73b 100644 --- a/Sources/SuperwallKit/Superwall.swift +++ b/Sources/SuperwallKit/Superwall.swift @@ -376,13 +376,27 @@ public final class Superwall: NSObject, ObservableObject { super.init() } + static func makeDependencyContainer( + apiKey: String, + purchaseController: PurchaseController? = nil, + options: SuperwallOptions? = nil + ) -> DependencyContainer { + let dependencyContainer = DependencyContainer( + purchaseController: purchaseController, + options: options + ) + dependencyContainer.storage.configure(apiKey: apiKey) + return dependencyContainer + } + private convenience init( apiKey: String, purchaseController: PurchaseController? = nil, options: SuperwallOptions? = nil, completion: (() -> Void)? ) { - let dependencyContainer = DependencyContainer( + let dependencyContainer = Self.makeDependencyContainer( + apiKey: apiKey, purchaseController: purchaseController, options: options ) @@ -407,8 +421,6 @@ public final class Superwall: NSObject, ObservableObject { #endif } - dependencyContainer.storage.configure(apiKey: apiKey) - dependencyContainer.storage.recordAppInstall(trackPlacement: track) async let fetchConfig: () = await dependencyContainer.configManager.fetchConfiguration() diff --git a/Tests/SuperwallKitTests/Storage/StorageTests.swift b/Tests/SuperwallKitTests/Storage/StorageTests.swift index 24e7b25135..babd67e8ae 100644 --- a/Tests/SuperwallKitTests/Storage/StorageTests.swift +++ b/Tests/SuperwallKitTests/Storage/StorageTests.swift @@ -10,6 +10,12 @@ import XCTest @testable import SuperwallKit class StorageTests: XCTestCase { + func test_makeDependencyContainer_configuresApiKeySynchronously() { + let dependencyContainer = Superwall.makeDependencyContainer(apiKey: "pk_test_123") + + XCTAssertEqual(dependencyContainer.storage.apiKey, "pk_test_123") + } + func test_overwriteAssignments() { let dependencyContainer = DependencyContainer() let storage = Storage(factory: dependencyContainer) @@ -36,4 +42,3 @@ class StorageTests: XCTestCase { XCTAssertTrue(retrievedAssignments2.isEmpty) } } -