public async Task RoadData_WhenApiResponseIsSuccessful_ReturnData() { //Arrange _fakeMessageHandler = new Mock <HttpMessageHandler>(MockBehavior.Strict); _fakeMessageHandler.Protected() .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .ReturnsAsync(new HttpResponseMessage() { StatusCode = HttpStatusCode.OK, Content = new StringContent(JsonResponseSuccessful()), }) .Verifiable(); _httpClient = new HttpClient(_fakeMessageHandler.Object); _instance = new RoadData(_fakeApiConfig.Object, _httpClient); //Act var response = await _instance.GetRoadStatusData("A2"); //Assert Assert.IsNotNull(response); Assert.IsNotNull(response.RoadCorridorList); Assert.AreEqual(1, response.RoadCorridorList.Count); //test response data Assert.AreEqual("A2", response.RoadCorridorList[0].DisplayName); Assert.AreEqual("Good", response.RoadCorridorList[0].StatusSeverity); Assert.AreEqual("No Exceptional Delays", response.RoadCorridorList[0].StatusSeverityDescription); }
public void RoadData_WhenApiResponseIsInternalServerError_ThrowAnotherException() { //Arrange _fakeMessageHandler = new Mock <HttpMessageHandler>(MockBehavior.Strict); _fakeMessageHandler.Protected() .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .ReturnsAsync(new HttpResponseMessage() { StatusCode = HttpStatusCode.InternalServerError, Content = new StringContent("Error") }) .Verifiable(); _httpClient = new HttpClient(_fakeMessageHandler.Object); _instance = new RoadData(_fakeApiConfig.Object, _httpClient); //Act - Assert Assert.ThrowsAsync <Exception>(() => _instance.GetRoadStatusData("XYZ")); }
public async Task RoadData_WhenApiResponseIsNotFound_ThrowException() { //Arrange _fakeMessageHandler = new Mock <HttpMessageHandler>(MockBehavior.Strict); _fakeMessageHandler.Protected() .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>()) .ReturnsAsync(new HttpResponseMessage() { StatusCode = HttpStatusCode.NotFound, Content = new StringContent(JsonResponseFailure()), }) .Verifiable(); _httpClient = new HttpClient(_fakeMessageHandler.Object); try { _instance = new RoadData(_fakeApiConfig.Object, _httpClient); //Act var response = await _instance.GetRoadStatusData("A233"); Assert.Fail("Failed Api Response did not throw an exception."); } catch (TfLApiException ex) { //Assert Assert.IsNotNull(ex); Assert.IsNotNull(ex.ExceptionDetails); Assert.AreEqual(404, ex.ExceptionDetails.HttpStatusCode); Assert.AreEqual("NotFound", ex.ExceptionDetails.HttpStatus); } catch (Exception) { Assert.Fail("Wrong exception returned."); } }
public RoadService(IMapping mappingDetails, IRoadData roadData) { _mapping = mappingDetails; _roadData = roadData; }