Example #1
0
        public void CreateTripShouldThrowIfBookingIsInvalid()
        {
            var pickupLocation = new GeoCoordinate(12.99711, 77.61469);
            var booking        = new Domain.Booking(
                "1",
                "1234",
                "100",
                pickupLocation,
                new GeoCoordinate(13, 77),
                DateTime.Today.AddDays(-1),
                BookingStatus.Cancelled
                );

            var tripRepo             = new Mock <ITripRepository>();
            var cabLocationService   = new Mock <ICabLocationService>();
            var availableCabsService = new Mock <IAvailableCabsService>();
            var bookingService       = new Mock <IBookingService>();

            bookingService.Setup(b => b.GetBooking("1")).Returns(booking);

            var tripService      = new TripService(tripRepo.Object, availableCabsService.Object, bookingService.Object, cabLocationService.Object);
            var startTripRequest = new StartTripRequest()
            {
                BookingId     = booking.Id,
                StartLocation = pickupLocation,
                StartTime     = DateTime.Now
            };

            Assert.Throws <Exception>(() => tripService.StartTrip(startTripRequest));
        }
Example #2
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");
        }
Example #3
0
        public void CreateTripShouldUpdateCabLocation()
        {
            var pickupLocation = new GeoCoordinate(12.99711, 77.61469);
            var booking        = new Domain.Booking(
                "1",
                "1234",
                "100",
                pickupLocation,
                new GeoCoordinate(13, 77),
                DateTime.Today.AddDays(-1),
                BookingStatus.Accepted
                );

            var tripRepo             = new Mock <ITripRepository>();
            var cabLocationService   = new Mock <ICabLocationService>();
            var availableCabsService = new Mock <IAvailableCabsService>();
            var bookingService       = new Mock <IBookingService>();

            bookingService.Setup(b => b.GetBooking("1")).Returns(booking);

            var tripService      = new TripService(tripRepo.Object, availableCabsService.Object, bookingService.Object, cabLocationService.Object);
            var startTripRequest = new StartTripRequest()
            {
                BookingId     = booking.Id,
                StartLocation = pickupLocation,
                StartTime     = DateTime.Now
            };

            tripService.StartTrip(startTripRequest);

            tripRepo.Verify(t => t.Save(It.Is <Domain.Trip>(
                                            trip => trip.BookingId.Equals(booking.Id) && trip.StartLocation.Equals(pickupLocation) &&
                                            trip.CabId.Equals(booking.CabId) && trip.Status == TripStatus.InProgress &&
                                            trip.StartTime.Equals(startTripRequest.StartTime))));
            cabLocationService.Verify(c => c.SetCabLocation(booking.CabId, pickupLocation));
        }