Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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
                });
            }
        }