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