static void calculatePrice() { Console.WriteLine("Calculating price, to go back input '_back_'."); Console.WriteLine("Format: 'activatedReservationId'"); Console.WriteLine("Example: 1"); Console.Write(">"); var input = Console.ReadLine(); if (input == "_back_") { return; } try { var param = int.Parse(input.Trim()); using (var rrcs = new RentalRateCalculatorService()) { var asyncCost = rrcs.calculateCost(param); asyncCost.Wait(); var cost = asyncCost.Result; Console.WriteLine("The cost is: " + cost); } } catch (Exception e) { printExceptions(e); } }
static void initialize() { using (var service = new DatabaseAccessService()) { var customer1 = new BasicCustomer { name = "Linda", dateOfBirth = new DateTime(1990, 1, 1) }; var customer2 = new BasicCustomer { name = "Klas", dateOfBirth = new DateTime(1992, 1, 1) }; service.addCustomer(customer1).Wait(); service.addCustomer(customer2).Wait(); var smallCar = new RentalCarType { carTypeName = "Small car", basePriceModifier = 1, kmPriceModifier = 0 }; var van = new RentalCarType { carTypeName = "Van", basePriceModifier = 1.2, kmPriceModifier = 1 }; var miniBus = new RentalCarType { carTypeName = "Mini bus", basePriceModifier = 1.7, kmPriceModifier = 1.5 }; service.addRentalCarType(smallCar).Wait(); service.addRentalCarType(van).Wait(); service.addRentalCarType(miniBus).Wait(); service.addRentalCar("DDD111", "Small car", 0).Wait(); service.addRentalCar("DDD222", "Small car", 0).Wait(); service.addRentalCar("EEE111", "Van", 0).Wait(); service.addRentalCar("EEE222", "Van", 0).Wait(); service.addRentalCar("FFF111", "Mini bus", 0).Wait(); service.addRentalCar("FFF222", "Mini bus", 0).Wait(); } using (var context = new CarRentalContext()) { RentalRateCalculatorService.setRentalRate(context, 15, 20).Wait(); } Console.WriteLine("Initialize complete"); }
public void SuccessfullyCalculateRentalRate() { double kmPrice = 15; double baseDayRentalPrice = 20; double mileage = 100; var configMockSet = new Mock <DbSet <ConfigItem> >(); var customerMockSet = new Mock <DbSet <BasicCustomer> >(); var rentalCarMockSet = new Mock <DbSet <RentalCar> >(); var carTypeMockSet = new Mock <DbSet <RentalCarType> >(); var mockContext = new Mock <CarRentalContext>(); var reservationMockSet = new Mock <DbSet <Reservation> >(); var activatedReservationMockSet = new Mock <DbSet <ActivatedReservation> >(); unitTestHelper.setUpMockBasicCustomers(customerMockSet, mockContext); unitTestHelper.setUpMockCars(rentalCarMockSet, carTypeMockSet, mockContext); var carTypes = carTypeMockSet.Object.ToArray(); var carType1 = carTypes[0]; var carType2 = carTypes[1]; var customer = customerMockSet.Object.ToArray()[0]; var reservation = new Reservation( customer, carType2, DateTime.Now.AddDays(1), DateTime.Now.AddDays(2)); reservation.id = 0; var rentalCar = rentalCarMockSet.Object.FirstOrDefault(car => car.rentalCarType.carTypeName == carType2.carTypeName); var activatedReservation = new ActivatedReservation(reservation, rentalCar, 0, true); activatedReservation.endMileage = 100; activatedReservation.actualReturnDate = DateTime.Now; activatedReservation.isCurrentlyActive = false; unitTestHelper.setUpMockReservations(new List <Reservation> { reservation }, carTypeMockSet, customerMockSet, reservationMockSet, mockContext); unitTestHelper.setUpMockActivatedReservations(new List <ActivatedReservation> { activatedReservation }, activatedReservationMockSet, mockContext); var configList = new List <ConfigItem> { new ConfigItem { configName = "kmPrice", value = kmPrice.ToString() }, new ConfigItem { configName = "baseDayRentalPrice", value = baseDayRentalPrice.ToString() } }; unitTestHelper.setUpMockConfigItems(configList, configMockSet, mockContext); double kmPriceModifier = carType2.kmPriceModifier; double basePriceModifier = carType2.basePriceModifier; double dayDiff = (reservation.expectedReturnDate - reservation.rentalDate).Days; double expectedCost = baseDayRentalPrice * dayDiff * basePriceModifier + kmPrice * mileage * kmPriceModifier; using (var rrcs = new RentalRateCalculatorService(mockContext.Object)) { var asyncCost = rrcs.calculateCost(activatedReservation.id); asyncCost.Wait(); var cost = asyncCost.Result; Assert.AreEqual(expectedCost, cost); } }