public void GetCidadeValida_APIInvalidaComDados() { var cidade = "Sorriso"; _apiExternalWeatherMapsMock.Setup(x => x.GetTempByCity(cidade)) .Throws(new HttpRequestException("Mensagem")); var cityEntity = new Application.Entidades.City.City() { CityName = "Sorriso", Temp = "26.67", coord = new Coord() { lat = "-18.5653", lon = "-46.5373" }, UltimaAtualizacao = DateTime.Now }; var objMappe = new CityViewModelResponse() { Nome = "Sorriso", Temp = "26.67", lat = "-18.5653", lon = "-46.5373", Mensagem = "API indisponível no momento, ultimo dado consultado foi de " + cityEntity.UltimaAtualizacao + "." }; _mapperMock.Setup(x => x.Map <CityViewModelResponse>(cityEntity)) .Returns(objMappe); _cityRepositoryMock.Setup(x => x.GetByCidade("Sorriso")).Returns(cityEntity); var result = _cityService.GetTempCidade(cidade); _cityRepositoryMock.Verify(x => x.GetByCidade(cidade), Times.Once); Assert.Equal(result.Result, objMappe); }
public void GetCidadeValida_Sucesso() { var objCityViewModel = new CityViewModelResponse() { Nome = "Sorriso", Temp = "26.67", lon = "-46.5373", lat = "-18.5653", Mensagem = "Valor buscado pelo API" }; var cidade = "Sorriso"; _apiExternalWeatherMapsMock.Setup(x => x.GetTempByCity(cidade)) .ReturnsAsync(objCityViewModel); _mapperMock.Setup(x => x.Map <Application.Entidades.City.City>(objCityViewModel)) .Returns(new Application.Entidades.City.City { CityName = "Sorriso", Temp = "26.67", coord = new Coord() { lat = "-18.5653", lon = "-46.5373" } }); _cityRepositoryMock.Setup(x => x.Add(new Application.Entidades.City.City() { CityName = "Sorriso", Temp = "26.67", coord = new Coord() { lat = "-18.5653", lon = "-46.5373" } })); _cityRepositoryMock.Setup(x => x.GetByCidade("Sorriso")).Returns(new Application.Entidades.City.City() { CityName = "Sorriso", Temp = "26.67", coord = new Coord() { lat = "-18.5653", lon = "-46.5373" } }); _cityRepositoryMock.Verify(x => x.GetByCidade(cidade), Times.AtMostOnce); _apiExternalWeatherMapsMock.Verify(x => x.GetTempByCity(cidade), Times.AtMostOnce); var result = _cityService.GetTempCidade(cidade); Assert.True(result.Result.Nome == "Sorriso"); Assert.True(result.Result.Temp == "26.67"); }
public async Task <CityViewModelResponse> GetTempCidade(string cidade) { var cityResponse = new CityViewModelResponse(); try { cityResponse = await _apiExternalWeatherMaps.GetTempByCity(cidade); }catch (HttpRequestException) { var cityEntity = _cityRepository.GetByCidade(cidade); if (cityEntity == null) { throw new Exception(MessagerAPI.APIandBDNotDate.ToString()); } cityResponse = _mapper.Map <CityViewModelResponse>(cityEntity); cityResponse.Mensagem = "API indisponível no momento, ultimo dado consultado foi de " + cityEntity.UltimaAtualizacao + "."; return(cityResponse); } try { var obj = _mapper.Map <City>(cityResponse); if (_cityRepository.GetByCidade(obj.CityName) == null) { await Add(obj); } else { var objupdate = _cityRepository.GetByCidade(obj.CityName); objupdate.Temp = obj.Temp; objupdate.coord = obj.coord; objupdate.UltimaAtualizacao = DateTime.Now; await Update(objupdate); } return(cityResponse); } catch (Exception) { return(cityResponse); } }
public async Task <CityViewModelResponse> GetTempByLonLat(string lat, string lon) { var teste = new CityViewModelResponse(); var request = new HttpRequestMessage(HttpMethod.Get, "http://api.openweathermap.org/data/2.5/weather?lat=" + lat + "&lon=" + lon + "&units=metric&appid=142d374d2ea6105f400f36546592a3d4"); var client = _clientFactory.CreateClient(); var response = await client.SendAsync(request); Stream responseStream; JsonSerializerOptions options; if (!response.IsSuccessStatusCode) { responseStream = await response.Content.ReadAsStreamAsync(); options = new JsonSerializerOptions { DictionaryKeyPolicy = JsonNamingPolicy.CamelCase, WriteIndented = true }; var objBadRequest = await JsonSerializer.DeserializeAsync <BadRequestViewModelAPI>(responseStream, options); throw new Exception(objBadRequest.message); } responseStream = await response.Content.ReadAsStreamAsync(); options = new JsonSerializerOptions { DictionaryKeyPolicy = JsonNamingPolicy.CamelCase, WriteIndented = true }; var objApi = await JsonSerializer.DeserializeAsync <CityAPI>(responseStream, options); teste = _mapper.Map <CityViewModelResponse>(objApi); return(teste); }