Created
October 18, 2017 16:07
-
-
Save vladimirgoncharov/fb2236e20c270f2ce350bf77620da6ef to your computer and use it in GitHub Desktop.
This file contains hidden or 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
/// ---------------- When a presenter is UIViewController | |
class View: UIView { | |
let loadButton = UIButton() | |
let priceLabel = UILabel() | |
} | |
class Presenter : UIViewController { | |
var price: Int? | |
var theView: View { | |
return super.view as! View | |
} | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
loadData { result in | |
updateUIForPrice() | |
} | |
} | |
func didTapLoadButton(button: UIButton) { | |
loadData { result in | |
updateUIForPrice() | |
} | |
} | |
func loadData(completion: ((success: Bool) -> Void)) { | |
// loading data | |
price = loadedPrice | |
completion?(true) | |
} | |
func updateUIForPrice() { | |
self.theView.priceLabel.text = String(self.price!) | |
} | |
} | |
class Presenter: XCTestCase { | |
func testViewDidLoad() { | |
let presenter = Presenter.getFromStryboard() | |
stubRequest() | |
// check after time price | |
} | |
func testDidTapLoadButton() { | |
let presenter = Presenter.getFromStryboard() | |
stubRequest() | |
// check after time price | |
} | |
func testUpdateUIForPrice() { | |
let presenter = Presenter.getFromStryboard() | |
// test set price for priceLabel | |
} | |
func testSuccessfulLoadData() { | |
let presenter = Presenter.getFromStryboard() | |
stubRequest() | |
presenter.loadData { | |
} | |
} | |
func testFailedLoadData() { | |
let presenter = Presenter.getFromStryboard() | |
stubRequest() | |
presenter.loadData { | |
} | |
} | |
} | |
/// ---------------- MVP | |
class View: UIViewController { | |
let loadButton = UIButton() | |
let priceLabel = UILabel() | |
let presenter: Presenter! | |
func set(price: Int) { | |
self.priceLabel.text = String(self.price!) | |
} | |
func didTapLoadButton(button: UIButton) { | |
presenter.didTapLoadButton() | |
} | |
override func viewDidLoad() { | |
super.viewDidLoad() | |
presenter.viewDidLoad() | |
} | |
} | |
class Presenter : NSObject { | |
var price: Int? | |
let view: View! | |
func viewDidLoad() { | |
loadData { result in | |
view.set(price: price!) | |
} | |
} | |
func didTapLoadButton() { | |
loadData { result in | |
view.set(price: price!) | |
} | |
} | |
func loadData(completion: ((success: Bool) -> Void)) { | |
// loading data | |
price = loadedPrice | |
completion?(true) | |
} | |
} | |
class View: XCTestCase { | |
func testSetPrice() { | |
let view = View.getFromStoryboard() | |
// test set price for priceLabel | |
} | |
func testViewDidLoad() { | |
let view = View.getFromStoryboard() | |
stubRequest() | |
// check after time price | |
} | |
func testDidTapLoadButton() { | |
let view = View.getFromStoryboard() | |
stubRequest() | |
// check after time price | |
} | |
} | |
class Presenter: XCTestCase { | |
func testSuccessfulLoadData() { | |
let presenter = Presenter() | |
stubRequest() | |
presenter.loadData { | |
} | |
} | |
func testFailedLoadData() { | |
let presenter = Presenter() | |
stubRequest() | |
presenter.loadData { | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment