Skip to content

Instantly share code, notes, and snippets.

@laiso
Created February 6, 2017 09:27
Show Gist options
  • Save laiso/faea773bd9f99f99b8dae137b1679931 to your computer and use it in GitHub Desktop.
Save laiso/faea773bd9f99f99b8dae137b1679931 to your computer and use it in GitHub Desktop.
ログイン成否のテスト書けそうな気がしてきた気がする #CodePiece
import Quick
import Nimble
import RxTest
import RxBlocking
import RxSwift
import RxCocoa
import Result
@testable import customer
class SigninViewModelSpec: QuickSpec {
override func spec() {
var viewModel: SigninViewModel!
context("unauthrorized") {
struct MockAuthorization: AuthorizationProtocol {
func getAccessToken(email: String, password: String) -> Observable<Result<AccessToken, RxCocoaURLError>> {
return .just(.failure(.unknown))
}
func saveAccessToken(token: AccessToken) -> Observable<Bool> { return .just(true) }
}
beforeEach {
viewModel = SigninViewModel((email: .just(""),
password: .just(""),
submitTap: .just()),
auth: MockAuthorization())
}
it("should not be logged") {
let loggedIn = try! viewModel.loggedIn.toBlocking(timeout: 3).last()
expect(loggedIn).to(beFalse())
}
}
context("authorization success") {
struct MockAuthorization: AuthorizationProtocol {
func getAccessToken(email: String, password: String) -> Observable<Result<AccessToken, RxCocoaURLError>> {
let token = AccessToken(value: "IM_DUMMY_TOKEN")
return .just(Result<AccessToken, RxCocoaURLError>.success(token))
}
func saveAccessToken(token: AccessToken) -> Observable<Bool> { return .just(true) }
}
beforeEach {
viewModel = SigninViewModel((email: Observable.just(""),
password: Observable.just(""),
submitTap: Observable.just()),
auth: MockAuthorization())
}
it("should be logged") {
let loggedIn = try! viewModel.loggedIn.toBlocking(timeout: 3).last()
expect(loggedIn).to(beTrue())
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment