public void CalculateStaffel_Vip_2Res_ShouldBeCorrect()
        {
            VipServicesContextTest contextTest   = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m             = new VipServicesManager(new UnitOfWork(contextTest));
            LimousineRepository    limousineRepo = new LimousineRepository(contextTest);

            StaffelDiscountTestInitialize();

            Address  address  = new Address("Groenlaan", "17", "Herzele");
            Customer customer = new Customer("Jan", "BE0502358347", address, CategoryType.vip);

            m.AddLimousine("Chrysler", "300C Limousine", "White", 175, 800, 500, 1000);
            Limousine limousine = limousineRepo.Find(1);

            m.AddWeddingReservation(customer, address, new Location("Gent"), new Location("Brussel"),
                                    new DateTime(2020, 09, 22, 10, 0, 0), new DateTime(2020, 09, 22, 20, 0, 0), limousine);
            m.AddWeddingReservation(customer, address, new Location("Gent"), new Location("Brussel"),
                                    new DateTime(2020, 09, 23, 10, 0, 0), new DateTime(2020, 09, 23, 20, 0, 0), limousine);

            Action act = () =>
            {
                m.CalculateStaffel(customer);
            };

            act.Should().NotThrow <Exception>();
            Assert.AreEqual(m.CalculateStaffel(customer), 5);
        }
示例#2
0
        public void GetAllAvailableLimousines_LimousineNotAvailable_ShouldNotShow()
        {
            VipServicesContextTest contextTest   = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m             = new VipServicesManager(new UnitOfWork(contextTest));
            LimousineRepository    limousineRepo = new LimousineRepository(contextTest);

            Address  addressCustomer          = new Address("Groenlaan", "17", "Herzele");
            Address  limousineExceptedAddress = new Address("Nieuwstraat", "5B", "Brussel");
            Customer customer        = new Customer("Jan", "", addressCustomer, CategoryType.particulier);
            Location locationStart   = new Location("Gent");
            Location locationArrival = new Location("Brussel");
            DateTime startTime       = new DateTime(2020, 09, 22, 20, 0, 0);
            DateTime endTime         = new DateTime(2020, 09, 23, 3, 0, 0);

            //Niet beschikbaar - al gereserveerd
            m.AddLimousine("Chrysler", "300C Limousine", "White", 175, 800, 500, 1000);
            Limousine limousineChrysler = limousineRepo.Find(1);

            m.AddNightLifeReservation(customer, limousineExceptedAddress, locationStart, locationArrival, startTime,
                                      endTime, limousineChrysler);

            List <Limousine> limousines = m.GetAllAvailableLimousines(startTime, endTime, ArrangementType.NightLife);

            Assert.AreEqual(1, contextTest.Limousines.Local.Count);
            Assert.AreEqual(1, contextTest.Reservations.Local.Count);
            Assert.AreEqual(limousines.Count, 0);
        }
示例#3
0
        public void GetAllAvailableLimousines_AvailableLimousine_ShouldWork()
        {
            VipServicesContextTest contextTest   = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m             = new VipServicesManager(new UnitOfWork(contextTest));
            LimousineRepository    limousineRepo = new LimousineRepository(contextTest);

            Address  addressCustomer          = new Address("Groenlaan", "17", "Herzele");
            Address  limousineExceptedAddress = new Address("Nieuwstraat", "5B", "Brussel");
            Customer customer        = new Customer("Jan", "", addressCustomer, CategoryType.particulier);
            Location locationStart   = new Location("Gent");
            Location locationArrival = new Location("Brussel");

            m.AddLimousine("Chrysler", "300C Limousine", "White", 175, 800, 500, 1000);
            Limousine limousineChrysler = limousineRepo.Find(1);

            // 6 uur ervoor
            m.AddBusinessReservation(customer, limousineExceptedAddress, locationStart, locationArrival,
                                     new DateTime(2020, 09, 22, 0, 0, 0), new DateTime(2020, 09, 22, 2, 0, 0), limousineChrysler);

            // 6 uur erna
            m.AddBusinessReservation(customer, limousineExceptedAddress, locationStart, locationArrival,
                                     new DateTime(2020, 09, 22, 16, 0, 0), new DateTime(2020, 09, 22, 18, 0, 0), limousineChrysler);

            List <Limousine> limousines = m.GetAllAvailableLimousines(new DateTime(2020, 09, 22, 8, 0, 0),
                                                                      new DateTime(2020, 09, 22, 10, 0, 0), ArrangementType.NightLife);

            Assert.AreEqual(1, contextTest.Limousines.Local.Count);
            Assert.AreEqual(2, contextTest.Reservations.Local.Count);
            Assert.AreEqual(limousines.Count, 1);
        }
示例#4
0
        public void AddWelnessReservation_WithLessThen10Hours_ShouldThrowException()
        {
            VipServicesContextTest contextTest   = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m             = new VipServicesManager(new UnitOfWork(contextTest));
            LimousineRepository    limousineRepo = new LimousineRepository(contextTest);

            Address  addressCustomer          = new Address("Groenlaan", "17", "Herzele");
            Address  limousineExceptedAddress = new Address("Nieuwstraat", "5B", "Brussel");
            Customer customer        = new Customer("Jan", "", addressCustomer, CategoryType.particulier);
            Location locationStart   = new Location("Gent");
            Location locationArrival = new Location("Brussel");
            DateTime startTime       = new DateTime(2020, 09, 22, 12, 0, 0);
            DateTime endTime         = new DateTime(2020, 09, 22, 19, 0, 0);
            TimeSpan totalHours      = endTime - startTime;

            m.AddLimousine("Tesla", "Model X", "White", 600, 1500, 2500, 2700);
            Limousine limousine = limousineRepo.Find(1);

            Action act = () =>
            {
                m.AddWelnessReservation(customer, limousineExceptedAddress, locationStart, locationArrival,
                                        startTime, endTime, limousine);
            };

            act.Should().Throw <DomainException>().WithMessage("Een Welness reservatie moet altijd 10 uur zijn.");
        }
        public void StaffelDiscountTestInitialize()
        {
            VipServicesContextTest contextTest = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m           = new VipServicesManager(new UnitOfWork(contextTest));
            CategoryType           vip         = CategoryType.vip;
            StaffelDiscount        staffel1    = new StaffelDiscount(2, 5, vip);
            StaffelDiscount        staffel2    = new StaffelDiscount(7, 7.5, vip);
            StaffelDiscount        staffel3    = new StaffelDiscount(15, 10, vip);

            m.AddStaffel(staffel1);
            m.AddStaffel(staffel2);
            m.AddStaffel(staffel3);

            CategoryType    planner  = CategoryType.huwelijksplanner;
            StaffelDiscount staffel4 = new StaffelDiscount(5, 7.5, planner);
            StaffelDiscount staffel5 = new StaffelDiscount(10, 10, planner);
            StaffelDiscount staffel6 = new StaffelDiscount(15, 12.5, planner);
            StaffelDiscount staffel7 = new StaffelDiscount(20, 15, planner);
            StaffelDiscount staffel8 = new StaffelDiscount(25, 25, planner);

            m.AddStaffel(staffel4);
            m.AddStaffel(staffel5);
            m.AddStaffel(staffel6);
            m.AddStaffel(staffel7);
            m.AddStaffel(staffel8);
        }
示例#6
0
        public void GetAllCustomers_ShouldWork()
        {
            VipServicesContextTest contextTest = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m           = new VipServicesManager(new UnitOfWork(contextTest));

            Action act = () =>
            {
                m.AddCustomer("Jan", "BE0502358347", new Address("Groenlaan", "17", "Herzele"), CategoryType.geen);
                m.AddCustomer("Bob", "", new Address("Dorpstraat", "101", "Antwerpen"), CategoryType.concertpromotor);
                m.AddCustomer("Piet", "", new Address("Schoolstraat", "80", "Blankenberge"), CategoryType.huwelijksplanner);
            };

            act.Should().NotThrow <DomainException>();
            Assert.AreEqual(3, contextTest.Customers.Local.Count);
        }
        public void CalculateStaffel_None_ShouldBeCorrect()
        {
            VipServicesContextTest contextTest = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m           = new VipServicesManager(new UnitOfWork(contextTest));

            Address  address  = new Address("Groenlaan", "17", "Herzele");
            Customer customer = new Customer("Jan", "BE0502358347", address, CategoryType.geen);

            Action act = () =>
            {
                m.CalculateStaffel(customer);
            };

            act.Should().NotThrow <Exception>();
            Assert.AreEqual(m.CalculateStaffel(customer), 0);
        }
示例#8
0
        public void GetAllAvailableLimousines_ArrangementNotAvailable_ShouldNotShow()
        {
            VipServicesContextTest contextTest   = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m             = new VipServicesManager(new UnitOfWork(contextTest));
            LimousineRepository    limousineRepo = new LimousineRepository(contextTest);

            DateTime startTime = new DateTime(2020, 09, 22, 20, 0, 0);
            DateTime endTime   = new DateTime(2020, 09, 23, 3, 0, 0);

            m.AddLimousine("Lincoln", "Limousine", "Pink", 180, 0, 850, 1000);

            List <Limousine> limousines = m.GetAllAvailableLimousines(startTime, endTime, ArrangementType.NightLife);

            Assert.AreEqual(1, contextTest.Limousines.Local.Count);
            Assert.AreEqual(limousines.Count, 0);
        }
        public void GetReservation_ShouldWork()
        {
            VipServicesContextTest contextTest   = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m             = new VipServicesManager(new UnitOfWork(contextTest));
            LimousineRepository    limousineRepo = new LimousineRepository(contextTest);

            Address  addressCustomer          = new Address("Groenlaan", "17", "Herzele");
            Address  limousineExceptedAddress = new Address("Nieuwstraat", "5B", "Brussel");
            Customer customer        = new Customer("Jan", "", addressCustomer, CategoryType.particulier);
            Location locationStart   = new Location("Gent");
            Location locationArrival = new Location("Brussel");
            DateTime startTime       = new DateTime(2020, 09, 22, 8, 0, 0);
            DateTime endTime         = new DateTime(2020, 09, 22, 18, 0, 0);
            TimeSpan totalHours      = endTime - startTime;

            m.AddLimousine("Tesla", "Model X", "White", 600, 1500, 2500, 2700);
            Limousine limousine = limousineRepo.Find(1);

            double discountPercentage = m.CalculateStaffel(customer);
            Price  price = PriceCalculator.WeddingPriceCalculator
                               (limousine, totalHours, startTime, endTime, discountPercentage);
            Reservation weddingReservation = new Reservation(customer, DateTime.Now, limousineExceptedAddress, locationStart, locationArrival,
                                                             ArrangementType.Wedding, startTime, endTime, totalHours, limousine, price);

            m.AddWeddingReservation(customer, limousineExceptedAddress, locationStart, locationArrival,
                                    startTime, endTime, limousine);

            Action act = () =>
            {
                m.GetReservation(1);
            };

            act.Should().NotThrow <Exception>();
            Assert.AreEqual(1, contextTest.Reservations.Local.Count);
            var reservationInDb = m.GetReservation(1);

            Assert.AreEqual(reservationInDb.Customer, weddingReservation.Customer);
            Assert.AreEqual(reservationInDb.LimousineExpectedAddress, weddingReservation.LimousineExpectedAddress);
            Assert.AreEqual(reservationInDb.StartLocation, weddingReservation.StartLocation);
            Assert.AreEqual(reservationInDb.ArrivalLocation, weddingReservation.ArrivalLocation);
            Assert.AreEqual(reservationInDb.ArrangementType, weddingReservation.ArrangementType);
            Assert.AreEqual(reservationInDb.StartTime, weddingReservation.StartTime);
            Assert.AreEqual(reservationInDb.EndTime, weddingReservation.EndTime);
            Assert.AreEqual(reservationInDb.TotalHours, weddingReservation.TotalHours);
            Assert.AreEqual(reservationInDb.Limousine, weddingReservation.Limousine);
            Assert.AreEqual(reservationInDb.Price.Total, weddingReservation.Price.Total);
        }
示例#10
0
        public void AddLocation_ShouldWork()
        {
            VipServicesContextTest contextTest = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m           = new VipServicesManager(new UnitOfWork(contextTest));

            Location location = new Location("Brussel");

            Action act = () =>
            {
                m.AddLocation("Brussel");
            };

            act.Should().NotThrow <Exception>();
            Assert.AreEqual(1, contextTest.Locations.Local.Count);
            var locationInDB = contextTest.Locations.First();

            Assert.AreEqual(locationInDB.Town, location.Town);
        }
示例#11
0
        public void GetAllLimousines_ShouldWork()
        {
            VipServicesContextTest contextTest = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m           = new VipServicesManager(new UnitOfWork(contextTest));

            m.AddLimousine("Chrysler", "300C Limousine", "White", 175, 800, 500, 1000);
            m.AddLimousine("Lincoln", "Limousine", "Pink", 180, 900, 500, 1000);
            m.AddLimousine("Tesla", "Model S", "White", 500, 0, 2000, 2200);

            Action act = () =>
            {
                m.GetAllLimousines();
            };

            act.Should().NotThrow <DomainException>();
            Assert.AreEqual(3, contextTest.Limousines.Local.Count);
            Assert.AreEqual(3, m.GetAllLimousines().Count);
        }
示例#12
0
        public void AddAddress_ShouldWork()
        {
            VipServicesContextTest contextTest = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m           = new VipServicesManager(new UnitOfWork(contextTest));

            Address address = new Address("Groenlaan", "17", "Herzele");

            Action act = () =>
            {
                m.AddAddress("Groenlaan", "17", "Herzele");
            };

            act.Should().NotThrow <DomainException>();
            Assert.AreEqual(1, contextTest.Addresses.Local.Count);
            var addressInDb = contextTest.Addresses.First();

            Assert.AreEqual(addressInDb.StreetName, address.StreetName);
            Assert.AreEqual(addressInDb.StreetNumber, address.StreetNumber);
            Assert.AreEqual(addressInDb.Town, address.Town);
        }
示例#13
0
        public void GetAllLocations_ShouldWork()
        {
            VipServicesContextTest contextTest = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m           = new VipServicesManager(new UnitOfWork(contextTest));

            m.AddLocation("Brussel");
            m.AddLocation("Gent");
            m.AddLocation("Antwerpen");
            m.AddLocation("Brugge");
            m.AddLocation("Luik");

            Action act = () =>
            {
                m.GetAllLocations();
            };

            act.Should().NotThrow <Exception>();
            Assert.AreEqual(5, contextTest.Locations.Local.Count);
            Assert.AreEqual(5, m.GetAllLocations().Count);
        }
        public void AddStaffel_ShouldWork()
        {
            VipServicesContextTest contextTest = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m           = new VipServicesManager(new UnitOfWork(contextTest));

            StaffelDiscount staffelDiscount = new StaffelDiscount(5, 5, CategoryType.concertpromotor);

            Action act = () =>
            {
                m.AddStaffel(staffelDiscount);
            };

            act.Should().NotThrow <Exception>();
            Assert.AreEqual(1, contextTest.StaffelDiscounts.Local.Count);
            var staffelInDB = contextTest.StaffelDiscounts.First();

            Assert.AreEqual(staffelInDB.Category, CategoryType.concertpromotor);
            Assert.AreEqual(staffelInDB.NumberOfBookedReservations, 5);
            Assert.AreEqual(staffelInDB.DiscountPercentage, 5);
        }
        public void GetAllReservations_CustomerId_ShouldWork()
        {
            VipServicesContextTest contextTest   = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m             = new VipServicesManager(new UnitOfWork(contextTest));
            LimousineRepository    limousineRepo = new LimousineRepository(contextTest);

            Address  addressCustomer          = new Address("Groenlaan", "17", "Herzele");
            Address  limousineExceptedAddress = new Address("Nieuwstraat", "5B", "Brussel");
            Customer customer        = new Customer("Jan", "", addressCustomer, CategoryType.particulier);
            Customer customer2       = new Customer("Piet", "", addressCustomer, CategoryType.concertpromotor);
            Location locationStart   = new Location("Gent");
            Location locationArrival = new Location("Brussel");
            DateTime startTime       = new DateTime(2020, 09, 22, 8, 0, 0);
            DateTime endTime         = new DateTime(2020, 09, 22, 18, 0, 0);

            m.AddLimousine("Tesla", "Model X", "White", 600, 1500, 2500, 2700);

            //2 reservaties door dezelfde klant
            Limousine limousine1 = limousineRepo.Find(1);

            m.AddWeddingReservation(customer, limousineExceptedAddress, locationStart, locationArrival,
                                    startTime, endTime, limousine1);
            Limousine limousine2 = limousineRepo.Find(1);

            m.AddBusinessReservation(customer, limousineExceptedAddress, locationStart, locationArrival,
                                     new DateTime(2020, 09, 09, 1, 0, 0), new DateTime(2020, 09, 09, 9, 0, 0), limousine2);
            Limousine limousine3 = limousineRepo.Find(1);

            //1 reservatie door een andere klant
            m.AddBusinessReservation(customer2, limousineExceptedAddress, locationStart, locationArrival,
                                     new DateTime(2020, 09, 30, 1, 0, 0), new DateTime(2020, 09, 30, 9, 0, 0), limousine3);

            Action act = () =>
            {
                m.GetAllReservations(customer.CustomerNumber);
            };

            act.Should().NotThrow <Exception>();
            Assert.AreEqual(3, contextTest.Reservations.Local.Count);
            Assert.AreEqual(m.GetAllReservations(customer.CustomerNumber).Count, 2);
        }
示例#16
0
        public void AddCustomer_ShouldWork()
        {
            VipServicesContextTest contextTest = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m           = new VipServicesManager(new UnitOfWork(contextTest));

            Address  address  = new Address("Groenlaan", "17", "Herzele");
            Customer customer = new Customer("Jan", "BE0502358347", address, CategoryType.geen);

            Action act = () =>
            {
                m.AddCustomer("Jan", "BE0502358347", address, CategoryType.geen);
            };

            act.Should().NotThrow <DomainException>();
            Assert.AreEqual(1, contextTest.Customers.Local.Count);
            var customerInDb = contextTest.Customers.First();

            Assert.AreEqual(customerInDb.Name, customer.Name);
            Assert.AreEqual(customerInDb.BtwNumber, customer.BtwNumber);
            Assert.AreEqual(customerInDb.Address, customer.Address);
            Assert.AreEqual(customerInDb.Category, customer.Category);
        }
示例#17
0
        public void AddLimousine_ShouldWork()
        {
            VipServicesContextTest contextTest = new VipServicesContextTest(keepExistingDB: false);
            VipServicesManager     m           = new VipServicesManager(new UnitOfWork(contextTest));

            Limousine limousine = new Limousine("Chrysler", "300C Limousine", "White", 175, 800, 500, 1000);

            Action act = () =>
            {
                m.AddLimousine("Chrysler", "300C Limousine", "White", 175, 800, 500, 1000);
            };

            act.Should().NotThrow <DomainException>();
            Assert.AreEqual(1, contextTest.Limousines.Local.Count);
            var limousinesInDb = contextTest.Limousines.First();

            Assert.AreEqual(limousinesInDb.Brand, limousine.Brand);
            Assert.AreEqual(limousinesInDb.Model, limousine.Model);
            Assert.AreEqual(limousinesInDb.Color, limousine.Color);
            Assert.AreEqual(limousinesInDb.FirstHourPrice, limousine.FirstHourPrice);
            Assert.AreEqual(limousinesInDb.NightLifePrice, limousine.NightLifePrice);
            Assert.AreEqual(limousinesInDb.WeddingPrice, limousine.WeddingPrice);
            Assert.AreEqual(limousinesInDb.WelnessPrice, limousine.WelnessPrice);
        }