Skip to content

Instantly share code, notes, and snippets.

@djds23
Created November 15, 2018 15:00
Show Gist options
  • Select an option

  • Save djds23/cb087e5f86cfa27c8ccf74d941a69b7d to your computer and use it in GitHub Desktop.

Select an option

Save djds23/cb087e5f86cfa27c8ccf74d941a69b7d to your computer and use it in GitHub Desktop.
class FollowerViewModelTest: XCTestCase {
let disposeBag = DisposeBag()
func testFollowersUpdate() {
let testFollower = User()
let mockNetworking = FollowerNetworkingMock(mockFollowers: [testFollower])
// Create a scheduler that starts at 0
let scheduler = TestScheduler(initialClock: 0)
let viewModel = FollowUserViewModel(networkHandler: mockNetworking, scheduler: scheduler)
let testCountObserver = scheduler.createTestObserver(Int.self)
let testLatestFollowObserver = scheduler.createTestObserver(User.self)
// Bind just like we did with our subject
viewModel
.followCount
.bind(to: testCountObserver)
.dispose(by: disposeBag)
viewModel
.latestFollow
.bind(to: testLatestFollowObserver)
.dispose(by: disposeBag)
viewModel.followUserObserver.onNext(testFollower)
scheduler.start()
// ensure we only got 1 event
XCTAssertEqual(testCountObserver.events.count, 1)
// ensure our only event was the Int 1, the number of followers we have
XCTAssertEqual(testCountObserver.events[0].value.element!, 1)
// ensure we only got 1 event
XCTAssertEqual(testLatestFollowObserver.events.count, 1)
// ensure the follower we got was the same follower we put in our mock
XCTAssertEqual(testLatestFollowObserver.events[0].value.element!, testFollower)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment