Пример #1
0
        public async Task <ActionResult <IEnumerable <FoodTruck> > > Get(double longitude, double latitude, int distance)
        {
            if (longitude > 180 || longitude < -180)
            {
                return(BadRequest("longitude invalid"));
            }
            if (latitude > 90 || latitude < -90)
            {
                return(BadRequest("latitude invalid"));
            }
            if (distance <= 0)
            {
                return(BadRequest("distance must be positive"));
            }

            CosmosResult <FoodTruck> result = new CosmosResult <FoodTruck>();

            try
            {
                result = await _repo.GetItemsAsync(t =>
                                                   t.Location.Distance(new Point(longitude, latitude)) < distance);

                _logger.LogInformation($"Get: ItemCount={result.Items.Count}, RequestChage={result.RequestCharge}");
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Get Failed");
                return(new StatusCodeResult(StatusCodes.Status500InternalServerError));
            }
            return(Ok(result.Items));
        }
Пример #2
0
        public async Task Get_Failed()
        {
            //Arrange
            var ex = new Exception("foo");

            items = new CosmosResult <FoodTruck>(123, new List <FoodTruck> {
                new FoodTruck {
                    locationid = "1"
                }, new FoodTruck {
                    locationid = "2"
                }
            });
            repoMock.Setup(m => m.GetItemsAsync(It.IsAny <Expression <Func <FoodTruck, bool> > >()))
            .ThrowsAsync(ex);

            //Act
            var response = (await target.Get(0, 0, 1000)).Result as StatusCodeResult;

            //Assert
            Assert.AreEqual(StatusCodes.Status500InternalServerError, response.StatusCode);
            logMock.Verify(m => m.Log <object>(LogLevel.Error, It.IsAny <EventId>(), It.IsAny <object>(), ex, It.IsAny <Func <object, Exception, string> >()));
        }
Пример #3
0
        public async Task Get_Success()
        {
            //Arrange
            items = new CosmosResult <FoodTruck>(123, new List <FoodTruck> {
                new FoodTruck {
                    locationid = "1"
                }, new FoodTruck {
                    locationid = "2"
                }
            });
            repoMock.Setup(m => m.GetItemsAsync(It.IsAny <Expression <Func <FoodTruck, bool> > >()))
            .ReturnsAsync(items);

            //Act
            var response = (await target.Get(0, 0, 1000)).Result as OkObjectResult;
            var result   = response.Value as IEnumerable <FoodTruck>;

            //Assert
            Assert.AreEqual(StatusCodes.Status200OK, response.StatusCode);
            CollectionAssert.AreEqual(items.Items, result.ToList());
            logMock.Verify(m => m.Log <object>(LogLevel.Information, It.IsAny <EventId>(), It.Is <object>(s => ((FormattedLogValues)s).ToString().Contains(items.RequestCharge.ToString())), It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >()));
        }