in source/UberRidesTests/RequestButtonTests.swift [63:111]
func testCorrectSource_whenRideRequestViewRequestingBehavior() {
let testExpectation = expectation(description: "Test RideRequestView source parameter")
let expectationClosure: (URLRequest) -> () = { request in
testExpectation.fulfill()
guard let url = request.url, let components = URLComponents(url: url, resolvingAgainstBaseURL: false), let items = components.queryItems else {
XCTAssert(false)
return
}
XCTAssertTrue(items.count > 0)
var foundUserAgent = false
for item in items {
if (item.name == "user-agent") {
if let value = item.value {
foundUserAgent = true
XCTAssertTrue(value.contains(RideRequestButton.sourceString))
break
}
}
}
XCTAssert(foundUserAgent)
}
let testIdentifier = "testAccessTokenIdentifier"
let testToken = AccessToken(tokenString: "testTokenString")
_ = TokenManager.save(accessToken: testToken, tokenIdentifier: testIdentifier)
defer {
_ = TokenManager.deleteToken(identifier: testIdentifier)
}
let baseViewController = UIViewControllerMock()
let requestBehavior = RideRequestViewRequestingBehavior(presentingViewController: baseViewController)
let button = RideRequestButton(rideParameters: RideParametersBuilder().build(), requestingBehavior: requestBehavior)
let loginManger = LoginManager(accessTokenIdentifier: testIdentifier)
let rideRequestVC = RideRequestViewController(rideParameters: RideParametersBuilder().build(), loginManager: loginManger)
XCTAssertNotNil(rideRequestVC.view)
let webViewMock = WebViewMock(frame: CGRect.zero, configuration: WKWebViewConfiguration(), testClosure: expectationClosure)
rideRequestVC.rideRequestView.webView = webViewMock
requestBehavior.modalRideRequestViewController.rideRequestViewController = rideRequestVC
button.uberButtonTapped(button)
waitForExpectations(timeout: timeout, handler: { error in
XCTAssertNil(error)
XCTAssertFalse(rideRequestVC.rideRequestView.isHidden)
})
}