Exemple #1
0
        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);
        }
Exemple #2
0
        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>();
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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>();
        }