public IActionResult GetShortestDistanceBetweenTownsById([FromBody] GetShortestDistanceBetweenTownsByIdResponse response) { if (response == null) { return(BadRequest("Route has missing/invalid values")); } if (string.IsNullOrWhiteSpace(response.startTownId) || string.IsNullOrWhiteSpace(response.destinationTownId) || response.routes == null) { return(BadRequest("Invalid or missing arguments")); } try { var townMap = _townService.GenerateTownMapByRoutes(response.routes); response.distance = _routeService.GetShortestDistanceBetweenTownsById(response.startTownId, response.destinationTownId, townMap); } catch (Exception ex) { return(NotFound(ex.Message)); } return(Ok(response)); }
public void GetShortestDistanceBetweenTownsById_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.GetShortestDistanceBetweenTownsById(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <TownMap>())).Throws(new ArgumentException("No such route")); TrainsController trainsController = new TrainsController(townServiceMock.Object, routeServiceMock.Object); var payload = new GetShortestDistanceBetweenTownsByIdResponse { routes = _testRoutes, startTownId = "A", destinationTownId = "A" }; var result = trainsController.GetShortestDistanceBetweenTownsById(payload) as NotFoundObjectResult; Assert.IsInstanceOf <NotFoundObjectResult>(result); Assert.AreEqual("No such route", result.Value); }
public void GetShortestDistanceBetweenTownsById_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.GetShortestDistanceBetweenTownsById(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <TownMap>())).Returns(5); TrainsController trainsController = new TrainsController(townServiceMock.Object, routeServiceMock.Object); var payload = new GetShortestDistanceBetweenTownsByIdResponse { routes = _testRoutes, startTownId = "A", destinationTownId = "A" }; var result = trainsController.GetShortestDistanceBetweenTownsById(payload) as OkObjectResult; Assert.IsInstanceOf <OkObjectResult>(result); Assert.IsInstanceOf <GetShortestDistanceBetweenTownsByIdResponse>(result.Value); Assert.AreEqual(5, (result.Value as GetShortestDistanceBetweenTownsByIdResponse).distance); }