public async Task BookingController_Cancel_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.CancelAsync(It.IsAny <Booking>())) .Returns(Task.FromResult <object>(null)) .Verifiable(); // Act var bookingController = new BookingController(_mockTripRepository.Object, _mockBookingRepository.Object, _mockLogger.Object); var result = await bookingController.Cancel(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.CancelAsync(It.IsAny <Booking>()), Times.Never); _mockTripRepository.Verify(m => m.UpdateAsync(It.IsAny <Trip>()), Times.Never); }
public async Task BookingController_Cancel_WhenTripCancelled_ShouldReturnOk() { // Arrange var tripReference = StringHelper.RandomString(8); var bookingReference = StringHelper.RandomString(6); _mockTripRepository .Setup(m => m.GetByTripReferenceAsync(It.IsAny <string>())) .ReturnsAsync(TestDataHelper.GetTripCollection(tripReference, TripStatus.Cancelled).FirstOrDefault()) .Verifiable(); _mockBookingRepository .Setup(m => m.GetByBookingReferenceAsync(It.IsAny <string>())) .ReturnsAsync(TestDataHelper.GetBookingCollection(bookingReference, tripReference, BookingStatus.Initiated).FirstOrDefault()) .Verifiable(); _mockBookingRepository .Setup(m => m.CancelAsync(It.IsAny <Booking>())) .Returns(Task.FromResult <object>(null)) .Verifiable(); // Act var bookingController = new BookingController(_mockTripRepository.Object, _mockBookingRepository.Object, _mockLogger.Object); var result = await bookingController.Cancel(bookingReference); // Assert Assert.IsNotNull(result as OkResult); _mockBookingRepository.Verify(m => m.GetByBookingReferenceAsync(It.IsAny <string>()), Times.Once); _mockTripRepository.Verify(m => m.GetByTripReferenceAsync(It.IsAny <string>()), Times.Once); _mockBookingRepository.Verify(m => m.CancelAsync(It.IsAny <Booking>()), Times.Once); _mockTripRepository.Verify(m => m.UpdateAsync(It.IsAny <Trip>()), Times.Never); }