public void GetAsync_WeatherReturnNull_DoesNotThrow() { _timeZoneDL.GetAsync(Arg.Any <GeographyPoint>()).Returns(_timeZoneDO); _elevationDL.GetSingleOrDefaultAsync(Arg.Any <GeographyPoint>()).Returns(_elevationDO); _weatherDL.GetAsync(Arg.Any <string>()).Returns(null as IWeatherDO); Assert.DoesNotThrowAsync(async() => await _zipCodeInfoBL.GetAsync(null)); }
public async Task <IZipCodeInfoBO> GetAsync(string zipCode) { var result = new ZipCodeInfoBO(); try { var weather = await _weatherDL.GetAsync(zipCode); var elevationTask = _elevationDL.GetSingleOrDefaultAsync(weather.Coordinate); var timeZoneTask = _timeZoneDL.GetAsync(weather.Coordinate); await Task.WhenAll(elevationTask, timeZoneTask); var elevation = await elevationTask; var timeZone = await timeZoneTask; result.CityName = weather.Name; result.ElevationInMeters = elevation.ElevationInMeters; result.TemperatureInKelvin = weather.Detail.TemperatureInKelvin; result.TimeZone = timeZone.LongFormName; } catch { result = null; } return(result); }