Skip to content

Instantly share code, notes, and snippets.

View TheAdamBorek's full-sized avatar

Adam Borek TheAdamBorek

View GitHub Profile
func test_receiveImage_onButtonClick_version2() {
let testScheduler = TestScheduler(initialClock: 0)
}
func test_receiveImage_onButtonClick() {
var resultImage: UIImage!
subject.image.drive(onNext: { image in
resultImage = image
}).disposed(by: rx_disposeBag)
buttonTap.onNext(())
XCTAssertEqual(resultImage, imageHavingMock.expectedImage)
}
buttonTap.onNext(())
XCTAssertEqual(resultImage, imageHavingMock.expectedImage)
var resultImage: UIImage!
subject.image.drive(onNext: { image in
resultImage = image
}).disposed(by: rx_disposeBag)
let buttonTap = PublishSubject<Void>()
buttonTap.bindTo(subject.chooseImageButtonPressed)
.disposed(by: rx_disposeBag)
func test_receiveImage_onButtonClick() {
}
final class ViewModelTests: XCTestCase {
private var subject: AvatarViewModel!
var imageHavingMock: ImageHavingStub!
override func setUp() {
super.setUp()
rx_disposeBag = DisposeBag()
imageHavingMock = ImageHavingStub()
subject = AvatarViewModel(imageReceiver: imageHavingMock)
}
final class ImageHavingStub: ImageHaving {
var expectedImage = UIImage()
var givenError: Error? = nil
var image: Observable<UIImage> {
if let error = givenError {
return .error(error)
}
return .just(expectedImage)
}
private var selectedOption: Observable<ImageSource> {
return Observable.create { [weak self] observer in
guard let `self` = self else {
observer.onCompleted()
return Disposables.create()
}
let actionSheet = self.prepareActionSheet(with: observer)
self.presenter?.present(actionSheet)
return Disposables.create {
@TheAdamBorek
TheAdamBorek / PostsListViewModel.swift
Last active August 21, 2016 12:42
Inject an generic struct
//
// Created by Adam Borek on 17.06.2016.
//
import Foundation
import RxSwift
import RxCocoa
class PostsListViewModel {
typealias Index = Int