Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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());
        }
Ejemplo n.º 12
0
        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);
        }
Ejemplo n.º 13
0
        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);
        }
Ejemplo n.º 14
0
        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());
        }
Ejemplo n.º 15
0
        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);
        }
Ejemplo n.º 16
0
        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);
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        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);
        }
Ejemplo n.º 19
0
        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);
        }
Ejemplo n.º 20
0
        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);
        }
Ejemplo n.º 21
0
        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);
            }
        }
Ejemplo n.º 22
0
        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>());
            }
        }