public async Task BookingController_Confirm_WhenTripCompleted_ShouldReturnTripAlreadyCompletedStatusCode() { // Arrange var tripReference = StringHelper.RandomString(8); var bookingReference = StringHelper.RandomString(6); _mockTripRepository .Setup(m => m.GetByTripReferenceAsync(It.IsAny <string>())) .ReturnsAsync(TestDataHelper.GetTripCollection(tripReference, TripStatus.Completed).FirstOrDefault()) .Verifiable(); _mockBookingRepository .Setup(m => m.GetByBookingReferenceAsync(It.IsAny <string>())) .ReturnsAsync(TestDataHelper.GetBookingCollection(bookingReference, tripReference, BookingStatus.Initiated).FirstOrDefault()) .Verifiable(); _mockBookingRepository .Setup(m => m.ConfirmAsync(It.IsAny <Booking>())) .Returns(Task.FromResult <object>(null)) .Verifiable(); // Act var bookingController = new BookingController(_mockTripRepository.Object, _mockBookingRepository.Object, _mockLogger.Object); var result = await bookingController.Confirm(bookingReference); var statusCodeResult = result as ObjectResult; // Assert Assert.IsNotNull(statusCodeResult); Assert.AreEqual(ErrorCodes.TRIP_ALREADY_COMPLETED, statusCodeResult.StatusCode.Value); _mockBookingRepository.Verify(m => m.GetByBookingReferenceAsync(It.IsAny <string>()), Times.Once); _mockTripRepository.Verify(m => m.GetByTripReferenceAsync(It.IsAny <string>()), Times.Once); _mockBookingRepository.Verify(m => m.ConfirmAsync(It.IsAny <Booking>()), Times.Never); }
public async Task BookingController_Confirm_WhenTripDoesNotExist_ShouldReturnNotFound() { // Arrange var tripReference = StringHelper.RandomString(8); var bookingReference = StringHelper.RandomString(6); _mockTripRepository .Setup(m => m.GetByTripReferenceAsync(It.IsAny <string>())) .ReturnsAsync(default(Trip)) .Verifiable(); _mockBookingRepository .Setup(m => m.GetByBookingReferenceAsync(It.IsAny <string>())) .ReturnsAsync(TestDataHelper.GetBookingCollection(bookingReference, tripReference, BookingStatus.Initiated).FirstOrDefault()) .Verifiable(); _mockBookingRepository .Setup(m => m.ConfirmAsync(It.IsAny <Booking>())) .Returns(Task.FromResult <object>(null)) .Verifiable(); // Act var bookingController = new BookingController(_mockTripRepository.Object, _mockBookingRepository.Object, _mockLogger.Object); var result = await bookingController.Confirm(bookingReference); // Assert Assert.IsNotNull(result as NotFoundObjectResult); _mockBookingRepository.Verify(m => m.GetByBookingReferenceAsync(It.IsAny <string>()), Times.Once); _mockTripRepository.Verify(m => m.GetByTripReferenceAsync(It.IsAny <string>()), Times.Once); _mockBookingRepository.Verify(m => m.ConfirmAsync(It.IsAny <Booking>()), Times.Never); }
public void Works() { var contextProvider = ObjectFactory.GetInstance <IContextProvider>(); var viewModel = new ReviewViewModel(); viewModel.BusId = new Guid("6a9857a6-d0b0-4e1a-84cb-ee9ade159560"); viewModel.PickUp = new DateTime(2090, 1, 2); viewModel.DropOff = new DateTime(2090, 1, 6); viewModel.Forename = "Percy"; viewModel.Surname = "Purple"; viewModel.AddressLine1 = "5 Green Lane"; viewModel.Town = "Blackville"; viewModel.County = "Blueshire"; viewModel.PostCode = "M1 1AA"; viewModel.Email = "*****@*****.**"; viewModel.TelephoneNumber = "*****@*****.**"; viewModel.IsMainDriver = false; viewModel.DrivingLicenceNumber = "ABC1234"; viewModel.DriverForename = "Betty"; viewModel.DriverSurname = "Beige"; viewModel.NumberOfAdults = 2; viewModel.NumberOfChildren = 1; viewModel.VoucherCode = null; viewModel.RestrictionsAccepted = true; viewModel.TermsAndConditionsAccepted = true; using (contextProvider) { _bookingController.Confirm(viewModel); contextProvider.SaveChanges(); } using (contextProvider) { var bookingRepository = ObjectFactory.GetInstance <IBookingRepository>(); var booking = bookingRepository.GetAll().Single(x => x.Id.Value != new Guid("eaa01eab-f3bd-4e24-8368-d3501a227a8b")); Assert.That(booking.PickUp, Is.EqualTo(viewModel.PickUp)); Assert.That(booking.DropOff, Is.EqualTo(viewModel.DropOff)); Assert.That(booking.Bus.Id.Value, Is.EqualTo(viewModel.BusId)); Assert.That(booking.Customer.Forename, Is.EqualTo(viewModel.Forename)); Assert.That(booking.Customer.Surname, Is.EqualTo(viewModel.Surname)); Assert.That(booking.Customer.AddressLine1, Is.EqualTo(viewModel.AddressLine1)); Assert.That(booking.Customer.Town, Is.EqualTo(viewModel.Town)); Assert.That(booking.Customer.County, Is.EqualTo(viewModel.County)); Assert.That(booking.Customer.PostCode, Is.EqualTo(viewModel.PostCode)); Assert.That(booking.Customer.TelephoneNumber, Is.EqualTo(viewModel.TelephoneNumber)); Assert.That(booking.IsMainDriver, Is.EqualTo(viewModel.IsMainDriver)); Assert.That(booking.DriverForename, Is.EqualTo(viewModel.DriverForename)); Assert.That(booking.DriverSurname, Is.EqualTo(viewModel.DriverSurname)); Assert.That(booking.NumberOfAdults, Is.EqualTo(viewModel.NumberOfAdults)); Assert.That(booking.NumberOfChildren, Is.EqualTo(viewModel.NumberOfChildren)); Assert.That(booking.TotalCost, Is.EqualTo(600)); Assert.That(booking.CreatedBy.Id.Value, Is.EqualTo(new Guid("c8238876-47fc-42af-8a32-926061097f1c"))); Assert.That(booking.CreatedBy.Username, Is.EqualTo("Application")); } }
public void TestIfBookingControllerConfirmActionReturnsTaskIActionResult() { var options = new DbContextOptionsBuilder <ApplicationDbContext>() .UseInMemoryDatabase("TestDb") .Options; var mockHotelService = new Mock <IHotelService>(); var applicationDbcontext = new ApplicationDbContext(options); var mockRoomService = new Mock <IRoomService>(); var store = new Mock <IUserStore <ApplicationUser> >(); var mgr = new Mock <UserManager <ApplicationUser> >(store.Object, null, null, null, null, null, null, null, null); mgr.Object.UserValidators.Add(new UserValidator <ApplicationUser>()); mgr.Object.PasswordValidators.Add(new PasswordValidator <ApplicationUser>()); var testController = new BookingController(applicationDbcontext, mockHotelService.Object, mockRoomService.Object, mgr.Object); var result = testController.Confirm(null, "test", "test", 1, 1, "test"); Assert.IsAssignableFrom <Task <IActionResult> >(result); }
public async Task BookingController_Confirm_WhenBookingInitiated_ShouldReturnOk() { // Arrange var tripReference = StringHelper.RandomString(8); var bookingReference = StringHelper.RandomString(6); _mockTripRepository .Setup(m => m.GetByTripReferenceAsync(It.IsAny <string>())) .ReturnsAsync(TestDataHelper.GetTripCollection(tripReference).FirstOrDefault()) .Verifiable(); _mockBookingRepository .Setup(m => m.GetByBookingReferenceAsync(It.IsAny <string>())) .ReturnsAsync(TestDataHelper.GetBookingCollection(bookingReference, tripReference, BookingStatus.Initiated).FirstOrDefault()) .Verifiable(); _mockBookingRepository .Setup(m => m.ConfirmAsync(It.IsAny <Booking>())) .Returns(Task.FromResult <object>(null)) .Verifiable(); // Act var bookingController = new BookingController(_mockTripRepository.Object, _mockBookingRepository.Object, _mockLogger.Object); var result = await bookingController.Confirm(bookingReference); var objResult = result as OkObjectResult; // Assert Assert.IsNotNull(objResult); var bookingResponse = objResult.Value as BookingResponseModel; Assert.IsNotNull(bookingResponse); Assert.AreEqual(bookingReference, bookingResponse.BookingReference); Assert.AreEqual(BookingStatus.Completed, bookingResponse.BookingStatus.ToEnum <BookingStatus>()); _mockBookingRepository.Verify(m => m.GetByBookingReferenceAsync(It.IsAny <string>()), Times.Once); _mockTripRepository.Verify(m => m.GetByTripReferenceAsync(It.IsAny <string>()), Times.Once); _mockBookingRepository.Verify(m => m.ConfirmAsync(It.IsAny <Booking>()), Times.Once); }