public void Handle_Should_Throw_When_CalculateDailyRentalPaymentsQueryThrows() { var rentDay = DateTime.UtcNow.AddDays(-2); var boardGame = new BoardGame(Guid.NewGuid(), "SuperGame", 100); var client = new Client(Guid.NewGuid(), "Tom", "hanks", "12415421", "*****@*****.**"); var rental = new RentalWithDetails(Guid.NewGuid(), 15, 0, Status.InProgress, rentDay, null, boardGame, client); _mediatorService.Setup(x => x.Send(It.Is((GetRentalWithDetailsQuery q) => q.RentalGuid == rental.Id), _cancellationToken)) .ReturnsAsync(rental); _mapper.Setup(x => x.Map <RentalWithPaymentDetails>(rental)) .Returns(new RentalWithPaymentDetails { Id = rental.Id }); var exception = new ArgumentException("exception message long"); _mediatorService .Setup(x => x.Send( It.Is((GetRentalDaysQuery q) => q.BoardGamePrice == rental.BoardGame.Price && q.RentStartDate == rental.CreationTime), _cancellationToken)) .ThrowsAsync(exception); Func <Task> act = async() => await _sut.Handle(new GetRentalWithPaymentDetailsQuery(rental.Id), _cancellationToken); act.Should().Throw <ArgumentException>().WithMessage(exception.Message); }
public void Handle_Should_ThrowRentalNotFound_When_GetRentalWithDetailsQueryReturnsNull() { var inputGuid = Guid.NewGuid(); RentalWithDetails rental = null; _mediatorService.Setup(x => x.Send(It.Is((GetRentalWithDetailsQuery q) => q.RentalGuid == inputGuid), _cancellationToken)) .ReturnsAsync(rental); Func <Task> act = async() => await _sut.Handle(new GetRentalWithPaymentDetailsQuery(inputGuid), _cancellationToken); act.Should().Throw <RentalNotFoundException>(); }
public async Task Handle_Should_ReturnRentalWithPaymentDetails_When_RentalExists() { var rentDay = DateTime.UtcNow.AddDays(-2); var boardGame = new BoardGame(Guid.NewGuid(), "SuperGame", 100); var client = new Client(Guid.NewGuid(), "Tom", "hanks", "12415421", "*****@*****.**"); var rental = new RentalWithDetails(Guid.NewGuid(), 15, 0, Status.InProgress, rentDay, null, boardGame, client); _mediatorService.Setup(x => x.Send(It.Is((GetRentalWithDetailsQuery q) => q.RentalGuid == rental.Id), _cancellationToken)) .ReturnsAsync(rental); var rentalWithPaymentDetails = new RentalWithPaymentDetails { Id = rental.Id, ClientName = client.FirstName, BoardGameName = boardGame.Name, ChargedDeposit = rental.ChargedDeposit, RentalStartDateTime = rental.CreationTime }; _mapper.Setup(x => x.Map <RentalWithPaymentDetails>(rental)).Returns(rentalWithPaymentDetails); var rentalDays = new List <RentalDay> { new RentalDay(10, rentDay), new RentalDay(10, rentDay.AddDays(1)), new RentalDay(10, rentDay.AddDays(1)) }; _mediatorService .Setup(x => x.Send( It.Is((GetRentalDaysQuery q) => q.BoardGamePrice == rental.BoardGame.Price && q.RentStartDate == rental.CreationTime), _cancellationToken)) .ReturnsAsync(rentalDays); var result = await _sut.Handle(new GetRentalWithPaymentDetailsQuery(rental.Id), _cancellationToken); result.Should().BeOfType <RentalWithPaymentDetails>(); result.Should().Be(rentalWithPaymentDetails); result.RentalDays.Should().BeEquivalentTo(rentalDays); result.MoneyToPay.Should().Be(rentalDays.Sum(x => x.AmountDue)); }
public void Handle_Should_Throw_When_MapperReturnsNull() { var rentDay = DateTime.UtcNow.AddDays(-2); var boardGame = new BoardGame(Guid.NewGuid(), "SuperGame", 100); var client = new Client(Guid.NewGuid(), "Tom", "hanks", "12415421", "*****@*****.**"); var rental = new RentalWithDetails(Guid.NewGuid(), 15, 0, Status.InProgress, rentDay, null, boardGame, client); _mediatorService.Setup(x => x.Send(It.Is((GetRentalWithDetailsQuery q) => q.RentalGuid == rental.Id), _cancellationToken)) .ReturnsAsync(rental); _mapper.Setup(x => x.Map <RentalWithPaymentDetails>(rental)).Returns((RentalWithPaymentDetails)null); _mediatorService.Setup(x => x.Send(It.IsAny <GetRentalDaysQuery>(), _cancellationToken)) .ReturnsAsync(new List <RentalDay>()); Func <Task> act = async() => await _sut.Handle(new GetRentalWithPaymentDetailsQuery(rental.Id), _cancellationToken); act.Should().Throw <NullReferenceException>(); }