Esempio n. 1
0
        public async Task MaintenanceBooking()
        {
            //Init
            var classroomRepo = new TestClassroomRepository();
            var userRepo      = new TestUserRepository();
            var bookingRepo   = new TestBookingRepository();

            var managementService = new ManagementService();
            var bookingService    = new BookingService(bookingRepo, classroomRepo);

            var notifier = new TestNotifier();

            //Given
            var user    = TestUserRepository.GenerateUser();
            var booking = new Booking
            {
                Classroom  = "H.1.110",
                Week       = 25,
                WeekDay    = 2,
                StartBlock = 1,
                EndBlock   = 10,
                Type       = BookingType.Maintenance,
                Owner      = user.UserId,
            };

            //When
            var actualBookingResult = await managementService.MaintenanceBooking(classroomRepo, bookingRepo, userRepo,
                                                                                 bookingService, booking, user.UserId, notifier);

            //Then
            Assert.AreEqual(BookingAvailability.Success, actualBookingResult);
        }
        public void MostUsedClassroomByBookings()
        {
            //Init
            var repo    = new TestClassroomRepository();
            var service = new StatisticsService();

            //When
            repo.Classrooms.Add(new Classroom
            {
                Id       = Guid.NewGuid(),
                RoomId   = "H.1.110",
                Bookings = new List <Booking>
                {
                    new Booking
                    {
                        Id   = Guid.NewGuid(),
                        Week = 22
                    },
                    new Booking
                    {
                        Id   = Guid.NewGuid(),
                        Week = 22
                    }
                    ,
                    new Booking
                    {
                        Id   = Guid.NewGuid(),
                        Week = 22
                    }
                },
            });
            repo.Classrooms.Add(new Classroom
            {
                Id       = Guid.NewGuid(),
                RoomId   = "H.1.112",
                Bookings = new List <Booking>
                {
                    new Booking
                    {
                        Id   = Guid.NewGuid(),
                        Week = 22
                    },
                    new Booking
                    {
                        Id   = Guid.NewGuid(),
                        Week = 22
                    }
                },
            });

            var rooms = service.GetMostUsedClassroomsByBookings(repo, 1, 22);

            //Then
            Assert.AreEqual(rooms.Count, 1, "More  or less than one room was returned");
            Assert.AreEqual(rooms[0].RoomId, "H.1.110", "Wrong room was returned");
        }
Esempio n. 3
0
        public async Task MaintenanceBookingWithRealBlocking()
        {
            //Init
            var classroomRepo = new TestClassroomRepository();
            var userRepo      = new TestUserRepository();
            var bookingRepo   = new TestBookingRepository();

            var managementService = new ManagementService();
            var bookingService    = new BookingService(bookingRepo, classroomRepo);

            var notifier = new TestNotifier();

            //Given
            var user  = TestUserRepository.GenerateUser();
            var user2 = TestUserRepository.GenerateUser("TESTUSER2", TimeTableRole.Management);

            userRepo.Users.Add(user);
            userRepo.Users.Add(user2);

            var bookingBlocking = new Booking
            {
                Classroom  = "H.1.110",
                Week       = 25,
                WeekDay    = 2,
                StartBlock = 2,
                EndBlock   = 4,
                Type       = 0,
                Owner      = user2.UserId,
            };

            bookingRepo.Bookings.Add(bookingBlocking);


            //When
            var booking = new Booking
            {
                Classroom  = "H.1.110",
                Week       = 25,
                WeekDay    = 2,
                StartBlock = 1,
                EndBlock   = 10,
                Type       = BookingType.Maintenance,
                Owner      = user.UserId,
            };
            var actualBookingResult = await managementService.MaintenanceBooking(classroomRepo, bookingRepo, userRepo,
                                                                                 bookingService, booking, user.UserId, notifier);

            //Then
            Assert.AreEqual(BookingAvailability.Booked, actualBookingResult);
        }
        public void TestAvailability()
        {
            var classroomRepository = new TestClassroomRepository
            {
                //Given
                Courses = new List <Course>
                {
                    new Course()
                    {
                        Week       = 1,
                        WeekDay    = 1,
                        StartBlock = 2,
                        EndBlock   = 5,
                        Rooms      = new List <Classroom>()
                        {
                            new Classroom
                            {
                                RoomId = "H.1.110"
                            }
                        }
                    },
                    new Course()
                    {
                        Week       = 1,
                        WeekDay    = 1,
                        StartBlock = 7,
                        EndBlock   = 9,
                        Rooms      = new List <Classroom>()
                        {
                            new Classroom
                            {
                                RoomId = "H.1.110"
                            }
                        }
                    }
                }
            };
            var bookings          = new List <Booking>();
            var bookingRepository = new TestBookingRepository(bookings);

            var service         = new BookingService(bookingRepository, classroomRepository);
            var existingLessons = classroomRepository.GetCoursesByRoomAndWeek("H.1.110", 1);

            //When
            var booking1 = GenerateBooking("H.1.110", 1, 1, 1, 1);  // 1-1 out 2-5 and 7-9 -> 0
            var booking2 = GenerateBooking("H.1.110", 3, 5, 1, 1);  // 3-5 in 2-5 and under 7-9 -> 1
            var booking3 = GenerateBooking("H.1.110", 3, 9, 1, 1);  // 3-9 in 2-5 and 7-9 -> 2
            var booking4 = GenerateBooking("H.1.110", 8, 10, 1, 1); // 8-11 out 2-5 and in 7-9 -> 1

            //Then
            var availability1 = service.CourseAvailability(existingLessons, booking1);

            Assert.AreEqual(0, availability1.Count, "A1 failed");

            var availability2 = service.CourseAvailability(existingLessons, booking2);

            Assert.AreEqual(1, availability2.Count, "A2 failed");

            var availability3 = service.CourseAvailability(existingLessons, booking3);

            Assert.AreEqual(2, availability3.Count, "A3 failed");

            var availability4 = service.CourseAvailability(existingLessons, booking4);

            Assert.AreEqual(1, availability4.Count, "A4 failed");
        }