public void GetRouteDistance_NoRoute() { var townServiceMock = new Mock <ITownService>(); townServiceMock.Setup(x => x.GenerateTownMapByRoutes(It.IsAny <List <Route> >())).Returns(_testTowns); var routeServiceMock = new Mock <IRouteService>(); routeServiceMock.Setup(x => x.GetRouteDistance(It.IsAny <string>(), It.IsAny <TownMap>())).Throws(new ArgumentException("No such route")); TrainsController trainsController = new TrainsController(townServiceMock.Object, routeServiceMock.Object); var payload = new GetRouteDistanceResponse { routes = _testRoutes, route = "A-A-A" }; var result = trainsController.GetRouteDistance(payload) as NotFoundObjectResult; Assert.IsInstanceOf <NotFoundObjectResult>(result); Assert.AreEqual("No such route", result.Value); }
public void GetRouteDistance_Success() { var townServiceMock = new Mock <ITownService>(); townServiceMock.Setup(x => x.GenerateTownMapByRoutes(It.IsAny <List <Route> >())).Returns(_testTowns); var routeServiceMock = new Mock <IRouteService>(); routeServiceMock.Setup(x => x.GetRouteDistance(It.IsAny <string>(), It.IsAny <TownMap>())).Returns(5); TrainsController trainsController = new TrainsController(townServiceMock.Object, routeServiceMock.Object); var payload = new GetRouteDistanceResponse { routes = _testRoutes, route = "A-A-A" }; var result = trainsController.GetRouteDistance(payload) as OkObjectResult; Assert.IsInstanceOf <OkObjectResult>(result); Assert.IsInstanceOf <GetRouteDistanceResponse>(result.Value); Assert.AreEqual(5, (result.Value as GetRouteDistanceResponse).distance); }
public IActionResult GetRouteDistance([FromBody] GetRouteDistanceResponse response) { if (response == null) { return(BadRequest("Route has missing/invalid values")); } if (string.IsNullOrWhiteSpace(response.route) || response.routes == null) { return(BadRequest("Route has missing/invalid values")); } try { var townMap = _townService.GenerateTownMapByRoutes(response.routes); response.distance = _routeService.GetRouteDistance(response.route, townMap); } catch (Exception ex) { return(NotFound(ex.Message)); } return(Ok(response)); }