/// <summary> /// If the response status indicates fail because of quota exceeded - mark test as inconclusive. /// </summary> public static void NotExceedQuota(PlacesNearByResponse response) { if (response?.Status == Entities.PlacesNearBy.Response.Status.OVER_QUERY_LIMIT) { throw new InconclusiveException(QuotaExceedMessage); } }
public void ReturnsNearbySearchRequest() { var request = new PlacesNearByRequest { ApiKey = ApiKey, Keyword = "pizza", Radius = 10000, Location = new Location(47.611162, -122.337644), //Seattle, Washington, USA }; PlacesNearByResponse result = GoogleMaps.PlacesNearBy.Query(request); AssertInconclusive.NotExceedQuota(result); Assert.AreEqual(Status.OK, result.Status); Assert.IsTrue(result.Results.Count() > 5); }
public void TestNearbySearchType() { var request = new PlacesNearByRequest { ApiKey = ApiKey, Radius = 10000, Location = new Location(40.6782552, -73.8671761), // New York Type = "airport", }; PlacesNearByResponse result = GoogleMaps.PlacesNearBy.Query(request); AssertInconclusive.NotExceedQuota(result); Assert.AreEqual(Status.OK, result.Status); Assert.IsTrue(result.Results.Any()); Assert.IsTrue(result.Results.Any(t => t.Name.Contains("John F. Kennedy"))); }
public void TestNearbySearchPagination() { var request = new PlacesNearByRequest { ApiKey = ApiKey, Keyword = "pizza", Radius = 10000, Location = new Location(47.611162, -122.337644), //Seattle, Washington, USA Sensor = false, }; PlacesNearByResponse result = GoogleMaps.PlacesNearBy.Query(request); if (result.Status == GoogleMapsApi.Entities.PlacesNearBy.Response.Status.OVER_QUERY_LIMIT) { Assert.Inconclusive("Cannot run test since you have exceeded your Google API query limit."); } Assert.AreEqual(GoogleMapsApi.Entities.PlacesNearBy.Response.Status.OK, result.Status); //we should have more than one page of pizza results from the NearBy Search Assert.IsTrue(!String.IsNullOrEmpty(result.NextPage)); //a full page of results is always 20 Assert.IsTrue(result.Results.Count() == 20); var resultFromFirstPage = result.Results.FirstOrDefault(); //hold onto this //get the second page of results. Delay request by 2 seconds //Google API requires a short processing window to develop the second page. See Google API docs for more info on delay. Thread.Sleep(2000); request = new PlacesNearByRequest { ApiKey = ApiKey, Keyword = "pizza", Radius = 10000, Location = new Location(47.611162, -122.337644), //Seattle, Washington, USA Sensor = false, PageToken = result.NextPage }; result = GoogleMaps.PlacesNearBy.Query(request); Assert.AreEqual(GoogleMapsApi.Entities.PlacesNearBy.Response.Status.OK, result.Status); //make sure the second page has some results Assert.IsTrue(result.Results != null && result.Results.Count() > 0); //make sure the result from the first page isn't on the second page to confirm we actually got a second page with new results Assert.IsFalse(result.Results.Any(t => t.Reference == resultFromFirstPage.Reference)); }
public void ReturnsNearbySearchRequest() { var request = new PlacesNearByRequest { ApiKey = ApiKey, Keyword = "pizza", Radius = 10000, Location = new Location(47.611162, -122.337644), //Seattle, Washington, USA }; PlacesNearByResponse result = GoogleMaps.PlacesNearBy.Query(request); if (result.Status == GoogleMapsApi.Entities.PlacesNearBy.Response.Status.OVER_QUERY_LIMIT) { Assert.Inconclusive("Cannot run test since you have exceeded your Google API query limit."); } Assert.AreEqual(GoogleMapsApi.Entities.PlacesNearBy.Response.Status.OK, result.Status); Assert.IsTrue(result.Results.Count() > 5); }
public async Task TestNearbySearchPaginationAsync() { var request = new PlacesNearByRequest { ApiKey = ApiKey, Keyword = "pizza", Radius = 10000, Location = new Location(47.611162, -122.337644), //Seattle, Washington, USA }; PlacesNearByResponse result = await GoogleMaps.PlacesNearBy.QueryAsync(request); AssertInconclusive.NotExceedQuota(result); Assert.AreEqual(Status.OK, result.Status); //we should have more than one page of pizza results from the NearBy Search Assert.IsTrue(!String.IsNullOrEmpty(result.NextPage)); //a full page of results is always 20 Assert.IsTrue(result.Results.Count() == 20); var resultFromFirstPage = result.Results.FirstOrDefault(); //hold onto this //get the second page of results. Delay request by 2 seconds //Google API requires a short processing window to develop the second page. See Google API docs for more info on delay. Thread.Sleep(2000); request = new PlacesNearByRequest { ApiKey = ApiKey, Keyword = "pizza", Radius = 10000, Location = new Location(47.611162, -122.337644), //Seattle, Washington, USA PageToken = result.NextPage }; result = await GoogleMaps.PlacesNearBy.QueryAsync(request); Assert.AreEqual(GoogleMapsApi.Entities.PlacesNearBy.Response.Status.OK, result.Status); //make sure the second page has some results Assert.IsTrue(result.Results != null && result.Results.Any()); //make sure the result from the first page isn't on the second page to confirm we actually got a second page with new results Assert.IsFalse(result.Results.Any(t => resultFromFirstPage != null && t.PlaceId == resultFromFirstPage.PlaceId)); }
public void TestNearbySearchType() { var request = new PlacesNearByRequest { ApiKey = ApiKey, Radius = 10000, Location = new Location(64.6247243, 21.0747553), // Skellefteå, Sweden Type = "airport", }; PlacesNearByResponse result = GoogleMaps.PlacesNearBy.Query(request); if (result.Status == GoogleMapsApi.Entities.PlacesNearBy.Response.Status.OVER_QUERY_LIMIT) { Assert.Inconclusive("Cannot run test since you have exceeded your Google API query limit."); } Assert.AreEqual(GoogleMapsApi.Entities.PlacesNearBy.Response.Status.OK, result.Status); Assert.IsTrue(result.Results.Any()); var correctAirport = result.Results.Where(t => t.Name.Contains("Skellefte")); Assert.IsTrue(correctAirport != null && correctAirport.Any()); }
private async Task <List <PositionModel> > GetNearByPlaces(List <PositionModel> curlist, double lat, double lng, string pageToken = "", int curItemCount = 0, int radius = 500) { //return new List<PositionModel>() //{ // new PositionModel(10.78761, 106.6987), // new PositionModel(10.78739,106.69848), // new PositionModel(10.78698,106.69809), // new PositionModel(10.78646,106.69762), // new PositionModel(10.78646,106.69869), // new PositionModel(10.78551,106.69867), // new PositionModel(10.78487,106.69932), // new PositionModel(10.78454,106.69966), // new PositionModel(10.78454,106.69972), // new PositionModel(10.78506,106.70013), // new PositionModel(10.78509,106.70016), // new PositionModel(10.78528,106.70034), // new PositionModel(10.78544,106.7005), // new PositionModel(10.78581,106.70084), // new PositionModel(10.78604,106.70109), // new PositionModel(10.78644,106.70149), // new PositionModel(10.78644,106.70182), // new PositionModel(10.78654,106.70162), // new PositionModel(10.78659,106.70157), // new PositionModel(10.78784,106.70023) //}; PlacesNearByRequest request = new PlacesNearByRequest(); string appSetting = ConfigurationManager.AppSettings["GoogleApiKey"]; request.ApiKey = appSetting; Location location = new Location(lat, lng); request.Location = location; double?nullable = radius; request.Radius = nullable; string str = pageToken; request.PageToken = str; PlacesNearByResponse placesNearByResponse = await GoogleMaps.PlacesNearBy.QueryAsync(request); PlacesNearByResponse response = placesNearByResponse; List <PositionModel> result = new List <PositionModel>(); int triedNumber = 0; if (response.Status == Status.OK) { foreach (Result result1 in response.Results) { Result item = result1; if (!string.IsNullOrEmpty(item.Vicinity)) { PositionModel pos = new PositionModel() { Lat = item.Geometry.Location.Latitude, Lng = item.Geometry.Location.Longitude, Address = item.Vicinity }; result.Add(pos); curlist.Add(pos); } } if (!string.IsNullOrEmpty(response.NextPage) && curItemCount < 100) { List <PositionModel> positionModelList = await GetNearByPlaces(curlist, lat, lng, response.NextPage, curItemCount); List <PositionModel> nextList = positionModelList; if (nextList == null) { return(null); } result.AddRange(nextList); curlist.AddRange(nextList); } } else { if (response.Status == Status.OVER_QUERY_LIMIT || response.Status == Status.REQUEST_DENIED || response.Status == Status.ZERO_RESULTS) { return(null); } if (triedNumber < 3) { List <PositionModel> positionModelList = await GetNearByPlaces(curlist, lat, lng, pageToken, curItemCount); List <PositionModel> nextList = positionModelList; if (nextList == null) { return(null); } result.AddRange(nextList); curlist.AddRange(nextList); } } return(result); }