public async Task GetSingle_404()
        {
            var controller   = new LecturesController(this.EmptyMockRepository);
            var actionResult = await controller.Get(new Random().Next(10, int.MaxValue));

            var modelResult = Assert.IsType <NotFoundResult>(actionResult);
        }
        public async Task GetAll_404()
        {
            var controller   = new LecturesController(this.EmptyMockRepository);
            var actionResult = await controller.Get();

            var modelResult = Assert.IsType <NotFoundResult>(actionResult);
        }
        public async Task GetSingle_200()
        {
            var controller   = new LecturesController(this.NomalMockRepository);
            var actionResult = await controller.Get(this.TestData.First().LectureId);

            var modelResult = Assert.IsType <OkObjectResult>(actionResult);
            var model       = Assert.IsType <LectureJson>(modelResult.Value);
            var mockData    = await this.NomalMockRepository.GetAllAsync();

            Assert.Equal(mockData.First().LectureId, model.LectureId);
        }
        public void LecturesController_Get_ShouldReturnNotFoundIfIDIsNotValid(string id)
        {
            //Arrange
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseMySql(ConnectionString)
                          .Options;
            var context    = new ApplicationDbContext(options);
            var controller = new LecturesController(context);

            //Act
            var result = controller.Get(id).Value;

            //Assert
            result.Should().BeNullOrEmpty();
        }
        public void LecturesController_Get_ShouldGetAsMuchLecturesAsThereAreInTheDatabaseForIndividualIDs(string id)
        {
            //Arrange
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseMySql(ConnectionString)
                          .Options;
            var context       = new ApplicationDbContext(options);
            var controller    = new LecturesController(context);
            var lecturesCount = context.Timetables.Where(x => x.StudentId == id).ToList().Count;

            //Act
            var result = controller.Get(id).Value.Count;

            //Assert
            Assert.Equal(lecturesCount, result);
        }
        public void LecturesController_GetClassrooms_ShouldGetAllClassroomsFromTheDatabase()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <ApplicationDbContext>()
                          .UseMySql(ConnectionString)
                          .Options;
            var context    = new ApplicationDbContext(options);
            var controller = new LecturesController(context);
            var classrooms = context.Classrooms.ToListAsync().Result;

            //Act
            var result = controller.GetClassrooms().Result.Value;

            //Assert
            Assert.NotEmpty(result);
            Assert.Equal(context.Classrooms, result);
        }
        //private List<Lecture> lectureList;

        public LecturesControllerTest() : base()
        {
            controller = new LecturesController(context);

            //GRUPES
            context.Groups.Add(new Group()
            {
                Name          = "IFF-5/1",
                StudentsCount = 20
            });

            context.Groups.Add(new Group()
            {
                Name          = "IFF-5/2",
                StudentsCount = 20
            });

            context.Groups.Add(new Group()
            {
                Name          = "IFF-5/3",
                StudentsCount = 20
            });

            //AUDITORIJOS
            context.ClassRooms.Add(new ClassRoom()
            {
                IsPCavailable  = true,
                Name           = "101",
                NumberOfPlaces = 30,
                Type           = "Praktine"
            });

            context.ClassRooms.Add(new ClassRoom()
            {
                IsPCavailable  = true,
                Name           = "102",
                NumberOfPlaces = 30,
                Type           = "Praktine"
            });

            context.ClassRooms.Add(new ClassRoom()
            {
                IsPCavailable  = true,
                Name           = "103",
                NumberOfPlaces = 30,
                Type           = "Praktine"
            });

            //MOKYTOJAI
            context.Teachers.Add(new Teacher()
            {
                FirstName = "Juozas",
                LastName  = "Zuokas",
                Module    = "Matematika"
            });

            context.Teachers.Add(new Teacher()
            {
                FirstName = "Petras",
                LastName  = "Mazeikis",
                Module    = "Fizika"
            });

            context.Teachers.Add(new Teacher()
            {
                FirstName = "Arnas",
                LastName  = "Gelezinis",
                Module    = "Programavimas"
            });

            //LAIKAI
            context.LectureTimes.Add(new LectureTime()
            {
                Start = new TimeSpan(10, 30, 0),
                End   = new TimeSpan(12, 0, 0)
            });

            context.LectureTimes.Add(new LectureTime()
            {
                Start = new TimeSpan(13, 0, 0),
                End   = new TimeSpan(14, 30, 0)
            });

            context.LectureTimes.Add(new LectureTime()
            {
                Start = new TimeSpan(15, 0, 0),
                End   = new TimeSpan(16, 30, 0)
            });

            //DIENOS
            context.Weekdays.Add(new Weekday()
            {
                Name = "Pirmadienis"
            });

            context.Weekdays.Add(new Weekday()
            {
                Name = "Antradienis"
            });

            context.Weekdays.Add(new Weekday()
            {
                Name = "Treciadienis"
            });

            //MODULIAI
            context.Subjects.Add(new Subject()
            {
                Name = "Matematika",
                Code = "123"
            });

            context.Subjects.Add(new Subject()
            {
                Name = "Fizika",
                Code = "456"
            });

            context.Subjects.Add(new Subject()
            {
                Name = "Programavimas",
                Code = "789"
            });

            List <Teacher>     teacherList     = context.Teachers.ToList();
            List <Group>       groupList       = context.Groups.ToList();
            List <LectureTime> lectureTimeList = context.LectureTimes.ToList();
            List <ClassRoom>   classRoomsList  = context.ClassRooms.ToList();
            List <Weekday>     weekDayList     = context.Weekdays.ToList();
            List <Subject>     subjectList     = context.Subjects.ToList();

            context.Lectures.Add(new Lecture()
            {
                TeacherID     = teacherList[0].ID,
                GroupID       = groupList[0].ID,
                LectureTimeID = lectureTimeList[0].ID,
                ClassRoomID   = classRoomsList[0].ID,
                WeekdayID     = weekDayList[0].ID,
                SubjectID     = subjectList[0].ID,
                Type          = "Praktine",
                IsPcRequired  = false
            });
            context.Lectures.Add(new Lecture()
            {
                TeacherID     = teacherList[1].ID,
                GroupID       = groupList[1].ID,
                LectureTimeID = lectureTimeList[1].ID,
                ClassRoomID   = classRoomsList[1].ID,
                WeekdayID     = weekDayList[1].ID,
                SubjectID     = subjectList[1].ID,
                Type          = "Praktine",
                IsPcRequired  = false
            });
            context.Lectures.Add(new Lecture()
            {
                TeacherID     = teacherList[2].ID,
                GroupID       = groupList[2].ID,
                LectureTimeID = lectureTimeList[2].ID,
                ClassRoomID   = classRoomsList[2].ID,
                WeekdayID     = weekDayList[2].ID,
                SubjectID     = subjectList[2].ID,
                Type          = "Praktine",
                IsPcRequired  = false
            });
            context.Lectures.Add(new Lecture()
            {
                TeacherID     = teacherList[0].ID,
                GroupID       = groupList[0].ID,
                LectureTimeID = lectureTimeList[1].ID,
                ClassRoomID   = classRoomsList[1].ID,
                WeekdayID     = weekDayList[2].ID,
                SubjectID     = subjectList[0].ID,
                Type          = "Praktine",
                IsPcRequired  = false
            });
            context.Lectures.Add(new Lecture()
            {
                TeacherID     = teacherList[0].ID,
                GroupID       = groupList[0].ID,
                LectureTimeID = lectureTimeList[2].ID,
                ClassRoomID   = classRoomsList[1].ID,
                WeekdayID     = weekDayList[1].ID,
                SubjectID     = subjectList[0].ID,
                Type          = "Praktine",
                IsPcRequired  = false
            });

            List <Lecture> lectureList = context.Lectures.ToList();

            context.SaveChanges();
        }