public async Task DeparturesNowReturnsServicesWithStops(bool includeStops, Type expected) { var data = CreateStubDataWithFindDepartures(); var controller = new DeparturesController(data, FilterFactory, _config.CreateMapper(), Substitute.For <ILogger>()); var response = await controller.Departures("SUR", includeStops : includeStops) as ObjectResult; Assert.IsType(expected, response.Value); }
public async Task DeparturesControllerGetPassesRequestToService() { var request = new StationBoardRequest(); var service = A.Fake <IStationBoardService>(); var controller = new DeparturesController(A.Fake <ILogger <DeparturesController> >(), service); await controller.Get(request); A.CallTo(() => service.GetDepartureBoardAsync(request)).MustHaveHappenedOnceExactly(); }
public void TestGetAdd() { // Arrange var controller = new DeparturesController(new DepartureLogic(new DepartureRepositoryStub()), new RouteLogic(new RouteRepositoryStub())); var RouteID = 1; // ACt var result = (ViewResult)controller.Add(RouteID); // Assert Assert.AreEqual("", result.ViewName); }
public void TestPostDeleteDepartureNotExsist() { // Arrange var controller = new DeparturesController(new DepartureLogic(new DepartureRepositoryStub()), new RouteLogic(new RouteRepositoryStub())); var RouteID = 1; var DepartureID = 100; // ACt var result = controller.Delete(RouteID, DepartureID) as HttpNotFoundResult; // Assert Assert.AreEqual(404, result.StatusCode); }
public async Task DeparturesNowSetsReturnedCancelledFlag() { var returnedStop = TestSchedules.CreateResolvedDepartureStop(isCancelled: true); var data = CreateStubDataWithFindDepartures(returnedStops: new [] { returnedStop }); var controller = new DeparturesController(data, FilterFactory, _config.CreateMapper(), Substitute.For <ILogger>()); var response = await controller.Departures("SUR", returnCancelledServices : true) as ObjectResult; Assert.Equal(200, response.StatusCode); var services = response.Value as Model.FoundSummaryResponse; Assert.Single(services.Services); Assert.True(services.Services[0].Service.IsCancelled); }
public async Task DeparturesControllerGetReturnsResponseFromService() { var request = new StationBoardRequest(); var response = new BaseStationBoard(); var service = A.Fake <IStationBoardService>(); A.CallTo(() => service.GetDepartureBoardAsync(request)).Returns(response); var controller = new DeparturesController(A.Fake <ILogger <DeparturesController> >(), service); var board = await controller.Get(request); Assert.Equal(response, board); }
public async Task DepartureReturnsNotFoundWithReason(FindStatus status, string expectedReason) { var data = CreateStubDataWithFindDepartures(returnedStatus: status, returnedStops: new ResolvedServiceStop[0]); var controller = new DeparturesController(data, FilterFactory, _config.CreateMapper(), Substitute.For <ILogger>()); var response = await controller.Departures("SUR", Aug12AtTen) as ObjectResult; Assert.Equal(404, response.StatusCode); var notFound = response.Value as Model.NotFoundResponse; Assert.Equal(expectedReason, notFound.Reason); AssertRequestSetInResponse(notFound); }
public async Task DeparturesReturnsServices(string surbiton) { var data = CreateStubDataWithFindDepartures("SUR", Aug12AtTen); var controller = new DeparturesController(data, FilterFactory, _config.CreateMapper(), Substitute.For <ILogger>()); var response = await controller.Departures(surbiton, Aug12AtTen) as ObjectResult;; Assert.Equal(200, response.StatusCode); var services = response.Value as Model.FoundSummaryResponse; AssertRequestSetInResponse(services); Assert.NotEmpty(services.Services); }
public async Task AllRailDayDeparturesReturnsServices() { var data = CreateStubDataWithAllDepartures("SUR", Aug12, boundary: Time.StartRailDay); var controller = new DeparturesController(data, FilterFactory, _config.CreateMapper(), Substitute.For <ILogger>()); var response = await controller.Departures("SUR", Aug12, fullDay : true, dayBoundary : "02:30") as ObjectResult;; Assert.Equal(200, response.StatusCode); var services = response.Value as Model.FoundSummaryResponse; AssertRequestSetInResponse(services); Assert.NotEmpty(services.Services); }
public void TestPostEditValidationError() { // Arrange var controller = new DeparturesController(new DepartureLogic(new DepartureRepositoryStub()), new RouteLogic(new RouteRepositoryStub())); controller.ViewData.ModelState.AddModelError("DepartureName", "Departure name should string!"); var OneDeparture = new Departure(); var RouteID = 1; // ACt var result = (ViewResult)controller.Edit(RouteID, OneDeparture); // Assert Assert.AreEqual("", result.ViewName); }
public void TestPostDeleteConfirmed() { // Arrange var controller = new DeparturesController(new DepartureLogic(new DepartureRepositoryStub()), new RouteLogic(new RouteRepositoryStub())); var DepartureID = 1; var RouteID = 1; // ACt var result = (RedirectToRouteResult)controller.DeleteConfirmed(RouteID, DepartureID); // Assert Assert.AreEqual("", result.RouteName); Assert.AreEqual("Index", result.RouteValues.Values.First()); }
public async Task DeparturesNowSetsTocFilter() { var data = CreateStubDataWithFindDepartures(); var filter = Substitute.For <GatherConfiguration.GatherFilter>(); var filterFactory = Substitute.For <IFilterFactory>(); filterFactory.NoFilter.Returns(GatherFilterFactory.NoFilter); filterFactory.ProvidedByToc(Arg.Any <TocFilter>(), GatherFilterFactory.NoFilter).Returns(filter); var controller = new DeparturesController(data, filterFactory, _config.CreateMapper(), Substitute.For <ILogger>()); var response = await controller.Departures("SUR", toc : new [] { "VT" }) as ObjectResult; filterFactory.Received().ProvidedByToc(Arg.Any <TocFilter>(), GatherFilterFactory.NoFilter); }
public void TestGetEdit() { // Arrange var controller = new DeparturesController(new DepartureLogic(new DepartureRepositoryStub()), new RouteLogic(new RouteRepositoryStub())); var RouteID = 1; var OneDeparture = new Departure { DepartureID = 2, RouteID = 1, StationID = 1, DepartureTime = new DateTime(2019, 11, 20, 15, 30, 0) }; // ACt var result = (ViewResult)controller.Edit(RouteID, OneDeparture.DepartureID); // Assert Assert.AreEqual("", result.ViewName); }
public void TestPostEdit() { // Arrange var controller = new DeparturesController(new DepartureLogic(new DepartureRepositoryStub()), new RouteLogic(new RouteRepositoryStub())); var OneDeparture = new Departure { DepartureID = 3, RouteID = 2, StationID = 1, DepartureTime = new DateTime(2019, 12, 01, 10, 30, 0) }; var RouteID = 2; // ACt var result = (RedirectToRouteResult)controller.Edit(RouteID, OneDeparture); // Assert Assert.AreEqual("", result.RouteName); Assert.AreEqual("Index", result.RouteValues.Values.First()); }
public void TestPostAddDBError() { // Arrange var controller = new DeparturesController(new DepartureLogic(new DepartureRepositoryStub()), new RouteLogic(new RouteRepositoryStub())); var NewDeparture = new Departure { DepartureID = 0, DepartureTime = new DateTime() }; var RouteID = 2; // ACt var result = (ViewResult)controller.Add(RouteID, NewDeparture); // Assert Assert.AreEqual("", result.ViewName); }
public void TestPostEditDBError() { // Arrange var controller = new DeparturesController(new DepartureLogic(new DepartureRepositoryStub()), new RouteLogic(new RouteRepositoryStub())); var OneDeparture = new Departure { DepartureID = 0, DepartureTime = new DateTime(2019, 12, 01, 10, 30, 0) }; var RouteID = 2; // ACt var result = (ViewResult)controller.Edit(RouteID, OneDeparture); // Assert Assert.AreEqual("", result.ViewName); }
public void TestPostAddValidationError() { // Arrange var controller = new DeparturesController(new DepartureLogic(new DepartureRepositoryStub()), new RouteLogic(new RouteRepositoryStub())); controller.ViewData.ModelState.AddModelError("DepartureID", "Departure ID should be provided!"); var NewDeparture = new Departure(); var RouteID = 2; // ACt var result = (ViewResult)controller.Add(RouteID, NewDeparture); // Assert Assert.AreEqual("", result.ViewName); }
public async Task DeparturesReturns400WithInvalidTocs() { var data = CreateStubDataWithFindDepartures(); var filter = Substitute.For <GatherConfiguration.GatherFilter>(); var filterFactory = Substitute.For <IFilterFactory>(); filterFactory.NoFilter.Returns(GatherFilterFactory.NoFilter); filterFactory.ProvidedByToc(Arg.Any <TocFilter>(), GatherFilterFactory.NoFilter).Returns(filter); var controller = new DeparturesController(data, filterFactory, _config.CreateMapper(), Substitute.For <ILogger>()); var response = await controller.Departures("SUR", Aug12AtTen, toc : new [] { "VT", "SWR" }) as ObjectResult; Assert.Equal(400, response.StatusCode); var error = response.Value as BadRequestResponse; Assert.Equal("Invalid tocs provided in request VT|SWR", error.Reason); }
public async Task DeparturesReturnsError() { var data = Substitute.For <ILocationData>(); data.FindDepartures(Arg.Any <string>(), Arg.Any <DateTime>(), Arg.Any <GatherConfiguration>()) .Throws(new Exception("Something went wrong")); var controller = new DeparturesController(data, FilterFactory, _config.CreateMapper(), Substitute.For <ILogger>()); var response = await controller.Departures("SUR", Aug12AtTen) as ObjectResult; Assert.Equal(500, response.StatusCode); var notFound = response.Value as Model.NotFoundResponse; Assert.Equal("Error while finding services for SUR@2019-08-12T10:00:00", notFound.Reason); AssertRequestSetInResponse(notFound); }
public void TestGetDetails() { // Arrange var controller = new DeparturesController(new DepartureLogic(new DepartureRepositoryStub()), new RouteLogic(new RouteRepositoryStub())); var OneDeparture = new Departure { DepartureID = 3, RouteID = 2, StationID = 1, DepartureTime = new DateTime(2019, 10, 20, 21, 30, 0) }; var RouteID = 2; var DepartureID = 3; // ACt var result = (ViewResult)controller.Details(RouteID, DepartureID); var resultDeparture = (Departure)result.Model; // Assert Assert.AreEqual("", result.ViewName); Assert.AreEqual(OneDeparture.DepartureID, resultDeparture.DepartureID); Assert.AreEqual(OneDeparture.StationID, resultDeparture.StationID); Assert.AreEqual(OneDeparture.DepartureTime, resultDeparture.DepartureTime); }
public void TestGetIndex() { // Arrange var controller = new DeparturesController(new DepartureLogic(new DepartureRepositoryStub()), new RouteLogic(new RouteRepositoryStub())); var DepartureListRoute1 = new List <Departure> { new Departure { DepartureID = 1, RouteID = 1, StationID = 1, DepartureTime = new DateTime(2019, 10, 20, 11, 30, 0) }, new Departure { DepartureID = 2, RouteID = 1, StationID = 1, DepartureTime = new DateTime(2019, 10, 20, 14, 00, 0) }, new Departure { DepartureID = 5, RouteID = 1, StationID = 2, DepartureTime = new DateTime(2019, 10, 20, 11, 35, 0) }, new Departure { DepartureID = 6, RouteID = 1, StationID = 2, DepartureTime = new DateTime(2019, 10, 20, 14, 05, 0) }, new Departure { DepartureID = 7, RouteID = 1, StationID = 3, DepartureTime = new DateTime(2019, 10, 20, 11, 45, 0) }, new Departure { DepartureID = 8, RouteID = 1, StationID = 3, DepartureTime = new DateTime(2019, 10, 20, 14, 15, 0) }, }; // ACt var result = (ViewResult)controller.Index(1); var resultList = (List <Departure>)result.Model; // Assert Assert.AreEqual("", result.ViewName); for (int i = 0; i < resultList.Count(); i++) { Assert.AreEqual(DepartureListRoute1[i].DepartureID, resultList[i].DepartureID); Assert.AreEqual(DepartureListRoute1[i].RouteID, resultList[i].RouteID); Assert.AreEqual(DepartureListRoute1[i].StationID, resultList[i].StationID); Assert.AreEqual(DepartureListRoute1[i].DepartureTime, resultList[i].DepartureTime); } }
public async Task SetsToFilter(string location, bool hasFilter) { var data = CreateStubDataWithFindDepartures(); data.TryGetStation("WAT", out Arg.Any <Station>()).Returns(true); var filterFactory = Substitute.For <IFilterFactory>(); filterFactory.NoFilter.Returns(GatherFilterFactory.NoFilter); filterFactory.DeparturesGoTo(Arg.Any <Station>()).Returns(GatherFilterFactory.NoFilter); var controller = new DeparturesController(data, filterFactory, _config.CreateMapper(), Substitute.For <ILogger>()); var response = await controller.Departures("SUR", Aug12AtTen, location) as ObjectResult;; if (hasFilter) { filterFactory.Received().DeparturesGoTo(Arg.Any <Station>()); } else { filterFactory.DidNotReceive().DeparturesGoTo(Arg.Any <Station>()); } }