示例#1
0
        public async Task AddReservation_RoomAvailable_ReservationCreated()
        {
            var reservation = new Reservation
            {
                Id         = 10,
                CheckIn    = checkInDate,
                CheckOut   = checkOutDate,
                GuestId    = secondGuest,
                RoomId     = secondRoom,
                TotalPrice = pricePerNight
            };

            await reservationRepository.AddAsync(reservation);

            var reservationCount = await reservationRepository
                                   .CountAsync(new GuestReservationSpecification(secondGuest));

            Assert.That(reservationCount, Is.EqualTo(2));
        }
示例#2
0
        public async Task ShouldAddNewReservation()
        {
            //Arrange
            var context      = new iReceptionDbContext(DbOptions);
            var roomToReturn = new Room
            {
                PricePerDay = 10
            };
            await context.Rooms.AddAsync(roomToReturn);

            await context.SaveChangesAsync();

            var repository   = new ReservationRepository(context);
            var convertedDto = new Reservation
            {
                StartDate = new DateTime(2020, 7, 23),
                EndDate   = new DateTime(2020, 7, 30),
                RoomId    = 1,
                ClientId  = 1,
            };

            //Act
            var actual = await repository.AddAsync(convertedDto);

            var actualObject = await context.Reservations.OrderByDescending(r => r.Id).FirstOrDefaultAsync();

            var expected        = 1;
            var expectedBalance =
                (convertedDto.EndDate - convertedDto.StartDate).Days * roomToReturn.PricePerDay;


            //Assert
            Assert.Equal(expected, actual);
            Assert.Equal(expectedBalance, actualObject.Balance);
            Assert.False(actualObject.IsPaid);
            Assert.False(actualObject.Active);
            Assert.False(actualObject.IsDeleted);
        }
        public async Task InitDemoDataAsync()
        {
            var brands = await BrandRepository.GetAllAsync();

            if (brands.Any())
            {
                return; // already initialized
            }
            var brandA = new CarBrand
            {
                Title = "Audi"
            };

            var brandB = new CarBrand
            {
                Title = "BMW"
            };

            var brandC = new CarBrand
            {
                Title = "Fiat"
            };

            brandA = await BrandRepository.AddAsync(brandA);

            brandB = await BrandRepository.AddAsync(brandB);

            brandC = await BrandRepository.AddAsync(brandC);

            var classA = new CarClass
            {
                Title = "Cheap",
                Cost  = 102.20M
            };

            var classB = new CarClass
            {
                Title = "Midlevel",
                Cost  = 180.50M
            };

            var classC = new CarClass
            {
                Title = "Highend",
                Cost  = 250.99M
            };

            classA = await ClassRepository.AddAsync(classA);

            classB = await ClassRepository.AddAsync(classB);

            classC = await ClassRepository.AddAsync(classC);

            var typeA = new CarType
            {
                Title = "PKW"
            };

            var typeB = new CarType
            {
                Title = "Limousine"
            };

            var typeC = new CarType
            {
                Title = "Coupé"
            };

            typeA = await TypeRepository.AddAsync(typeA);

            typeB = await TypeRepository.AddAsync(typeB);

            typeC = await TypeRepository.AddAsync(typeC);

            var customerA = new Customer
            {
                FirstName   = "Peter",
                LastName    = "Müller",
                Address     = "Mordorweg 4, 8355 Gondor",
                EMail       = "*****@*****.**",
                PhoneNumber = "79 546 65 65"
            };

            var customerB = new Customer
            {
                FirstName   = "Maria",
                LastName    = "Meier",
                Address     = "Rohangasse 23, 5564 Auenland",
                EMail       = "*****@*****.**",
                PhoneNumber = "76 215 54 64"
            };

            var customerC = new Customer
            {
                FirstName   = "Bruno",
                LastName    = "Gander",
                Address     = "Isengardweg 3, 5445 Helmsklamm",
                EMail       = "*****@*****.**",
                PhoneNumber = "76 651 12 35"
            };

            customerA = await CustomerRepository.AddAsync(customerA);

            customerB = await CustomerRepository.AddAsync(customerB);

            customerC = await CustomerRepository.AddAsync(customerC);

            var carA = new Car
            {
                BrandId          = brandA.Id,
                ClassId          = classA.Id,
                HorsePower       = 112,
                Kilometers       = 216535,
                RegistrationYear = 2000,
                TypeId           = typeA.Id
            };

            var carB = new Car
            {
                BrandId          = brandB.Id,
                ClassId          = classB.Id,
                HorsePower       = 212,
                Kilometers       = 116535,
                RegistrationYear = 2010,
                TypeId           = typeB.Id
            };

            var carC = new Car
            {
                BrandId          = brandC.Id,
                ClassId          = classC.Id,
                HorsePower       = 312,
                Kilometers       = 16535,
                RegistrationYear = 2018,
                TypeId           = typeC.Id
            };

            carA = await CarRepository.AddAsync(carA);

            carB = await CarRepository.AddAsync(carB);

            carC = await CarRepository.AddAsync(carC);

            var reservationA = new Reservation
            {
                CarId           = carA.Id,
                CustomerId      = customerA.Id,
                Days            = 12,
                RentalDate      = DateTime.Now.AddDays(12),
                ReservationDate = DateTime.Now,
                State           = ReservationState.Pending
            };

            var reservationB = new Reservation
            {
                CustomerId      = customerB.Id,
                CarId           = carB.Id,
                Days            = 2,
                RentalDate      = DateTime.Now.AddDays(1),
                ReservationDate = DateTime.Now.AddDays(-3),
                State           = ReservationState.Reserved
            };

            var reservationC = new Reservation
            {
                CustomerId      = customerC.Id,
                CarId           = carC.Id,
                Days            = 42,
                RentalDate      = DateTime.Now.AddDays(-2),
                ReservationDate = DateTime.Now.AddDays(-8),
                State           = ReservationState.Contracted
            };

            await ReservationRepository.AddAsync(reservationA);

            await ReservationRepository.AddAsync(reservationB);

            reservationC = await ReservationRepository.AddAsync(reservationC);

            var contractA = new RentalContract
            {
                CarId         = carC.Id,
                CustomerId    = customerC.Id,
                Days          = 42,
                RentalDate    = DateTime.Now.AddDays(-2),
                ReservationId = reservationC.Id,
                TotalCosts    = classC.Cost * 42
            };

            await ContractRepository.AddAsync(contractA);
        }