public void Handle_Should_ThrowRentalNotFoundException_When_RentalWithSpecifiedIdDoesNotExist() { var input = new CompleteRentalCommand(Guid.NewGuid(), 15); Rental rental = null; _unitOfWork.Setup(x => x.RentalRepository.GetByIdAsync(input.GameRentalId, _cancellationToken)) .ReturnsAsync(rental); Func <Task> act = async() => await _sut.Handle(input, _cancellationToken); act.Should().Throw <RentalNotFoundException>(); }
public void Handle_Should_ThrowRentalIsNotInProgress_When_RentalStatusIsNotInProgress(Status status) { var input = new CompleteRentalCommand(Guid.NewGuid(), 15); var rental = new Rental(input.GameRentalId, Guid.NewGuid(), Guid.NewGuid(), 100) { Status = status }; _unitOfWork.Setup(x => x.RentalRepository.GetByIdAsync(input.GameRentalId, _cancellationToken)) .ReturnsAsync(rental); Func <Task> act = async() => await _sut.Handle(input, _cancellationToken); act.Should().Throw <RentalIsNotInProgressException>(); }
public async Task Handle_Should_ChangeStatusToCompletedAndUpdateAndSaveRental_When_StatusIsInProgress() { var input = new CompleteRentalCommand(Guid.NewGuid(), 15); var rental = new Rental(input.GameRentalId, Guid.NewGuid(), Guid.NewGuid(), 100) { Status = Status.InProgress }; _unitOfWork.Setup(x => x.RentalRepository.GetByIdAsync(input.GameRentalId, _cancellationToken)) .ReturnsAsync(rental); _unitOfWork.Setup(x => x.RentalRepository.Update(rental)).Returns(Task.CompletedTask); _unitOfWork.Setup(x => x.SaveChangesAsync(_cancellationToken)).Returns(Task.CompletedTask); await _sut.Handle(input, _cancellationToken); _unitOfWork.Verify(x => x.RentalRepository.Update(rental), Times.Once); _unitOfWork.Verify(x => x.SaveChangesAsync(_cancellationToken), Times.Once); rental.Status.Should().Be(Status.Completed); rental.PaidMoney.Should().Be(input.PaidMoney); }