Created
February 1, 2019 03:34
-
-
Save nil-biribiri/5b942ebef32a0ece5b564b4b15eabd33 to your computer and use it in GitHub Desktop.
UI setup class for test in Swift 4.0
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 XCTest | |
import UIKit | |
class TopLevelUIUtilities<T: UIViewController> { | |
private var rootWindow: UIWindow! | |
func setupTopLevelUI(withViewController viewController: T, withNavigationController navController: Bool = false) -> T { | |
rootWindow = UIWindow(frame: UIScreen.main.bounds) | |
rootWindow.isHidden = false | |
if navController { | |
rootWindow.rootViewController = UINavigationController(rootViewController: viewController).topViewController as! T | |
} else { | |
rootWindow.rootViewController = viewController | |
} | |
return rootWindow.rootViewController as! T | |
} | |
func loadTopLevelUI(withViewController viewController: T) { | |
_ = viewController.view | |
viewController.viewWillAppear(false) | |
viewController.viewDidAppear(false) | |
} | |
func tearDownTopLevelUI() { | |
guard let rootWindow = rootWindow, | |
let rootViewController = rootWindow.rootViewController as? T else { | |
XCTFail("tearDownTopLevelUI() was called without setupTopLevelUI() being called first") | |
return | |
} | |
rootViewController.viewWillDisappear(false) | |
rootViewController.viewDidDisappear(false) | |
rootWindow.rootViewController = nil | |
rootWindow.isHidden = true | |
self.rootWindow = nil | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment