Esempio n. 1
0
        static void activateReservation()
        {
            Console.WriteLine("Activating reservation, to go back input '_back_'.");
            Console.WriteLine("Format: 'reservationId'");
            Console.WriteLine("Example: 1");
            Console.Write(">");
            var input = Console.ReadLine();

            if (input == "_back_")
            {
                return;
            }

            try
            {
                var param = int.Parse(input.Trim());
                using (var crs = new CarReservationService())
                {
                    var asyncAr = crs.activateReservation(param);
                    asyncAr.Wait();
                    var ar = asyncAr.Result;
                    Console.WriteLine("Reservation with id " + param + " has been activated.");
                    Console.WriteLine("ActivatedReservation id is " + ar.id + ".");
                }
            }
            catch (Exception e)
            {
                printExceptions(e);
            }
        }
Esempio n. 2
0
        static void deactivateReservation()
        {
            Console.WriteLine("Deactivating activated reservation, 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 crs = new CarReservationService())
                {
                    crs.deactivateActivatedReservation(param).Wait();
                    Console.WriteLine("Reservation with id " + param + " has been deactivated.");
                }
            } catch (Exception e)
            {
                printExceptions(e);
            }
        }
Esempio n. 3
0
        public void FailsToMakeReservationWhenInvalidCarType()
        {
            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> >();

            unitTestHelper.setUpMockBasicCustomers(customerMockSet, mockContext);
            unitTestHelper.setUpMockCars(rentalCarMockSet, carTypeMockSet, mockContext);
            unitTestHelper.setUpEmptyMockReservations(reservationMockSet, mockContext);

            using (var csr = new CarReservationService(mockContext.Object))
            {
                try
                {
                    var asyncReturnVal = csr.requestReservation(
                        customerMockSet.Object.First().id,
                        "a",
                        DateTime.Now, new DateTime(2019, 10, 10));
                    asyncReturnVal.Wait();
                    var returnVal = asyncReturnVal.Result;
                }
                catch (Exception e)
                {
                    Assert.IsTrue(e.GetType() == new ArgumentException().GetType() || e.InnerException.GetType() == new ArgumentException().GetType());
                }
            }
        }
Esempio n. 4
0
        public void SuccessfullyActivatesReservationAfterCollidingActivatedReservationIsDeactivated()
        {
            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 reservation1 = new Reservation(
                customer,
                carType2,
                DateTime.Now,
                DateTime.Now.AddDays(2));

            var reservation2 = new Reservation(
                customer,
                carType2,
                DateTime.Now,
                DateTime.Now.AddDays(2));

            reservation1.id = 0;
            reservation2.id = 1;

            unitTestHelper.setUpMockReservations(new List <Reservation> {
                reservation1, reservation2
            }, carTypeMockSet, customerMockSet, reservationMockSet, mockContext);

            using (var csr = new CarReservationService(mockContext.Object))
            {
                var reservations = reservationMockSet.Object.ToArray();
                var rentalcars   = rentalCarMockSet.Object.ToArray();
                var existingActivatedReservation = new ActivatedReservation(reservations[0], rentalcars[1], 0, false);

                unitTestHelper.setUpMockActivatedReservations(new List <ActivatedReservation> {
                    existingActivatedReservation
                }, activatedReservationMockSet, mockContext);

                var asyncActivatedReservation = csr.activateReservation(reservation1.id);
                asyncActivatedReservation.Wait();
                var activatedReservation = asyncActivatedReservation.Result;


                activatedReservationMockSet.Verify(a => a.Add(It.IsAny <ActivatedReservation>()), Times.Once());
                mockContext.Verify(a => a.SaveChangesAsync(), Times.Once());
            }
        }
Esempio n. 5
0
        public void FailsToDeactivateActivatedReservationWhenItIsAlreadyDeactivated()
        {
            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 reservation1 = new Reservation(
                customer,
                carType2,
                DateTime.Now,
                DateTime.Now.AddDays(2));

            reservation1.id = 0;

            var rentalcars = rentalCarMockSet.Object.ToArray();
            var existingActivatedReservation = new ActivatedReservation(reservation1, rentalcars[1], 0, false);

            existingActivatedReservation.id = 1;

            unitTestHelper.setUpMockActivatedReservations(new List <ActivatedReservation> {
                existingActivatedReservation
            }, activatedReservationMockSet, mockContext);

            using (var csr = new CarReservationService(mockContext.Object))
            {
                try
                {
                    var asyncActivatedReservation = csr.deactivateActivatedReservation(existingActivatedReservation.id);
                    asyncActivatedReservation.Wait();
                    var activatedReservation = asyncActivatedReservation.Result;

                    activatedReservationMockSet.Verify(a => a.Add(It.IsAny <ActivatedReservation>()), Times.Never());
                    mockContext.Verify(a => a.SaveChangesAsync(), Times.Never());
                }
                catch (Exception e)
                {
                    Assert.IsTrue(e.GetType() == new InvalidOperationException().GetType() || e.InnerException is InvalidOperationException);
                }
            }
        }
