public void MultipleDaysTest()
        {
            var calculator = new RentalPriceCalculator(20);
            var price      = calculator.CalculateRentalPrice(DateTime.UtcNow, DateTime.UtcNow.AddDays(5), 0.2m);

            Assert.AreEqual(120.0m, price);
        }
        public void RentalLessThanOneDayTest()
        {
            var calculator = new RentalPriceCalculator(20);
            var price      = calculator.CalculateRentalPrice(DateTime.Now, DateTime.Now.AddMinutes(5), 0.2m);

            Assert.AreEqual(1.0m, price);
        }
        public void TwoDatesTest()
        {
            var calculator = new RentalPriceCalculator(20);
            var startDate  = new DateTime(2019, 12, 30, 23, 0, 0);
            var endDate    = new DateTime(2019, 12, 31, 01, 0, 0);
            var price      = calculator.CalculateRentalPrice(startDate, endDate, 0.2m);

            Assert.AreEqual(24.0m, price);
        }
        public void AddRental(Rental rental)
        {
            if (rental == null)
            {
                throw new ArgumentNullException(nameof(rental));
            }

            rental.Id = Guid.NewGuid();

            if (rental.Client != null)
            {
                rental.Client.Id = Guid.NewGuid();
            }

            if (rental.Car != null)
            {
                rental.Car.Id    = Guid.NewGuid();
                rental.FullPrice = RentalPriceCalculator.CalculateFullPrice(rental);
            }

            _context.Rentals.Add(rental);
        }
 public void UpdateRental(Rental rental)
 {
     rental.FullPrice = RentalPriceCalculator.CalculateFullPrice(rental);
     _context.Rentals.Update(rental);
 }
        public void NegativeRentalTimeTest()
        {
            var calculator = new RentalPriceCalculator(20);

            Assert.ThrowsException <InvalidRentalTimeException>(() => calculator.CalculateRentalPrice(DateTime.Now.AddDays(5), DateTime.Now, 0.2m));
        }