Skip to content

Commit

Permalink
Fixed integration tests
Browse files Browse the repository at this point in the history
  • Loading branch information
NachoSoto committed Aug 24, 2023
1 parent bee0c31 commit 5392d52
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 5 deletions.
6 changes: 3 additions & 3 deletions Sources/Identity/CustomerInfoManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,6 @@ class CustomerInfoManager {

typealias CustomerInfoCompletion = @MainActor @Sendable (Result<CustomerInfo, BackendError>) -> Void

var lastSentCustomerInfo: CustomerInfo? { return self.data.value.lastSentCustomerInfo }

private let offlineEntitlementsManager: OfflineEntitlementsManager
private let operationDispatcher: OperationDispatcher
private let backend: Backend
Expand Down Expand Up @@ -207,7 +205,6 @@ class CustomerInfoManager {
func clearCustomerInfoCache(forAppUserID appUserID: String) {
self.modifyData {
$0.deviceCache.clearCustomerInfoCache(appUserID: appUserID)
$0.lastSentCustomerInfo = nil
}
}

Expand Down Expand Up @@ -251,6 +248,9 @@ class CustomerInfoManager {
}
}

// Visible for tests
var lastSentCustomerInfo: CustomerInfo? { return self.data.value.lastSentCustomerInfo }

private func removeObserver(with identifier: Int) {
self.modifyData {
$0.customerInfoObserversByIdentifier.removeValue(forKey: identifier)
Expand Down
26 changes: 24 additions & 2 deletions Tests/UnitTests/Identity/CustomerInfoManagerTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ class BaseCustomerInfoManagerTests: TestCase {
var mockTransactionPoster: MockTransactionPoster!

var mockCustomerInfo: CustomerInfo!
var mockCustomerInfo2: CustomerInfo!

var customerInfoManager: CustomerInfoManager!

Expand All @@ -37,6 +38,16 @@ class BaseCustomerInfoManagerTests: TestCase {
"original_application_version": NSNull()
] as [String: Any]
])
self.mockCustomerInfo2 = try CustomerInfo(data: [
"request_date": "2020-12-21T02:40:36Z",
"subscriber": [
"original_app_user_id": "another_user",
"first_seen": "2020-06-17T16:05:33Z",
"subscriptions": [:] as [String: Any],
"other_purchases": [:] as [String: Any],
"original_application_version": NSNull()
] as [String: Any]
])

self.mockOfflineEntitlementsManager = MockOfflineEntitlementsManager()
self.mockDeviceCache = MockDeviceCache(sandboxEnvironmentDetector: self.mockSystemInfo)
Expand Down Expand Up @@ -437,21 +448,32 @@ class CustomerInfoManagerTests: BaseCustomerInfoManagerTests {
expect(self.customerInfoManagerLastCustomerInfoChange) == (old: nil, new: info)
}

func testCacheCustomerInfoSendsToDelegateAfterCachingComputedOnDevice() {
let info1 = self.mockCustomerInfo.copy(with: .verifiedOnDevice)
let info2 = self.mockCustomerInfo2.copy(with: .verifiedOnDevice)

self.customerInfoManager.cache(customerInfo: info1, appUserID: info1.originalAppUserId)
self.customerInfoManager.cache(customerInfo: info2, appUserID: info2.originalAppUserId)

expect(self.customerInfoManagerChangesCallCount).toEventually(equal(2))
expect(self.customerInfoManagerLastCustomerInfoChange) == (old: info1, new: info2)
}

func testClearCustomerInfoCacheClearsCorrectly() {
let appUserID = "myUser"
customerInfoManager.clearCustomerInfoCache(forAppUserID: appUserID)
expect(self.mockDeviceCache.invokedClearCustomerInfoCache) == true
expect(self.mockDeviceCache.invokedClearCustomerInfoCacheParameters?.appUserID) == appUserID
}

func testClearCustomerInfoCacheResetsLastSent() {
func testClearCustomerInfoCacheDoesNotResetLastSent() {
let appUserID = "myUser"
customerInfoManager.cache(customerInfo: mockCustomerInfo, appUserID: appUserID)
expect(self.customerInfoManager.lastSentCustomerInfo) == self.mockCustomerInfo

customerInfoManager.clearCustomerInfoCache(forAppUserID: appUserID)

expect(self.customerInfoManager.lastSentCustomerInfo).to(beNil())
expect(self.customerInfoManager.lastSentCustomerInfo) === self.mockCustomerInfo
}

}
Expand Down

0 comments on commit 5392d52

Please sign in to comment.