Skip to content

Instantly share code, notes, and snippets.

@pietrocaselani
Created June 3, 2018 18:44
Show Gist options
  • Save pietrocaselani/64850413e6b9e95f125934ad54b06b12 to your computer and use it in GitHub Desktop.
Save pietrocaselani/64850413e6b9e95f125934ad54b06b12 to your computer and use it in GitHub Desktop.
Testes unitários no iOS sem medo de ser feliz
import RxSwift
public final class MoviesDefaultViewModel: MoviesViewModel {
private let viewStateSubject = BehaviorSubject<MovieViewState>(value: .loading)
private let disposeBag = DisposeBag()
private let repository: MoviesRepository
public init(repository: MoviesRepository) {
self.repository = repository
}
public func viewDidLoad() {
repository.fetchMovies()
.map { titles -> MovieViewState in
return titles.isEmpty ? MovieViewState.empty : MovieViewState.showingMovies(titles: titles)
}.catchError { error -> Observable<MovieViewState> in
return Observable.just(MovieViewState.error(error: error))
}.subscribe(onNext: { [weak self] viewState in
self?.viewStateSubject.onNext(viewState)
}).disposed(by: disposeBag)
}
public func observeViewState() -> Observable<MovieViewState> {
return viewStateSubject.distinctUntilChanged()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment