Skip to content

Instantly share code, notes, and snippets.

View djds23's full-sized avatar

Dean Silfen djds23

View GitHub Profile
/// Any old user class
class User { … }
/// Response enum to notify us about a success or failure
enum Response {
  case success
  case fail(Error)
}
/// Types that implement this protocol 
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)
class FollowerViewModelTest: XCTestCase {
// retain subscriptions while testing
let disposeBag = DisposeBag()
func testFollowersUpdate() {
let testFollower = User()
let mockNetworking = FollowerNetworkingMock(
mockFollowers: [testFollower], 
followResponse: .success
)
final class FollowUserViewModel {
// same properties as above
init(
networkHandler: FollowNetworkHandler, 
scheduler: SchedulerType // inject a scheduler type to the initializer
) {
followSubject
.observeOn(scheduler)
// transformation 
.disposed(by: disposeBag)
//
// FollowUserViewModel.swift
// YourFavoriteInstruments
//
// Created by Dean Silfen on 2/2/19.
// Copyright © 2019 Dean Silfen. All rights reserved.
//
import RxSwift
import RxCocoa
@djds23
djds23 / FollowUserViewModel.pt1.swift
Last active November 15, 2018 15:23
Let Me Check My Scheduler
final class FollowUserViewModel {
// Observer for our view to bind to when our user
  // wants to follow another user.
  let followUserObserver: AnyObserver<User> {
  return followSubject.asObserver()
  }
private let disposeBag = DisposeBag()
  // This subject will listen for users to follow.
  private let followSubject = PublishSubject<User>()
  init(user: User, networkHandler: FollowNetworkHandler) {
//: A UIKit based Playground for presenting user interface
import UIKit
import PlaygroundSupport
protocol GreetService {
func greeting() -> String
}
class Greeter: GreetService{
//: A UIKit based Playground for presenting user interface
import UIKit
import PlaygroundSupport
protocol GreetService {
func greeting() -> String
}
class Greeter: GreetService{
@djds23
djds23 / compressMap-example.swift
Last active May 1, 2018 23:24
example how to use flatMap/compressMap with optionals
struct Dog {
let name: String
}
let possibleDogNames: [String?] = [
"barry",
"scooby",
"scrappy",
nil,
nil,
/*
`map` is a method on sequence that will iterate over a sequence
and apply a closure to each element of that sequence. It will then
return the new sequence with the closure applied.
Using `map` simplifies code that needs to transform lists of data
for example, it could be used here to simplify your code.
*/