Skip to content

Instantly share code, notes, and snippets.

@daneov
Created July 31, 2018 13:54
Show Gist options
  • Save daneov/01b2655fe78a82f084555b2886bdf4c1 to your computer and use it in GitHub Desktop.
Save daneov/01b2655fe78a82f084555b2886bdf4c1 to your computer and use it in GitHub Desktop.
class APIMockClient: APIClientContract, APIClientMethods {
var clientId: String? = "MockClientId"
var clientSecret: String? = "MockClientSecret"
weak var delegate: MockClientDelegate?
func execute<T>(request: T) -> NetworkPromise where T: RequestConvertible {
let mockProvider: MockProvider<T> = delegate?.createProvider() ?? MockProvider<T>(resolver: defaultResolver)
return execute(request: request, mockProvider: mockProvider)
}
func execute<T>(request: T, mockProvider: MockProvider<T>) -> NetworkPromise {
return Networking<T>(mode: .sync, mockProvider: mockProvider).request(request)
}
let defaultResolver: (RequestConvertible) -> Mock? = {
{ _ in
Mock(json: [:])
}
}()
}
protocol MockClientDelegate: class {
func createProvider<T>() -> MockProvider<T>
}
public protocol APIClientMethods {
func execute<T>(request: T) -> NetworkPromise where T: RequestConvertible
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment