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 void RemoveBooking(Booking booking) { BookingMethods bookingService = new BookingMethods(); var removedBooking = new Domain.Booking { Id = booking.Id, CarId = booking.CarId, CustomerId = booking.CustomerId, FromDate = booking.FromDate, ToDate = booking.ToDate, IsReturned = booking.IsReturned }; bookingService.Remove(removedBooking); }
public Domain.Booking CreateBooking(CreateBookingRequest createBookingRequest) { var cabTypes = new List <CabType>(); if (!string.IsNullOrEmpty(createBookingRequest.CabType)) { CabType cabType; Enum.TryParse(createBookingRequest.CabType, true, out cabType); cabTypes.Add(cabType); } else { cabTypes.Add(CabType.Regular); cabTypes.Add(CabType.Pink); } var availableCab = AvailableCabsService.GetNearestCab(createBookingRequest.PickupLocation, cabTypes.ToArray()); if (availableCab != null) { try { var booking = new Domain.Booking( Guid.NewGuid().ToString(), createBookingRequest.UserId, availableCab.Id, createBookingRequest.PickupLocation, createBookingRequest.Destination, createBookingRequest.Time, BookingStatus.Accepted ); BookingRepository.Save(booking); return(booking); } catch (Exception) { AvailableCabsService.ReturnCabToPool(availableCab); throw; } } throw new Exception("No cars available"); }
public void ShouldGetBookingById() { var expectedBooking = new Domain.Booking( "100", "1234", "101", new GeoCoordinate(13, 77), new GeoCoordinate(14, 77), DateTime.Now, BookingStatus.Accepted ); var bookingRepo = new Mock <IBookingRepository>(); bookingRepo.Setup(b => b.Get("100")).Returns(expectedBooking); var availableCabsService = new Mock <IAvailableCabsService>(); var bookingService = new BookingService(bookingRepo.Object, availableCabsService.Object); var actual = bookingService.GetBooking("100"); bookingRepo.Verify(b => b.Get("100")); }
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)); }