Skip to content

Instantly share code, notes, and snippets.

class WeatherPresenter : WeatherContract.Presenter {
private var _view: WeakReference<WeatherContract.View>?
private var view: WeatherContract.View?
get() = _view?.get() ?: null
override fun takeView(view: WeatherContract.View) {
this._view = WeakReference(view)
}
override fun dropView() {
navigationController?.popViewController(animated: true)
presenter = WeatherPresenter()
presenter.takeView(view: self)
let weatherView = WeatherViewController()
navigationController?.pushViewController(weatherView, animated: true)
class WeatherViewController: UIViewController, WeatherContractView {
private var presenter: WeatherContractPresenter?
override func viewDidLoad() {
super.viewDidLoad()
presenter = WeatherPresenter()
presenter.takeView(view: self)
}
dealloc {
class WeatherViewController: UIViewController, WeatherContractView {
private var presenter: WeatherContractPresenter?
override func viewDidLoad() {
super.viewDidLoad()
presenter = WeatherPresenterImpl()
presenter.takeView(view: self)
}
dealloc {
class WeatherPresenter : WeatherContract.Presenter {
private var view: WeatherContract.View?
override fun takeView(view: WeatherContract.View) {
this.view = view
}
override fun dropView() {
this.view = null
}
interface WeatherContract {
interface View {
fun showError(errorMessage: String)
fun showSpinner(loading: Boolean)
fun setLocation(location: String)
fun setWeather(temperature: String, conditions: String)
}
interface Presenter {
fun takeView(view: View)
class WeatherPresenterTest {
private lateinit var presenter: WeatherContract.Presenter
@RelaxedMockK private lateinit var view: WeatherContract.View
@MockK private lateinit var locationProvider: LocationProvider
@MockK private lateinit var weatherRepository: WeatherRepository
@BeforeTest