51 lines
1.4 KiB
Swift
51 lines
1.4 KiB
Swift
//
|
|
// Testing.swift
|
|
// AutoCatCore
|
|
//
|
|
// Created by Selim Mustafaev on 04.04.2022.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public struct Testing {
|
|
|
|
typealias ApiMockMap = [TestKind: [ApiMethodMockProtocol]]
|
|
|
|
public static let testEmail = "test@gmail.com"
|
|
public static let testPassword = "12345"
|
|
|
|
public enum TestKind: String {
|
|
|
|
case addNumberSuccess
|
|
}
|
|
|
|
public static var isUITesting: Bool {
|
|
ProcessInfo.processInfo.arguments.contains("UI-TESTING")
|
|
}
|
|
|
|
public static var testUrlSession: URLSession? {
|
|
guard let kindStr = ProcessInfo.processInfo.environment["testKind"],
|
|
let kind = TestKind(rawValue: kindStr) else {
|
|
return nil
|
|
}
|
|
|
|
MockURLProtocol.baseUrl = Constants.baseUrl
|
|
MockURLProtocol.apiMethodMocks = apiMockSets[kind] ?? []
|
|
|
|
let sessionConfig = URLSessionConfiguration.default
|
|
sessionConfig.protocolClasses = [MockURLProtocol.self]
|
|
return URLSession(configuration: sessionConfig)
|
|
}
|
|
|
|
private static let apiMockSets: ApiMockMap = {
|
|
var map = ApiMockMap()
|
|
|
|
map[.addNumberSuccess] = [
|
|
LoginMethodMock(login: testEmail, password: testPassword),
|
|
GenericMethodMock(httpMethod: "POST", path: "vehicles/check", responsFileName: "check_success")
|
|
]
|
|
|
|
return map
|
|
}()
|
|
}
|