Created
May 22, 2021 04:17
-
-
Save buntylm/9d878d0219dd307667f51bbb71158576 to your computer and use it in GitHub Desktop.
How to write the Unit Test for static functions?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
import AppTrackingTransparency | |
import PlaygroundSupport | |
protocol PrivacyManagerBridge { | |
static func requestTrackingAuthorization(completionHandler completion: @escaping (ATTrackingManager.AuthorizationStatus) -> Void) | |
} | |
extension ATTrackingManager: PrivacyManagerBridge {} | |
protocol AppPrivacyManagerContract { | |
func requestTrackingAuthorization(completionHandler completion: @escaping (ATTrackingManager.AuthorizationStatus) -> Void) | |
} | |
class AppPrivacyManager: AppPrivacyManagerContract { | |
private var trackable: PrivacyManagerBridge.Type! | |
init(trackable: PrivacyManagerBridge.Type = ATTrackingManager.self) { | |
self.trackable = trackable | |
} | |
func requestTrackingAuthorization(completionHandler completion: @escaping (ATTrackingManager.AuthorizationStatus) -> Void) { | |
self.trackable.requestTrackingAuthorization(completionHandler: completion) | |
} | |
} | |
class ATTrackingManagerMock: PrivacyManagerBridge { | |
static func requestTrackingAuthorization(completionHandler completion: @escaping (ATTrackingManager.AuthorizationStatus) -> Void) { | |
// Return whichever flow you want to test. | |
completion(.denied) | |
} | |
} | |
let privacyManager = AppPrivacyManager(trackable: ATTrackingManagerMock.self) | |
privacyManager.requestTrackingAuthorization { result in | |
// result here | |
} | |
PlaygroundPage.current.finishExecution() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment