public void GetDaysWeather_When_Parameter_IsIncorrect_Returns_BadRequest(bool hasValue, string errorMessage) { var request = new ParameterRequest() { City = "maue", State = "SP" }; var httpResponse = new HttpResponseMessage() { StatusCode = HttpStatusCode.OK }; httpResponse.Content = !hasValue ? null : new StringContent("vazio"); _client.GetAsync($"{_host}/locale/city?name={request.City}&state={request.State}&{_token}").Returns(httpResponse); var result = _service.Get15DaysWeather(request); var response = new DaysResponse(); response.Detail = errorMessage; response.StatusCode = HttpStatusCode.BadRequest; result.Should().BeEquivalentTo(response); }
public void GetDaysWeather_When_Parameter_IsNull_OrEmpty_Returns_BadRequest(string city, string state, bool hasInstance) { var request = !hasInstance ? null : new ParameterRequest() { City = city, State = state }; var result = _service.Get15DaysWeather(request); var response = new DaysResponse { Detail = "Parâmetros Inválidos", StatusCode = HttpStatusCode.BadRequest }; result.Should().BeEquivalentTo(response); }
public void GetDaysWeather_When_ThrowsException_Returns_ErrorResponse() { var request = new ParameterRequest() { City = "Mauá", State = "SP" }; _client.GetAsync($"{_host}/locale/city?name={request.City}&state={request.State}&{_token}").Throws(new Exception()); var result = _service.Get15DaysWeather(request); var response = new DaysResponse() { Detail = "Falha de comunicação.", StatusCode = HttpStatusCode.BadGateway }; result.Should().BeEquivalentTo(response); }
public void Get15DaysWeatherById_When_InvalidCity_Returns_BadRequest() { var request = new ParameterRequest() { City = "Mauaaa", State = "SP" }; var errorMessage = new ErrorResponse() { Message = "Cidade invalida, verifique." }; DaysResponse response = null; _service.Get15DaysWeather(request).Returns(response); var controller = new WeatherController(_service); var result = controller.Get15daysWeatherById(request); result.Should().BeEquivalentTo(new BadRequestObjectResult(errorMessage)); }
public DaysResponse Get15DaysWeather(ParameterRequest parameterRequest) { DaysResponse response; if (parameterRequest == null || parameterRequest.State == null || parameterRequest.City == null) { response = new DaysResponse() { Detail = "Parâmetros Inválidos", StatusCode = HttpStatusCode.BadRequest }; return(response); } try { var result = _httpClient.GetAsync($"{_host}/locale/city?name={parameterRequest.City}&state={parameterRequest.State}&{_token}").Result; if (result.Content == null) { return(new DaysResponse() { Detail = "Cidade ou Estado inválidos.", StatusCode = HttpStatusCode.BadRequest }); } var baseModel = result.Content.ReadAsAsync <IEnumerable <BaseListModel> >().Result; if (baseModel == null || !baseModel.Any()) { return(new DaysResponse() { Detail = "Cidade ou Estado inválidos.", StatusCode = HttpStatusCode.BadRequest }); } var cityID = baseModel.First().Id; var request = new HttpRequestMessage(); request.Content = new StringContent($"localeId[]={cityID}"); request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded"); result = _httpClient.PutAsync($"{_hostPut}/{_token}/locales", request.Content)?.Result; if (result.StatusCode != HttpStatusCode.OK) { return(new DaysResponse() { Detail = "Não foi possível executar a operação, verifique os " + "Parametros informados e tente novamente.", StatusCode = HttpStatusCode.BadRequest }); } result = _httpClient.GetAsync($"{_host}/forecast/locale/{cityID}/days/15?{_token}").Result; var finalResult = result.Content.ReadAsAsync <DaysResponse>().Result; finalResult.StatusCode = result.StatusCode; return(finalResult); } catch (UnsupportedMediaTypeException) { return(new DaysResponse() { Detail = "Não foi possível executar a operação, verifique os " + "Parametros informados e tente novamente.", StatusCode = HttpStatusCode.BadRequest }); } catch (Exception) { return(new DaysResponse() { Detail = "Falha de comunicação.", StatusCode = HttpStatusCode.BadGateway }); } }