public ActionResult BookSeat(string flightNumber) { // TODO Setup some sort of DI and inject this, to remove EF reference and east testing MonarchContext context = new MonarchContext(); BookingService service = new BookingService(context); var vm = new SeatBookedViewModel(); Flight flight = service.GetFlight(flightNumber); // Display error if the flight Can#t be found if (flight == null) { vm.Message = "Flight not found"; } else if (flight.SeatsBooked >= flight.SeatsOnFlight) { vm.Message = string.Format("Flight {0} is already at capacity", flight.FlightNumber); } else { var booked = service.BookSeat(flightNumber); if (booked) { vm.Message = string.Format("A seat on Flight Number {0} has been booked successfully", flight.FlightNumber); vm.Success = true; } else { //TODO Add Logger and log exception vm.Message = string.Format("Error booking a seat on Flight Number {0}", flight.FlightNumber); } } return(View(vm)); }
public void GivenShowIsNotAvailable_WhenBookSeat_ShouldReturnFalse() { // ARRANGE var cinemaShow = _fixture.Build <CinemaShowDTO>(). With(cs => cs.IsAvailable, false). Create(); _cinemaShowRepositoryMock.Setup(c => c.GetCinemaShow(It.IsAny <string>())).Returns(cinemaShow); var bookingService = new BookingService(_cinemaShowRepositoryMock.Object, _seatRepositoryMock.Object, _bookingRepositoryMock.Object); // ACT var result = bookingService.BookSeat(cinemaShow.Name, It.IsAny <string>()); // ASSERT result.Should().BeFalse(); }
public void GivenShowHasSeats_WhenBookSeat_ShouldReturnTrue() { // ARRANGE var cinemaShow = _fixture.Build <CinemaShowDTO>(). With(cs => cs.IsAvailable, true). Create(); var seats = _fixture.Create <IEnumerable <SeatDTO> >(); _cinemaShowRepositoryMock.Setup(c => c.GetCinemaShow(It.IsAny <string>())).Returns(cinemaShow); _seatRepositoryMock.Setup(c => c.GetAvailableSeats(cinemaShow.Id)).Returns(seats); var bookingService = new BookingService(_cinemaShowRepositoryMock.Object, _seatRepositoryMock.Object, _bookingRepositoryMock.Object); // ACT var result = bookingService.BookSeat(cinemaShow.Name, It.IsAny <string>()); // ASSERT result.Should().BeTrue(); }