in source/UberRidesTests/RequestLayerTests.swift [198:237]
func test422DistanceExceededError() {
let message = "Distance between two points exceeds 100 miles."
let code = "distance_exceeded"
let fields = ["start_latitude": [message], "end_latitude": [message], "start_longitude": [message], "end_longitude": [message]]
stub(condition: isHost("sandbox-api.uber.com")) { _ in
let json = ["message": message, "code": code, "fields": fields] as [String : Any]
return HTTPStubsResponse(jsonObject: json, statusCode: 422, headers: self.headers)
}
let expectation = self.expectation(description: "422 error response")
let endpoint = Products.getProduct(productID: productID)
guard let request = Request(session: client.session, endpoint: endpoint) else {
XCTFail("Unable to create request")
return
}
request.execute({ response in
XCTAssertEqual(response.statusCode, 422)
XCTAssertNotNil(response.error)
XCTAssertTrue(response.error is UberClientError)
XCTAssertEqual(response.error!.title, message)
XCTAssertEqual(response.error!.code, code)
let fields = response.error!.meta! as! [String: [String]]
XCTAssertEqual(fields.count, 4)
XCTAssertEqual(fields["start_latitude"]![0], message)
XCTAssertEqual(fields["start_longitude"]![0], message)
XCTAssertEqual(fields["end_latitude"]![0], message)
XCTAssertEqual(fields["end_longitude"]![0], message)
expectation.fulfill()
})
waitForExpectations(timeout: timeout, handler: { error in
if let error = error {
print("Error: \(error.localizedDescription)")
}
request.cancelTasks()
})
}