public async Task <IActionResult> EndRental(int id)
        {
            var rental = await _context.Rentals.FindAsync(id);

            rental.RentalEnd  = DateTime.Now;
            rental.TotalPrice = rentalCostCalculator.Calculate(rental);

            rental.Bike.CurrentlyRented = false;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!RentalExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(Ok());
        }
        public void SimpleRental()
        {
            var rentalCostCalculator = new RentalCostCalculator();
            var rental = new Rental
            {
                RentalBegin = new DateTime(2019, 11, 20, 5, 20, 0),
                RentalEnd   = new DateTime(2019, 11, 20, 7, 20, 0),
                Bike        = new Bike
                {
                    RentalPriceFirstHour      = 3,
                    RentalPriceAdditionalHour = 5
                }
            };
            var expectedCosts = 8;

            var costs = rentalCostCalculator.Calculate(rental);

            Assert.True(costs == expectedCosts, "Result doesn't match expected costs");
        }
        public void RentalsShorterThan15MinutesAreFree()
        {
            var rentalCostCalculator = new RentalCostCalculator();
            var rental = new Rental
            {
                RentalBegin = new DateTime(2019, 11, 20, 10, 20, 0),
                RentalEnd   = new DateTime(2019, 11, 20, 10, 30, 0),
                Bike        = new Bike
                {
                    RentalPriceFirstHour      = 3,
                    RentalPriceAdditionalHour = 5
                }
            };
            var expectedCosts = 0;

            var costs = rentalCostCalculator.Calculate(rental);

            Assert.True(costs == expectedCosts, "Rental shorter than 15 Minutes should be free");
        }