public void CreateNewTConnectRequestIfNeeded_2ndRqstForVehicle_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { List <Step> steps; TConnect mt; Trip trip; SetupUowWithTripAndTConnect(unitOfWork, out trip, out steps, out mt); //Add a TConnectedVehicle row to simulate someone else already creating it,so that //the one we add will grab a reference to this one instead of making one. TConnectedVehicle newTv = new TConnectedVehicle(); newTv.OriginallyScheduledDeparture = steps[2].StartDate; newTv.TConnectStopCode = steps[2].FromStopCode; newTv.ModifiedBy = "test"; newTv.ModifiedDate = DateTime.UtcNow; unitOfWork.Repository <TConnectedVehicle>().Insert(newTv); unitOfWork.Save(); DateTime newEta = steps[0].EndDate.AddMinutes(11);//make sure we're late CreateNewTConnectRequestIfNeeded(unitOfWork, mt, newEta, steps[2]); TConnectRequest treq = unitOfWork.Repository <TConnectRequest>().Query().Get().First(); Assert.AreEqual(5, treq.RequestedHoldMinutes); TConnectedVehicle tveh = unitOfWork.Repository <TConnectedVehicle>().Query().Get().First(); Assert.AreEqual(0, tveh.CurrentAcceptedHoldMinutes, "TConnectedVehicle instance should be created, but still have an accepted time of 0 since no requests have been accepted yet."); } }
public void MonitorTConnect_UpdateExistingTConnect_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { List <Step> steps; TConnect mt; Trip trip; SetupUowWithTripAndTConnect(unitOfWork, out trip, out steps, out mt); DateTime newEta = ((DateTime)mt.StartWindow).AddMinutes(3); //Add a TconnectRequest so the path follows the update path TConnectRequest newRequest = new TConnectRequest(); //newRequest.TConnectedVehicleId = GetOrCreateTConnectedVehicleKey(Uow, outboundStep); newRequest.TConnectId = mt.Id; newRequest.EstimatedTimeArrival = newEta; //Calculate how late we'll be newRequest.RequestedHoldMinutes = 2; newRequest.TConnectStatusId = (int)TConnectStatuses.New;//new request unitOfWork.Repository <TConnectRequest>().Insert(newRequest); unitOfWork.Save(); MonitorTConnect(unitOfWork, mt, newEta); var treq = unitOfWork.Repository <TConnectRequest>().Query().Get(); Assert.AreEqual(1, treq.Count(), "Only one TConnectRequest should be existing."); TConnectRequest request = treq.First(); Assert.AreEqual(3, request.RequestedHoldMinutes, "Existing TConnectRequest should have been updated to 3 minutes"); Assert.AreEqual((int)TConnectStatuses.New, request.TConnectStatusId, "Status should be new"); } }
public void ResolveVehicleLocationProviderType_Cabs_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { Step stepEntity = new Step(); stepEntity.StepNumber = 1; stepEntity.StartDate = DateTime.Parse("1/1/2014 10:02"); stepEntity.EndDate = DateTime.Parse("1/1/2014 10:40"); stepEntity.FromName = "Quartz Street"; stepEntity.FromProviderId = (int)Providers.CABS; stepEntity.FromStopCode = "1001"; stepEntity.ModeId = (int)Modes.Bus; stepEntity.RouteNumber = "039"; stepEntity.Distance = (decimal)12.2; stepEntity.ToName = "Slate Run Road"; stepEntity.ToProviderId = (int)Providers.CABS; stepEntity.ToStopCode = "2002"; unitOfWork.Repository <Step>().Insert(stepEntity); unitOfWork.Save(); TConnect tconn = new TConnect(); tconn.InboundStepId = stepEntity.Id; unitOfWork.Repository <TConnect>().Insert(tconn); unitOfWork.Save(); IVehicleLocation iv = VehicleLocationMonitorWorker.ResolveVehicleLocationProviderType(tconn, unitOfWork, scheduleFakes); Assert.AreEqual(iv.ProviderName, Providers.CABS); } }
public void PostProbeData_MissingInboundVehicle_Fails() { ProbeVehicleData probeData = new ProbeVehicleData(); PositionSnapshot ps = new PositionSnapshot() { Accuracy = 5, Altitude = 123, Heading = 180, Latitude = 44.646581369493, Longitude = -96.6830267664, Satellites = 0, Speed = 14.77999305725097, TimeStamp = 137349837631 }; probeData.Positions.Add(ps); using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork imuow = new UnitOfWork(idtoFakeContext)) { var mockTable = new Mock <IAzureTable <ProbeSnapshotEntry> >(); var cut = new ProbeController(idtoFakeContext, mockTable.Object); SetupControllerForTests(cut); HttpResponseMessage returnMessage = cut.PostProbeData(probeData); Assert.AreEqual(HttpStatusCode.BadRequest, returnMessage.StatusCode); } }
public void SaveTrip_1TConnect_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { Trip tripEntity = TestData.GetTrip(); List <Step> steps = TestData.GetSteps();//trips and steps get added in savetrip service call TConnectOpportunity TConnOpp = TestData.GetTConnectOpportunity(); unitOfWork.Repository <TConnectOpportunity>().Insert(TConnOpp); //TConnectOpportunity TConnOpp2 = new TConnectOpportunity(); //TConnOpp2.Id = 1; //TConnOpp2.ModifiedBy = "Nunit"; //TConnOpp2.ModifiedDate = DateTime.UtcNow; //TConnOpp2.CheckpointProviderId = 1; //TConnOpp2.CheckpointStopCode = "2002"; //TConnOpp2.CheckpointRoute = ""; //TConnOpp2.TConnectProviderId = 1; //TConnOpp2.TConnectStopCode = "8888"; //TConnOpp2.TConnectRoute = "426"; //unitOfWork.Repository<TConnectOpportunity>().Insert(TConnOpp2); unitOfWork.Save(); ITripService tripService = new TripService(5); int id = tripService.SaveTrip(tripEntity, steps, unitOfWork); Assert.AreEqual(1, unitOfWork.Repository <TConnect>().Query().Get().Count()); Assert.AreEqual("Trip Created", unitOfWork.Repository <TripEvent>().Query().Get().First().Message); Assert.AreEqual("T-Connect Created", unitOfWork.Repository <TripEvent>().Query().Get().Last().Message); } }
public void ListVehicles_SameBus_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { //Setup TConnectedVehicle vehicleEnt1 = new TConnectedVehicle(); vehicleEnt1.Id = 1; TConnectRequest reqEnt1 = new TConnectRequest(); reqEnt1.TConnectedVehicleId = vehicleEnt1.Id; reqEnt1.TConnectStatusId = (int)TConnectStatuses.New; unitOfWork.Repository <TConnectedVehicle>().Insert(vehicleEnt1); unitOfWork.Repository <TConnectRequest>().Insert(reqEnt1); unitOfWork.Save(); TConnectRequest reqEnt2 = new TConnectRequest(); reqEnt2.TConnectedVehicleId = vehicleEnt1.Id; reqEnt2.TConnectStatusId = (int)TConnectStatuses.New; unitOfWork.Repository <TConnectRequest>().Insert(reqEnt2); unitOfWork.Save(); TConnectedVehicleController tvCont = new TConnectedVehicleController(unitOfWork); List <TConnVehicleViewModel> vehicles = tvCont.GetVehiclesWithPendingRequests(); Assert.AreEqual(1, vehicles.Count()); Assert.AreEqual(2, vehicles[0].NumberRequests, "This bus should have two requests"); } }
public void SetupNewTConnects_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { Traveler traveler = new Traveler(); traveler.Id = 1; traveler.LastName = "MDT2"; Trip trip = new Trip(); trip.Id = 1; trip.TripStartDate = DateTime.Parse("1/1/2014 10:40"); trip.TravelerId = traveler.Id; trip.Traveler = traveler;//must set object for navigation property or lazy loading wont work for mock. Step stepEntity = new Step(); stepEntity.Id = 1; stepEntity.StepNumber = 1; stepEntity.TripId = trip.Id; stepEntity.StartDate = DateTime.Parse("1/1/2014 10:02"); stepEntity.EndDate = DateTime.Parse("1/1/2014 10:40"); stepEntity.FromName = "Quartz Street"; stepEntity.FromProviderId = (int)Providers.CapTrans; stepEntity.FromStopCode = "1001"; stepEntity.ModeId = (int)Modes.Bus; stepEntity.RouteNumber = "039"; stepEntity.Distance = (decimal)12.2; stepEntity.ToName = "Slate Run Road"; stepEntity.ToProviderId = (int)Providers.CapTrans; stepEntity.ToStopCode = "2002"; stepEntity.Trip = trip;//must set object for navigation property or lazy loading wont work for mock. TConnect tconn = new TConnect(); tconn.Id = 1; tconn.TConnectStatusId = (int)TConnectStatuses.New; tconn.InboundStepId = stepEntity.Id; tconn.InboundStep = stepEntity;//must set object for navigation property or lazy loading wont work for mock. unitOfWork.Repository <Traveler>().Insert(traveler); unitOfWork.Repository <Trip>().Insert(trip); unitOfWork.Repository <Step>().Insert(stepEntity); unitOfWork.Repository <TConnect>().Insert(tconn); unitOfWork.Save(); List <TConnect> newTconnects = unitOfWork.Repository <TConnect>().Query().Include(i => i.InboundStep.Trip.Traveler).Get() .Where(s => s.TConnectStatusId == (int)TConnectStatuses.New).ToList(); TConnectMonitorWorker worker = new TConnectMonitorWorker(null); worker.SetupNewTConnects(unitOfWork); List <TConnect> monitoredTConnects = unitOfWork.Repository <TConnect>().Query().Get() .Where(s => s.TConnectStatusId == (int)TConnectStatuses.Monitored).ToList(); Assert.AreEqual(1, monitoredTConnects.Count); } }
public void BasicRepositoryInsertDeleteAndQueryTest_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { unitOfWork.Repository <Traveler>().Insert(new Traveler { Id = 1, FirstName = "TestFN", LastName = "TestLN", ObjectState = ObjectState.Added }); unitOfWork.Save(); //Test var traveler1 = unitOfWork.Repository <Traveler>().Find(1); Assert.AreEqual("TestFN", traveler1.FirstName); unitOfWork.Repository <Traveler>().Delete(1); unitOfWork.Save(); var traveler2 = unitOfWork.Repository <Traveler>().Find(1); Assert.IsNull(traveler2); } }
public void PostTripAddInvalidTraveler_Fails() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { unitOfWork.Repository <Traveler>().Insert(new Traveler { Id = 1, FirstName = "TestFN", LastName = "TestLN", ObjectState = ObjectState.Added }); unitOfWork.Save(); var controller = new TripController(idtoFakeContext); SetupControllerForTests(controller); TripModel m = new TripModel { TravelerId = 50, Origination = "Neverland", Destination = "Montana", TripStartDate = DateTime.Parse("10/2/2012"), TripEndDate = DateTime.Parse("10/2/2013"), MobilityFlag = true, BicycleFlag = true, PriorityCode = "1" }; List <StepModel> steps = new List <StepModel>(); StepModel stepmodel = new StepModel(); stepmodel.StartDate = DateTime.Parse("1/1/2014 10:02"); stepmodel.EndDate = DateTime.Parse("1/1/2014 10:40"); stepmodel.FromName = "Quartz Street"; stepmodel.FromProviderId = (int)Providers.COTA; stepmodel.FromStopCode = "1001"; stepmodel.ModeId = (int)Modes.Bus; stepmodel.RouteNumber = "039"; stepmodel.Distance = (decimal)12.2; stepmodel.ToName = "Slate Run Road"; stepmodel.ToProviderId = (int)Providers.COTA; stepmodel.ToStopCode = "2002"; steps.Add(stepmodel); m.Steps = steps; try { var actionResult = controller.PostTrip(m); Assert.AreEqual(true, false, "Test should have thrown an exception and not executed this line."); } catch (HttpResponseException ex) { Assert.AreEqual(HttpStatusCode.NotFound, ex.Response.StatusCode); } // var response = actionResult as OkNegotiatedContentResult<IEnumerable<Trip>>; // Assert.IsNotNull(response); // var books = response.Content; //Assert.AreEqual(5, books.Count()); // var response = actionResult as NotFoundResult; // Assert.IsNotNull(response); } }
public void SaveTrip_2TConnect_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { Trip tripEntity = TestData.GetTrip(); tripEntity.TripEndDate = DateTime.Parse("1/1/2014 11:32"); //add fourth leg to trip to test steps loop, get back on the same stop, different bus route. List <Step> steps = TestData.GetSteps(); Step stepEntity4 = new Step(); stepEntity4.StepNumber = steps.Count + 1; stepEntity4.StartDate = DateTime.Parse("1/1/2014 11:02"); stepEntity4.EndDate = DateTime.Parse("1/1/2014 11:32"); stepEntity4.FromName = "Quarry Corner"; stepEntity4.FromProviderId = (int)Providers.COTA; stepEntity4.FromStopCode = "4004"; stepEntity4.ModeId = (int)Modes.Bus; stepEntity4.RouteNumber = "500"; stepEntity4.Distance = (decimal)12.2; stepEntity4.ToName = "Calcite Creek Drive"; stepEntity4.ToProviderId = (int)Providers.COTA; stepEntity4.ToStopCode = "5005"; steps.Add(stepEntity4); TConnectOpportunity TConnOpp = new TConnectOpportunity(); TConnOpp.Id = 1; TConnOpp.ModifiedBy = "Nunit"; TConnOpp.ModifiedDate = DateTime.UtcNow; TConnOpp.CheckpointProviderId = 1; TConnOpp.CheckpointStopCode = "2002"; TConnOpp.CheckpointRoute = ""; TConnOpp.TConnectProviderId = 1; TConnOpp.TConnectStopCode = "3003"; TConnOpp.TConnectRoute = "426"; unitOfWork.Repository <TConnectOpportunity>().Insert(TConnOpp); TConnectOpportunity TConnOpp2 = new TConnectOpportunity(); TConnOpp2.Id = 1; TConnOpp2.ModifiedBy = "Nunit"; TConnOpp2.ModifiedDate = DateTime.UtcNow; TConnOpp2.CheckpointProviderId = 1; TConnOpp2.CheckpointStopCode = "4004"; TConnOpp2.CheckpointRoute = ""; TConnOpp2.TConnectProviderId = 1; TConnOpp2.TConnectStopCode = "4004"; TConnOpp2.TConnectRoute = "500"; unitOfWork.Repository <TConnectOpportunity>().Insert(TConnOpp2); unitOfWork.Save(); ITripService tripService = new TripService(5); int id = tripService.SaveTrip(tripEntity, steps, unitOfWork); Assert.AreEqual(2, unitOfWork.Repository <TConnect>().Query().Get().Count()); } }
public void GetTConnectRequestsTest() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { var requests = unitOfWork.Repository <TConnectRequest>().Query().Get().ToList(); Assert.IsTrue(requests.Count > 0); } }
public void PostProbeData_UpdateVehiclePosition_Success() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork imuow = new UnitOfWork(idtoFakeContext)) { AddTripToRepo(imuow); LastVehiclePosition lvp = new LastVehiclePosition { VehicleName = "MDT2", PositionTimestamp = DateTime.UtcNow, Latitude = 44.646581369493, Longitude = -96.6830267664, Speed = 10, Heading = 180, Accuracy = 5 }; imuow.Repository <LastVehiclePosition>().Insert(lvp); imuow.Save(); DateTime newestPositionTimestamp = DateTime.UtcNow.AddMinutes(1); var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); long newestTimeStamp = Convert.ToInt64((newestPositionTimestamp - epoch).TotalMilliseconds); ProbeVehicleData probeData = new ProbeVehicleData { InboundVehicle = "MDT2" }; PositionSnapshot ps = new PositionSnapshot() { Accuracy = 5, Altitude = 123, Heading = 180, Latitude = 44.646581369493, Longitude = -96.6830267664, Satellites = 0, Speed = 14.77999305725097, TimeStamp = newestTimeStamp }; probeData.Positions.Add(ps); var mockTable = new Mock <IAzureTable <ProbeSnapshotEntry> >(); var cut = new ProbeController(idtoFakeContext, mockTable.Object); SetupControllerForTests(cut); HttpResponseMessage returnMessage = cut.PostProbeData(probeData); List <LastVehiclePosition> lvpList = imuow.Repository <LastVehiclePosition>().Query().Get().Where(v => v.VehicleName == "MDT2").ToList(); Assert.AreEqual(1, lvpList.Count); Assert.AreEqual(newestPositionTimestamp.ToLongTimeString(), lvpList.First().PositionTimestamp.ToLongTimeString()); } }
public void SendStartTripNotification_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { List <Step> steps; Trip trip; SetupUowForNotificationTest(unitOfWork, out trip, out steps); SendTripStartNotifications(unitOfWork); } }
public void PostTripAdd_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { unitOfWork.Repository <Traveler>().Insert(new Traveler { Id = 1, FirstName = "TestFN", LastName = "TestLN", ObjectState = ObjectState.Added }); unitOfWork.Save(); var controller = new TripController(idtoFakeContext); SetupControllerForTests(controller); TripModel m = new TripModel { TravelerId = 1, Origination = "Neverland", Destination = "Montana", TripStartDate = DateTime.Parse("1/2/2014"), TripEndDate = DateTime.Parse("1/3/2014"), MobilityFlag = true, BicycleFlag = true, PriorityCode = "1" }; List <StepModel> steps = new List <StepModel>(); StepModel stepmodel = new StepModel(); stepmodel.StartDate = DateTime.Parse("1/1/2014 10:02"); stepmodel.EndDate = DateTime.Parse("1/1/2014 10:40"); stepmodel.FromName = "Quartz Street"; stepmodel.FromProviderId = (int)Providers.COTA; stepmodel.FromStopCode = "1001"; stepmodel.ModeId = (int)Modes.Bus; stepmodel.RouteNumber = "039"; stepmodel.Distance = (decimal)12.2; stepmodel.ToName = "Slate Run Road"; stepmodel.ToProviderId = (int)Providers.COTA; stepmodel.ToStopCode = "2002"; steps.Add(stepmodel); m.Steps = steps; try { var actionResult = controller.PostTrip(m); var response = actionResult as CreatedAtRouteNegotiatedContentResult <TripModel>; Assert.IsNotNull(response); var trips = response.Content; Assert.AreEqual("Neverland", trips.Origination); } catch (HttpResponseException ex) { Assert.Fail(); } } }
public void GetCoordForOutboundStep_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { Step inbound = new Step(); inbound.Id = inbound.StepNumber = 1; inbound.StartDate = DateTime.Parse("1/1/2014 10:02"); inbound.EndDate = DateTime.Parse("1/1/2014 10:40"); inbound.FromName = "Quartz Street"; inbound.FromProviderId = (int)Providers.CapTrans; inbound.FromStopCode = "1001"; inbound.ModeId = (int)Modes.Bus; inbound.RouteNumber = "039"; inbound.Distance = (decimal)12.2; inbound.ToName = "Broad St Gate"; inbound.ToProviderId = (int)Providers.CapTrans; inbound.ToStopCode = "DCSCBRD1"; Step outbound = new Step(); outbound.Id = outbound.StepNumber = 2; outbound.StartDate = DateTime.Parse("1/1/2014 10:02"); outbound.EndDate = DateTime.Parse("1/1/2014 10:40"); outbound.FromName = "Broad St Gate"; outbound.FromProviderId = (int)Providers.CapTrans; outbound.FromStopCode = "DCSCBRD1"; outbound.ModeId = (int)Modes.Bus; outbound.RouteNumber = "039"; outbound.Distance = (decimal)12.2; outbound.ToName = "Slate Run Road"; outbound.ToProviderId = (int)Providers.CapTrans; outbound.ToStopCode = "DCSCBRD1"; unitOfWork.Repository <Step>().Insert(inbound); unitOfWork.Save(); TConnect tconn = new TConnect(); tconn.InboundStepId = inbound.Id; tconn.OutboundStepId = outbound.Id; tconn.InboundStep = inbound; tconn.OutboundStep = outbound; unitOfWork.Repository <TConnect>().Insert(tconn); unitOfWork.Save(); GeoCoordinate mainGate = new GeoCoordinate { Latitude = 39.975148, Longitude = -82.894379 }; GeoCoordinate coord = GetCoordForInboundStep(tconn, unitOfWork); Assert.AreEqual(coord, mainGate); } }
public void PostTripLoadLikeGSON_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { unitOfWork.Repository <Traveler>().Insert(new Traveler { Id = 1003, FirstName = "TestFN", LastName = "TestLN", ObjectState = ObjectState.Added }); unitOfWork.Save(); var controller = new TripController(idtoFakeContext); SetupControllerForTests(controller); //TripModel m = new TripModel //{ // TravelerId = 1, // Origination = "Neverland", // Destination = "Montana", // TripStartDate = DateTime.Parse("1/2/2014"), // TripEndDate = DateTime.Parse("1/3/2014"), // MobilityFlag = true, // BicycleFlag = true, // PriorityCode = "1" //}; //StepModel // convert string to stream byte[] byteArray = Encoding.UTF8.GetBytes(GSONcontents); //byte[] byteArray = Encoding.ASCII.GetBytes(contents); MemoryStream jsonStream = new MemoryStream(byteArray); DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(TripModel)); // TripModel trip = (TripModel)serializer.ReadObject(jsonStream); TripModel trip = Deserialize <TripModel>(GSONcontents); try { var actionResult = controller.PostTrip(trip); var response = actionResult as CreatedAtRouteNegotiatedContentResult <TripModel>; Assert.IsNotNull(response); var trips = response.Content; Assert.AreEqual("DCSC", trips.Origination); } catch (HttpResponseException ex) { Assert.Fail(); } } }
public void ListVehicles_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { //Setup TConnectedVehicle vehicleEnt1 = new TConnectedVehicle(); vehicleEnt1.Id = 1; TConnect tc = new TConnect { Id = 1, TConnectStatusId = (int)TConnectStatuses.Monitored }; unitOfWork.Repository <TConnect>().Insert(tc); TConnectRequest reqEnt1 = new TConnectRequest(); reqEnt1.TConnectedVehicleId = vehicleEnt1.Id; reqEnt1.TConnectId = tc.Id; reqEnt1.TConnectStatusId = (int)TConnectStatuses.New; unitOfWork.Repository <TConnectedVehicle>().Insert(vehicleEnt1); unitOfWork.Repository <TConnectRequest>().Insert(reqEnt1); unitOfWork.Save(); TConnectedVehicle vehicleEnt2 = new TConnectedVehicle(); vehicleEnt2.Id = 2; TConnect tc2 = new TConnect { Id = 2, TConnectStatusId = (int)TConnectStatuses.Monitored }; unitOfWork.Repository <TConnect>().Insert(tc2); TConnectRequest reqEnt2 = new TConnectRequest(); reqEnt2.TConnectedVehicleId = vehicleEnt2.Id; reqEnt2.TConnectId = tc2.Id; reqEnt2.TConnectStatusId = (int)TConnectStatuses.New; unitOfWork.Repository <TConnectedVehicle>().Insert(vehicleEnt2); unitOfWork.Repository <TConnectRequest>().Insert(reqEnt2); unitOfWork.Save(); var bc = unitOfWork.Repository <TConnect>().Query().Get() .Where(r => r.TConnectStatusId.Equals((int)TConnectStatuses.Monitored)).ToList(); var vehicleidsWithNew = unitOfWork.Repository <TConnectRequest>().Query().Get().Include(r => r.TConnect) .Where(r => r.TConnectStatusId.Equals((int)TConnectStatuses.New) // && r.TConnect.TConnectStatusId.Equals((int)TConnectStatuses.Monitored) ) .Select(r => r.TConnectedVehicleId).Distinct(); int a = vehicleidsWithNew.Count(); //.Include does not work on Fake Repository! TConnectedVehicleController tvCont = new TConnectedVehicleController(unitOfWork); List <TConnVehicleViewModel> vehicles = tvCont.GetVehiclesWithPendingRequests(); Assert.AreEqual(2, vehicles.Count()); } }
public void SetupNewTConnects_NoAction() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { Traveler traveler = new Traveler(); traveler.Id = 1; traveler.LastName = "MDT2"; Trip trip = new Trip(); trip.Id = 1; trip.TripStartDate = DateTime.UtcNow.AddMinutes(20); //make in future trip.TravelerId = traveler.Id; trip.Traveler = traveler; //must set object for navigation property or lazy loading wont work for mock. Step stepEntity = new Step(); stepEntity.Id = 1; stepEntity.StepNumber = 1; stepEntity.TripId = trip.Id; stepEntity.Trip = trip;//must set object for navigation property or lazy loading wont work for mock. TConnect tconn = new TConnect(); tconn.Id = 1; tconn.TConnectStatusId = (int)TConnectStatuses.New; tconn.InboundStepId = stepEntity.Id; tconn.InboundStep = stepEntity;//must set object for navigation property or lazy loading wont work for mock. unitOfWork.Repository <Traveler>().Insert(traveler); unitOfWork.Repository <Trip>().Insert(trip); unitOfWork.Repository <Step>().Insert(stepEntity); unitOfWork.Repository <TConnect>().Insert(tconn); unitOfWork.Save(); List <TConnect> newTconnects = unitOfWork.Repository <TConnect>().Query().Include(i => i.InboundStep.Trip.Traveler).Get() .Where(s => s.TConnectStatusId == (int)TConnectStatuses.New).ToList(); TConnectMonitorWorker worker = new TConnectMonitorWorker(new List <BusScheduleInterface.IBusSchedule>(new StubIBusSchedule[] { new StubIBusSchedule() })); worker.SetupNewTConnects(unitOfWork); List <TConnect> monitoredTConnects = unitOfWork.Repository <TConnect>().Query().Get() .Where(s => s.TConnectStatusId == (int)TConnectStatuses.New).ToList(); Assert.AreEqual(1, monitoredTConnects.Count); } }
public void MonitorTConnect_NoExistingTConnect_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { List <Step> steps; TConnect mt; Trip trip; SetupUowWithTripAndTConnect(unitOfWork, out trip, out steps, out mt); DateTime newEta = steps[0].EndDate; MonitorTConnect(unitOfWork, mt, newEta); var treq = unitOfWork.Repository <TConnectRequest>().Query().Get(); Assert.AreEqual(0, treq.Count(), "No TConnectRequest should be created."); } }
public void TConnect_NoRequest_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { TConnect tc = new TConnect { Id = 1, TConnectStatusId = (int)TConnectStatuses.New }; unitOfWork.Repository <TConnect>().Insert(tc); unitOfWork.Save(); var controller = new TConnectController(idtoFakeContext); int status = (int)controller.DeduceExternalStatusForTConnect(tc); Assert.AreEqual((int)TConnectStatusModel.Status.Monitored, status); } }
public void TConnect_InProgress_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { Trip t = new Trip { Id = 1, TripStartDate = DateTime.UtcNow.AddHours(-1), TripEndDate = DateTime.UtcNow.AddHours(1) }; unitOfWork.Repository <Trip>().Insert(t); unitOfWork.Save(); var controller = new TConnectController(idtoFakeContext); var status = controller.Get(t.Id).First(); Assert.AreEqual((int)TConnectStatusModel.Status.InProgress, status.TConnectStatusId); } }
public void GetCoordForOutboundStep_ThrowsEx() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { Step inbound = new Step(); inbound.Id = inbound.StepNumber = 1; inbound.StartDate = DateTime.Parse("1/1/2014 10:02"); inbound.EndDate = DateTime.Parse("1/1/2014 10:40"); inbound.FromName = "Quartz Street"; inbound.FromProviderId = (int)Providers.CapTrans; inbound.FromStopCode = "1001"; inbound.ModeId = (int)Modes.Bus; inbound.RouteNumber = "039"; inbound.Distance = (decimal)12.2; inbound.ToName = "Slate Run Road"; inbound.ToProviderId = (int)Providers.CapTrans; inbound.ToStopCode = "2002"; Step outbound = new Step(); outbound.Id = outbound.StepNumber = 2; outbound.StartDate = DateTime.Parse("1/1/2014 10:02"); outbound.EndDate = DateTime.Parse("1/1/2014 10:40"); outbound.FromName = "NotMain Gate";//change gate FromName so that it does not match the list. outbound.FromProviderId = (int)Providers.CapTrans; outbound.FromStopCode = "1001"; outbound.ModeId = (int)Modes.Bus; outbound.RouteNumber = "039"; outbound.Distance = (decimal)12.2; outbound.ToName = "Slate Run Road"; outbound.ToProviderId = (int)Providers.CapTrans; outbound.ToStopCode = "2002"; unitOfWork.Repository <Step>().Insert(inbound); unitOfWork.Save(); TConnect tconn = new TConnect(); tconn.InboundStepId = inbound.Id; tconn.OutboundStepId = outbound.Id; tconn.InboundStep = inbound; tconn.OutboundStep = outbound; unitOfWork.Repository <TConnect>().Insert(tconn); unitOfWork.Save(); Assert.Throws <NotImplementedException>(delegate { GetCoordForInboundStep(tconn, unitOfWork); }); } }
public void CreateNewTConnectRequestIfNeeded_AddsRequest_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { List <Step> steps; TConnect mt; Trip trip; SetupUowWithTripAndTConnect(unitOfWork, out trip, out steps, out mt); DateTime newEta = steps[0].EndDate.AddMinutes(11);//make sure we're late CreateNewTConnectRequestIfNeeded(unitOfWork, mt, newEta, steps[2]); TConnectRequest treq = unitOfWork.Repository <TConnectRequest>().Query().Get().First(); Assert.AreEqual(5, treq.RequestedHoldMinutes); TConnectedVehicle tveh = unitOfWork.Repository <TConnectedVehicle>().Query().Get().First(); Assert.AreEqual(0, tveh.CurrentAcceptedHoldMinutes, "TConnectedVehicle instance should be created, but still have an accepted time of 0 since no requests have been accepted yet."); } }
public void CreateNewTConnectRequestIfNeeded_TooLate_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { List <Step> steps; TConnect mt; Trip trip; SetupUowWithTripAndTConnect(unitOfWork, out trip, out steps, out mt); DateTime newEta = steps[0].EndDate.AddMinutes(25);//make sure we're really late CreateNewTConnectRequestIfNeeded(unitOfWork, mt, newEta, steps[2]); var treq = unitOfWork.Repository <TConnectRequest>().Query().Get(); Assert.AreEqual(0, treq.Count(), "No TConnectRequest should be created."); var mtnew = unitOfWork.Repository <TConnect>().Query().Get().First(); Assert.AreEqual((int)TConnectStatuses.Done, mtnew.TConnectStatusId, "Status of a missed connection should be Done."); } }
public void DoneTConnect_AcceptedRequest_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { TConnect tc = new TConnect { Id = 1, TConnectStatusId = (int)TConnectStatuses.Done }; unitOfWork.Repository <TConnect>().Insert(tc); TConnectRequest tr = new TConnectRequest { TConnectId = tc.Id, TConnectStatusId = (int)TConnectStatuses.Accepted }; unitOfWork.Repository <TConnectRequest>().Insert(tr); unitOfWork.Save(); var controller = new TConnectController(idtoFakeContext); int status = (int)controller.DeduceExternalStatusForTConnect(tc); Assert.AreEqual((int)TConnectStatusModel.Status.Accepted, status); } }
public void SaveTrip_0TConnect_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { Trip tripEntity = TestData.GetTrip(); List <Step> steps = TestData.GetSteps(); TConnectOpportunity TConnOpp = new TConnectOpportunity(); TConnOpp.Id = 1; TConnOpp.ModifiedBy = "Nunit"; TConnOpp.ModifiedDate = DateTime.UtcNow; TConnOpp.CheckpointProviderId = 1; TConnOpp.CheckpointStopCode = "5555"; TConnOpp.CheckpointRoute = ""; TConnOpp.TConnectProviderId = 1; TConnOpp.TConnectStopCode = "6666"; TConnOpp.TConnectRoute = "426"; unitOfWork.Repository <TConnectOpportunity>().Insert(TConnOpp); TConnectOpportunity TConnOpp2 = new TConnectOpportunity(); TConnOpp2.Id = 2; TConnOpp2.ModifiedBy = "Nunit"; TConnOpp2.ModifiedDate = DateTime.UtcNow; TConnOpp2.CheckpointProviderId = 1; TConnOpp2.CheckpointStopCode = "7777"; TConnOpp2.CheckpointRoute = ""; TConnOpp2.TConnectProviderId = 1; TConnOpp2.TConnectStopCode = "8888"; TConnOpp2.TConnectRoute = "426"; unitOfWork.Repository <TConnectOpportunity>().Insert(TConnOpp2); unitOfWork.Save(); ITripService tripService = new TripService(5); int id = tripService.SaveTrip(tripEntity, steps, unitOfWork); Assert.AreEqual(0, unitOfWork.Repository <TConnect>().Query().Get().Count()); } }
public void ResolveVehicleLocationProviderType_Other_Fails() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { Step stepEntity = new Step(); stepEntity.StepNumber = 1; stepEntity.StartDate = DateTime.Parse("1/1/2014 10:02"); stepEntity.EndDate = DateTime.Parse("1/1/2014 10:40"); stepEntity.FromName = "Quartz Street"; stepEntity.FromProviderId = (int)Providers.COTA; stepEntity.FromStopCode = "1001"; stepEntity.ModeId = (int)Modes.Bus; stepEntity.RouteNumber = "039"; stepEntity.Distance = (decimal)12.2; stepEntity.ToName = "Slate Run Road"; stepEntity.ToProviderId = (int)Providers.COTA; stepEntity.ToStopCode = "2002"; unitOfWork.Repository <Step>().Insert(stepEntity); unitOfWork.Save(); TConnect tconn = new TConnect(); tconn.InboundStepId = stepEntity.Id; unitOfWork.Repository <TConnect>().Insert(tconn); unitOfWork.Save(); try { IVehicleLocation iv = VehicleLocationMonitorWorker.ResolveVehicleLocationProviderType(tconn, unitOfWork, scheduleFakes); Assert.AreEqual(true, false, "Test should have thrown an exception and not executed this line."); } catch (Exception ex) { //unhandled type } } }
public void CalcPointAEtaFromPointA_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { DateTime date = new DateTime(2014, 1, 1, 12, 0, 0); GeoCoordinate currentLoc = new GeoCoordinate { Latitude = 39.975148, Longitude = -82.894379 }; GeoCoordinate destinationLoc = new GeoCoordinate { Latitude = 39.875148, Longitude = -82.894379 }; DateTime eta = CalcPointBEtaFromPointA(destinationLoc, date, currentLoc); //Distance: 1.614 km =1614 m float actualdist = 0; //20 mph = 8.9mps //double seconds = actualdist / 8.9; //Dont match down in the noise, but are good through seconds. Assert.AreEqual(12, eta.Hour); Assert.AreEqual(33, eta.Minute); Assert.AreEqual(0, eta.Second); } }
public void MonitorTConnect_UpdateExistingTConnect_AutoAccept_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { List <Step> steps; TConnect mt; Trip trip; SetupUowWithTripAndTConnect(unitOfWork, out trip, out steps, out mt); DateTime newEta = ((DateTime)mt.StartWindow).AddMinutes(5); //Add a TconnectRequest so the path follows the update path TConnectRequest newRequest = new TConnectRequest(); newRequest.TConnectedVehicleId = 2; newRequest.TConnectId = mt.Id; newRequest.EstimatedTimeArrival = newEta; newRequest.RequestedHoldMinutes = 2; newRequest.TConnectStatusId = (int)TConnectStatuses.New; unitOfWork.Repository <TConnectRequest>().Insert(newRequest); unitOfWork.Save(); //Add another tconnectrequest for another traveler for the same vehicle TConnectedVehicle v = new TConnectedVehicle(); v.Id = 2; v.CurrentAcceptedHoldMinutes = 7; unitOfWork.Repository <TConnectedVehicle>().Insert(v); unitOfWork.Save(); MonitorTConnect(unitOfWork, mt, newEta); var treq = unitOfWork.Repository <TConnectRequest>().Query().Get(); TConnectRequest request = treq.Where(t => t.TConnectId.Equals(mt.Id)).First(); Assert.AreEqual(5, request.RequestedHoldMinutes, "Existing TConnectRequest should have been upated to 3 minutes"); Assert.AreEqual((int)TConnectStatuses.Accepted, request.TConnectStatusId, "Status should be Accepted"); } }
public void CalcPointBEtaFromPointA_Passes() { using (IDbContext idtoFakeContext = new IDTOFakeContext()) using (IUnitOfWork unitOfWork = new UnitOfWork(idtoFakeContext)) { DateTime date = new DateTime(2014, 1, 1, 12, 0, 0); GeoCoordinate currentLoc = new GeoCoordinate { Latitude = 39.975148, Longitude = -82.894379 }; GeoCoordinate destinationLoc = new GeoCoordinate { Latitude = 39.977592, Longitude = -82.913055 }; DateTime eta = CalcPointBEtaFromPointA(destinationLoc, date, currentLoc); //Distance: 1.614 km =1614 m float actualdist = 1615.81F; //20 mph = 8.9mps //15 Miles per Hour = 6.7056 Meters per Second double seconds = 239; //actualdist / 6.7; //Dont match down in the noise, but are good through seconds. Assert.AreEqual(date.AddSeconds(seconds).Hour, eta.Hour); Assert.AreEqual(date.AddSeconds(seconds).Minute, eta.Minute); Assert.AreEqual(date.AddSeconds(seconds).Second, eta.Second); } }