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)); }
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"); }
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)); }