Esempio n. 6
0
        public void FailsToActivateReservationWhenRentalDateHasNotYetBeenMet()
        {
            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 reservation1 = new Reservation(
                customer,
                carType2,
                DateTime.Now.AddDays(1),
                DateTime.Now.AddDays(2));

            reservation1.id = 0;

            unitTestHelper.setUpMockReservations(new List <Reservation> {
                reservation1
            }, carTypeMockSet, customerMockSet, reservationMockSet, mockContext);
            unitTestHelper.setUpMockActivatedReservations(new List <ActivatedReservation>(), activatedReservationMockSet, mockContext);

            using (var csr = new CarReservationService(mockContext.Object))
            {
                try
                {
                    var reservations = reservationMockSet.Object.ToArray();
                    var reservation  = reservations[0];

                    var asyncActivatedReservation = csr.activateReservation(reservation.id);
                    asyncActivatedReservation.Wait();
                    var activatedReservation = asyncActivatedReservation.Result;

                    Assert.IsNull(activatedReservation);
                    activatedReservationMockSet.Verify(a => a.Add(It.IsAny <ActivatedReservation>()), Times.Never());
                }
                catch (Exception e)
                {
                    Assert.IsTrue(e.GetType() == new InvalidOperationException().GetType() || e.InnerException is InvalidOperationException);
                }
            }
        }
Esempio n. 7
0
        public void FailsToMakeReservationWhenNoFreeCarsOfGivenType1()
        {
            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> >();

            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 reservation1 = new Reservation(
                customer,
                carType1,
                new DateTime(2018, 11, 12),
                new DateTime(2018, 12, 12));

            reservation1.id = 0;

            unitTestHelper.setUpMockReservations(new List <Reservation> {
                reservation1
            }, carTypeMockSet, customerMockSet, reservationMockSet, mockContext);

            using (var csr = new CarReservationService(mockContext.Object))
            {
                try
                {
                    var asyncReturnVal = csr.requestReservation(
                        customerMockSet.Object.First().id,
                        carTypeMockSet.Object.First().carTypeName,
                        DateTime.Now,
                        new DateTime(2018, 12, 10));

                    asyncReturnVal.Wait();
                    var returnVal = asyncReturnVal.Result;

                    reservationMockSet.Verify(m => m.Add(It.IsAny <Reservation>()), Times.Never());
                    Assert.IsNull(returnVal);
                }
                catch (Exception e)
                {
                    Assert.IsTrue(e.GetType() == new ArgumentException().GetType() || e.InnerException is ArgumentException);
                }
            }
        }
Esempio n. 8
0
        static void requestReservation()
        {
            Console.WriteLine("Adding reservation, to go back input '_back_'.");
            Console.WriteLine("Format: 'customerId', 'carTypeName', 'startDate', 'endDate'");
            Console.WriteLine("Example: 1, Small car, 2018-10-19, 2018-11-19");
            Console.Write(">");
            var input = Console.ReadLine();

            if (input == "_back_")
            {
                return;
            }

            List <string> untrimmedParams = input.Split(',').ToList();
            List <string> parameters      = untrimmedParams.Select(x => x.Trim()).ToList();

            if (parameters.Count() != 4)
            {
                Console.WriteLine("Input format is incorrect");
                return;
            }

            try
            {
                var id        = int.Parse(parameters[0]);
                var carType   = parameters[1];
                var startDate = DateTime.Parse(parameters[2]);
                var endDate   = DateTime.Parse(parameters[3]);


                using (var service = new CarReservationService())
                {
                    Console.WriteLine("Creating reservation...");
                    var asyncR = service.requestReservation(id, carType, startDate, endDate);
                    asyncR.Wait();
                    var r = asyncR.Result;

                    Console.WriteLine("Reservation successful. The reservation id is:" + r.id);
                }
            }
            catch (Exception e)
            {
                printExceptions(e);
            }
        }
Esempio n. 9
0
        public void SuccessfullyRequestsReservationWithDateBeforeOtherReservation()
        {
            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> >();

            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 reservation1 = new Reservation(
                customer,
                carType1,
                new DateTime(2018, 11, 12),
                new DateTime(2018, 12, 12));

            reservation1.id = 0;

            unitTestHelper.setUpMockReservations(new List <Reservation> {
                reservation1
            }, carTypeMockSet, customerMockSet, reservationMockSet, mockContext);


            using (var csr = new CarReservationService(mockContext.Object))
            {
                var asyncReturnVal = csr.requestReservation(
                    customerMockSet.Object.First().id,
                    carTypeMockSet.Object.First().carTypeName,
                    new DateTime(2018, 11, 1),
                    new DateTime(2018, 11, 11));

                asyncReturnVal.Wait();
                var returnVal = asyncReturnVal.Result;


                reservationMockSet.Verify(m => m.Add(It.IsAny <Reservation>()), Times.Once());
                mockContext.Verify(m => m.SaveChangesAsync(), Times.Once());
            }
        }
Esempio n. 10
0
        public void SuccessfullyActivatesReservationWhenCarsAreAvailable()
        {
            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 reservation1 = new Reservation(
                customer,
                carType2,
                DateTime.Now.Subtract(new TimeSpan(1, 0, 0, 0)),
                DateTime.Now.AddDays(1));

            reservation1.id = 0;

            unitTestHelper.setUpMockReservations(new List <Reservation> {
                reservation1
            }, carTypeMockSet, customerMockSet, reservationMockSet, mockContext);
            unitTestHelper.setUpMockActivatedReservations(new List <ActivatedReservation>(), activatedReservationMockSet, mockContext);

            using (var csr = new CarReservationService(mockContext.Object))
            {
                var reservation = reservationMockSet.Object.First();

                var asyncActivatedReservation = csr.activateReservation(reservation.id);
                asyncActivatedReservation.Wait();
                var activatedReservation = asyncActivatedReservation.Result;

                activatedReservationMockSet.Verify(a => a.Add(It.IsAny <ActivatedReservation>()), Times.Once());
                mockContext.Verify(a => a.SaveChangesAsync(), Times.Once());
            }
        }