Example #1
0
        public void Setup()
        {
            _weatherDataProviderMock = new Mock <IWeatherDataProvider>();
            _backupServiceMock       = new Mock <IBackupService>();

            _request = GetCityRequest.Create(_fixture.Create <int>());

            _subject = new WeatherService(_weatherDataProviderMock.Object, _backupServiceMock.Object);
        }
Example #2
0
        public void WhenIdIsZero_ShouldThrowInvalidOperationException()
        {
            // arrange

            // act
            TestDelegate act = () => GetCityRequest.Create(-100);

            // assert
            Assert.Throws <InvalidOperationException>(act);
        }
Example #3
0
        public void WhenCreated_ShouldProvideCorrectId()
        {
            // arrange
            var id = new Fixture().Create <int>();

            // act
            var request = GetCityRequest.Create(id);

            // assert
            Assert.That(request.Id, Is.EqualTo(id));
        }
Example #4
0
        private async Task <City> GetOrPullCityAsync(GetCityRequest request)
        {
            var date = DateTime.Now.ToString("yyyy-MM-dd");
            var id   = $"city_{request.Id}_{date}.json";
            // get cached
            var city = await _backupService.ReadAsync <City>(id);

            if (city != null)
            {
                return(city);
            }

            city = await _weatherDataProvider.GetCityForecastAsync(request.Id);

            // save cache
            await _backupService.SaveAsync(id, city);

            return(city);
        }
        /// <summary>
        /// 获取全部城市信息
        /// </summary>
        /// <param name="request">The request.</param>
        /// <returns>Task&lt;Response&lt;GetCityResponse[]&gt;&gt;.</returns>
        /// <exception cref="NotImplementedException"></exception>
        public async Task <Response <GetCityResponse[]> > GetCityInfo(GetCityRequest request)
        {
            var cityInfo = await(this.strokeContext.Cities.WhereIf(request.IsHot.HasValue, x => x.IsHot == request.IsHot)
                                 .WhereIf(!string.IsNullOrEmpty(request.SearchKey), x => x.Name.Contains(request.SearchKey) || x.FullSpell.Contains(request.SearchKey) || x.SimpleSpell.Contains(request.SearchKey))
                                 .Where(x => x.IsOpen)
                                 .Where(x => x.ParentId != 0)
                                 .OrderBy(x => x.SimpleSpell)
                                 .Select(x => new GetCityResponse
            {
                Id          = x.Id,
                Name        = x.Name,
                IsOpen      = x.IsOpen,
                IsHot       = x.IsHot,
                SimpleSpell = x.SimpleSpell,
                FullSpell   = x.FullSpell
            })).ToArrayAsync();

            return(new Response <GetCityResponse[]>
            {
                Data = cityInfo
            });
        }
Example #6
0
        public async Task <ResponseBase> GetCity([FromBody] GetCityRequest request)
        {
            try
            {
                var areas = await _areaBll.GetCity(request.Province);

                return(ResponseBase.Success(areas.Select(p =>
                                                         new GetAreaView()
                {
                    AreaId = p.AreaId,
                    AreaName = p.AreaName,
                    ParentId = p.ParentId,
                    Level = p.Level
                }
                                                         )));
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message, ex, this.GetType());
                return(ResponseBase.CodeError());
            }
        }
 public Task <Response <GetCityResponse[]> > GetCityInfo([FromBody] GetCityRequest request)
 {
     return(this.strokeService.GetCityInfo(request));
 }
        public async Task <IActionResult> Get(string cities)
        {
            if (string.IsNullOrWhiteSpace(cities))
            {
                return(BadRequest());
            }

            var requests = cities.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(x => GetCityRequest.Create(int.Parse(x)));
            var result   = await _weatherService.GetAsync(requests);

            return(Ok(result));
        }