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)); }
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> >())); }
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> >())); }