public ReportServiceTest() { // general arrangement _db = new TestContext().GetContext("ReportTest"); restService = new Mock <IRestService>(); cityService = new Mock <ICityService>(); var Response = new What3WordsResponse { words = "Three.Word.Address", nearestPlace = "SomeOtherPlace" }; var Cities = new List <City> { new City { CityID = 1, Name = "City" }, new City { CityID = 2, Name = "Alternative City" } }; restService.Setup(m => m.GetWhat3WordsAsync(It.IsAny <Double>(), It.IsAny <Double>())).Returns(Task.FromResult(Response)); cityService.Setup(m => m.GetCities()).Returns(Cities); cityService.Setup(m => m.GetOutsideCity()).Returns(new City { CityID = 3, Name = "NonCity" }); _svc = new ReportService(restService.Object, cityService.Object, _db); // ensure database is empty before each test _db.Initialise(); }// Constructor
// The API call using System.net public async Task <What3WordsResponse> GetWhat3WordsAsync(double lat, double lng) { if ((lat > 90 || lat < -90) || (lng > 90 || lng < -90)) { throw new Exception("Outside API lat/lng bounds of -90 to 90."); } What3WordsResponse W3Wresponse = null; HttpResponseMessage response = await client.GetAsync( this.baseQuery + "&coordinates=" + lat.ToString("00.000000") + "," + lng.ToString("00.000000") ); if (response.IsSuccessStatusCode) { W3Wresponse = await response.Content.ReadAsAsync <What3WordsResponse>(); } else { throw new Exception(response.ReasonPhrase); } return(W3Wresponse); }