Files
Moya/Tests/MultiTargetSpec.swift

72 lines
2.6 KiB
Swift

import Quick
import Nimble
@testable import Moya
final class MultiTargetSpec: QuickSpec {
override func spec() {
describe("MultiTarget") {
struct StructAPI: TargetType {
let baseURL = URL(string: "http://example.com")!
let path = "/endpoint"
let method = Moya.Method.get
let task = Task.requestParameters(parameters: ["key": "value"], encoding: JSONEncoding.default)
let sampleData = "sample data".data(using: .utf8)!
let validationType: ValidationType = .successCodes
let headers: [String: String]? = ["headerKey": "headerValue"]
}
var target: MultiTarget!
beforeEach {
target = MultiTarget.target(StructAPI())
}
it("uses correct baseURL") {
expect(target.baseURL) == URL(string: "http://example.com")!
}
it("uses correct path") {
expect(target.path) == "/endpoint"
}
it("uses correct parameters") {
if case let .requestParameters(parameters: parameters, encoding: _) = target.task {
expect(parameters["key"] as? String) == "value"
expect(parameters.count) == 1
} else {
fail("expected task type `.requestParameters`, was \(String(describing: target.task))")
}
}
it("uses correct parameter encoding.") {
if case let .requestParameters(parameters: _, encoding: parameterEncoding) = target.task {
expect(parameterEncoding is JSONEncoding) == true
} else {
fail("expected task type `.requestParameters`, was \(String(describing: target.task))")
}
}
it("uses correct method") {
expect(target.method) == Method.get
}
it("uses correct task") {
expect(String(describing: target.task)).to(beginWith("requestParameters")) // Hack to avoid implementing Equatable for Task
}
it("uses correct sample data") {
let expectedData = "sample data".data(using: .utf8)!
expect(target.sampleData).to(equal(expectedData))
}
it("uses correct validation type") {
expect(target.validationType).to(equal(ValidationType.successCodes))
}
it("uses correct headers") {
expect(target.headers) == ["headerKey": "headerValue"]
}
}
}
}