static async Task <int> runAsync(string roadName, IConfigurationSettings configuration) { httpClient.BaseAddress = configuration.BaseUri; var httpClientAdapter = new HttpClientAdapter(httpClient); // Construct the api Uri to pass var uri = $"/road/{roadName}?app_id={configuration.AppId}&app_key={configuration.AppKey}"; IResponseInterpreter <RoadCorridor> responseInterpreter = new ResponseInterpreter <RoadCorridor>(r => new CurrentRoadStatus { DisplayName = r.DisplayName, StatusSeverity = r.StatusSeverity, StatusSeverityDescription = r.StatusSeverityDescription }); // Construct the api requestor passing in the httpClient and the class that interprets the response var apiRequestor = new ApiRequestor <RoadCorridor>(httpClientAdapter, responseInterpreter); // Make the request and format the response into the CurrentRoadStatus entity var interpretedResponse = await apiRequestor.GetApiResult(uri); // Deconstruct the response tuple var responseCode = interpretedResponse.Item1; var currentRoadStatus = interpretedResponse.Item2; // Write out the appropriate message FormattedOutputFactory formattedOutputFactory = new FormattedOutputFactory(Console.Out); var formattedOutput = formattedOutputFactory.GenerateFormattedOutput(responseCode); formattedOutput.WriteOutput(roadName, currentRoadStatus); // Return an integer result to return back to the console return((int)responseCode); }
public async Task IntegrationTest_ValidRequest() { const string roadName = "a2"; const string apiPath = "/road/a2"; // arrange var response = HttpRequestMessageHelper.CreateOKResponseWithContent(); var httpClientAdapter = new MockHttpClientAdapter(response); IResponseInterpreter <RoadCorridor> responseInterpreter = new ResponseInterpreter <RoadCorridor>(r => new CurrentRoadStatus { DisplayName = r.DisplayName, StatusSeverity = r.StatusSeverity, StatusSeverityDescription = r.StatusSeverityDescription }); IApiRequestor apiRequestor = new ApiRequestor <RoadCorridor>(httpClientAdapter, responseInterpreter); //act var interpretedResponse = await apiRequestor.GetApiResult(apiPath); // Deconstruct the tuple var responseCode = interpretedResponse.Item1; var currentRoadStatus = interpretedResponse.Item2; var stringBuilder = new StringBuilder(); using (var stringWriter = new StringWriter(stringBuilder)) { FormattedOutputFactory formattedOutputFactory = new FormattedOutputFactory(stringWriter); var formattedOutput = formattedOutputFactory.GenerateFormattedOutput(responseCode); formattedOutput.WriteOutput(roadName, currentRoadStatus); } // assert StringReader stringReader = new StringReader(stringBuilder.ToString()); var line1 = stringReader.ReadLine(); Assert.AreEqual(String.Format(SuccessFormattedOutput.SuccessMessageLine1, currentRoadStatus.DisplayName), line1); var line2 = stringReader.ReadLine(); Assert.AreEqual(String.Format(SuccessFormattedOutput.SuccessMessageLine2, currentRoadStatus.StatusSeverity), line2); var line3 = stringReader.ReadLine(); Assert.AreEqual(String.Format(SuccessFormattedOutput.SuccessMessageLine3, currentRoadStatus.StatusSeverityDescription), line3); }
public void TestSetup() { responseInterpreter = new ResponseInterpreter <TestResponseData>(TestResponseData.ConvertToCurrentRoadStatus); }