public async Task GetTrafficIncidents_MapArea_ValidTrafficIncidents() { IRestRequest request = null; var serviceMock = new Mock <BingTraffic>(); serviceMock.Setup(zc => zc.ExecuteAsync <Response>(It.IsAny <IRestRequest>())) .Callback <IRestRequest>(r => request = r) .CallBase(); var service = serviceMock.Object; var mapArea = new MapArea(37, -105, 45, -94); var parameters = new TrafficIncidentsParameters(mapArea); var response = await service.GetTrafficIncidents(parameters); serviceMock.Verify(zc => zc.ExecuteAsync <Response>(It.IsAny <IRestRequest>()), Times.Once); Assert.That(response, Is.Not.Null); Assert.That(response.ResourceSets.Length, Is.GreaterThan(0)); Assert.That(response.ResourceSets.First().Resources.OfType <TrafficIncident>().Count(), Is.GreaterThan(0)); Assert.That(request, Is.Not.Null); Assert.That(request.Method, Is.EqualTo(Method.GET)); Assert.That(request.Resource, Is.EqualTo("Traffic/Incidents/{MapArea}/")); Assert.That(request.Parameters.Find(x => x.Name == "version"), Is.Not.Null); Assert.That(request.Parameters.Find(x => x.Name == "key"), Is.Not.Null); Assert.That(request.Parameters.Find(x => x.Name == "o"), Is.Not.Null); Assert.That(request.Parameters.Find(x => x.Name == "c"), Is.Not.Null); Assert.That(request.Parameters.Find(x => x.Name == "MapArea"), Is.Not.Null); Assert.That(request.Parameters.Find(x => x.Name == "MapArea").Value, Is.EqualTo(mapArea.ToString())); }
private static void AddQueryParameters(TrafficIncidentsParameters parameters, RestRequest request) { if (parameters.MapArea == null) { throw new ArgumentNullException( "MapArea", "The area to search for traffic incident information is required for Traffic Incidents request."); } request.AddUrlSegment("MapArea", parameters.MapArea.ToString()); if (parameters.IncludeLocationCodes != null) { request.AddQueryParameter("includeLocationCodes", parameters.IncludeLocationCodes.Value.ToString()); } if (parameters.Severity != null) { request.AddQueryParameter("s", parameters.Severity.ToCSVString()); } if (parameters.TrafficIncidentTypes != null) { request.AddQueryParameter("t", parameters.TrafficIncidentTypes.ToCSVString()); } }
public async Task GetTrafficIncidents_NullMapArea_ArgumentNullException() { var serviceMock = new Mock <BingTraffic>(); var service = serviceMock.Object; var parameters = new TrafficIncidentsParameters(null); try { var response = await service.GetTrafficIncidents(parameters); } catch (ArgumentNullException ex) { Assert.Pass(); } Assert.Fail(); }
public Task <Response> GetTrafficIncidents(TrafficIncidentsParameters parameters) { if (parameters == null) { throw new ArgumentNullException( "parameters", "Provide valid parameters for Traffic Incidents request."); } var request = new RestRequest("Traffic/Incidents/{MapArea}/", Method.GET); AddQueryParameters(parameters, request); var response = ExecuteAsync <Response>(request); return(response); }