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));
        }
Exemple #2
0
        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);
        }