Пример #1
0
        public Domain.Trip StartTrip(StartTripRequest startTripRequest)
        {
            var booking = BookingService.GetBooking(startTripRequest.BookingId);

            if (booking != null && booking.Status == BookingStatus.Accepted)
            {
                var trip = new Domain.Trip(Guid.NewGuid().ToString(), booking.Id, booking.CabId, startTripRequest.StartLocation, null,
                                           startTripRequest.StartTime, DateTime.MinValue, TripStatus.InProgress);
                TripRepository.Save(trip);
                CabLocationService.SetCabLocation(booking.CabId, trip.StartLocation);
                return(trip);
            }
            throw new Exception("Invalid booking id");
        }
Пример #2
0
        public void EndTripShouldUpdateCabLocationAndReturnCabToPool()
        {
            var dropLocation = new GeoCoordinate(13, 77);
            var trip         = new Domain.Trip("1", "1234", "100", new GeoCoordinate(12, 77), null,
                                               DateTime.Now.AddHours(-1), DateTime.MinValue, TripStatus.InProgress);
            var tripRepo = new Mock <ITripRepository>();

            tripRepo.Setup(t => t.Get("1")).Returns(trip);
            var cabLocationService   = new Mock <ICabLocationService>();
            var availableCabsService = new Mock <IAvailableCabsService>();
            var bookingService       = new Mock <IBookingService>();

            var tripService = new TripService(tripRepo.Object, availableCabsService.Object, bookingService.Object, cabLocationService.Object);

            tripService.EndTrip("1", dropLocation, DateTime.Now);

            tripRepo.Verify(t => t.Save(It.Is <Domain.Trip>(updatedTrip => updatedTrip.Id.Equals(trip.Id))));
            availableCabsService.Verify(a => a.ReturnCabToPool("100"));
            cabLocationService.Verify(c => c.SetCabLocation("100", dropLocation));
        }