public void AddLectur_ValidCourseId_ShouldAddToCourse()
        {
            var controller = new CoursesController(this.mockedData, new User("nasko", "123456", Role.Lecturer));

            var view = controller.AddLecture(5, DateTime.Now.ToString());

            Assert.IsNotNull(view);
            Assert.AreEqual(this.course.Lectures.First().Name, DateTime.Now.ToString());
        }
        public void AddLecture_WithValidInput_ShouldCallDatabaseCourses()
        {
            var database = new Mock<IBangaloreUniversityDatabase>();
            database.Setup(a => a.Courses.Get(It.IsAny<int>())).Returns(new Course("Test1234"));

            var courseController = new CoursesController(database.Object, new User("Ivan Ivanov", "123456", Role.Lecturer));

            var result = courseController.AddLecture(1, "TestLecture");

            database.Verify(a => a.Courses.Get(It.IsAny<int>()), Times.Exactly(1));
        }
        public void TestAddLecture_InvalidUser_ShouldThrow()
        {
            var course = new Course("Very advanced Java");
            var mockedData = new Mock<IBangaloreUniversityData>();
            var mockedCourseRepo = new Mock<IRepository<Course>>();
            mockedCourseRepo.Setup(repo => repo.Get(It.IsAny<int>())).Returns(course);
            mockedData.Setup(data => data.Courses).Returns(mockedCourseRepo.Object);

            var controller = new CoursesController(mockedData.Object, null);

            controller.AddLecture(12, "");
        }
        public void TestAddLecture_InvalidCourseId_ShouldThrow()
        {
            Course course = null;
            var mockedData = new Mock<IBangaloreUniversityData>();
            var mockedCourseRepo = new Mock<IRepository<Course>>();
            mockedCourseRepo.Setup(repo => repo.Get(It.IsAny<int>())).Returns(course);
            mockedData.Setup(data => data.Courses).Returns(mockedCourseRepo.Object);

            var controller = new CoursesController(mockedData.Object, new User("asdfff", "1as65df1", Role.Lecturer));

            controller.AddLecture(1, "");
        }
        public void TestAddLecture_InvalidUserRole_ShouldThrow()
        {
            var course = new Course("Advanced Java");
            var mockedData = new Mock<IBangaloreUniversityData>();
            var mockedCoursesRepo = new Mock<IRepository<Course>>();
            mockedCoursesRepo.Setup(repo => repo.Get(It.IsAny<int>())).Returns(course);
            mockedData.Setup(data => data.Courses).Returns(mockedCoursesRepo.Object);

            var controller = new CoursesController(
                mockedData.Object, new User("123456", "123456", Role.Student));

            var view = controller.AddLecture(800, "ABC");
        }
        public void AddLecture_WithValidInput_ShouldAddNewLectureToSpecifiedCourse()
        {
            var database = new Mock<IBangaloreUniversityDatabase>();
            var course = new Course("Test1234");
            Assert.AreEqual(0, course.Lectures.Count);
            database.Setup(a => a.Courses.Get(It.IsAny<int>())).Returns(course);

            var courseController = new CoursesController(database.Object, new User("Ivan Ivanov", "123456", Role.Lecturer));

            var result = courseController.AddLecture(5, "TestLecture");

            Assert.AreEqual(1, course.Lectures.Count);
        }
        public void AddLecture_ValidCourseId_ShouldAddToCourse()
        {
            // Arrange
            var controller = new CoursesController(this.mockedData, new User("Nasko", "123456", Role.Lecturer));

            string lectureName = DateTime.Now.ToString();

            // Act
            var view = controller.AddLecture(5, lectureName);

            // Assert
            Assert.AreEqual(this.course.Lectures.First().Name, lectureName);
            Assert.IsNotNull(view);
        }
        public void TestAddLecture_ValidCourse_ShouldAddToCourse()
        {
            var course = new Course("Advanced Java");
            var mockedData = new Mock<IBangaloreUniversityData>();
            var mockedCoursesRepo = new Mock<IRepository<Course>>();
            mockedCoursesRepo.Setup(repo => repo.Get(It.IsAny<int>())).Returns(course);
            mockedData.Setup(data => data.Courses).Returns(mockedCoursesRepo.Object);

            var controller = new CoursesController(
                mockedData.Object, new User("123456", "123456", Role.Lecturer));

            var view = controller.AddLecture(800, "ABC");

            Assert.AreEqual(course.Lectures.First().Name, "ABC");
            Assert.IsNotNull(view);
        }
        public void AddLecture_InvalidCourseId_ShouldThrow()
        {
            var dataMock = new Mock<IBangaloreUniversityData>();
            var courseRepoMock = new Mock<IRepository<Course>>();
            this.course = null;

            courseRepoMock.Setup(r => r.Get(It.IsAny<int>()))
                .Returns(this.course);

            dataMock.Setup(d => d.Courses)
                .Returns(courseRepoMock.Object);

            this.mockedData = dataMock.Object;

            var controller = new CoursesController(this.mockedData, new User("nasko", "123456", Role.Lecturer));

            var view = controller.AddLecture(5, DateTime.Now.ToString());
        }
        public void AddLecture_WithValidData_ReturnAnIViewObject()
        {
            var database = new Mock<IBangaloreUniversityDatabase>();
            var course = new Course("Test1234");
            Assert.AreEqual(0, course.Lectures.Count);
            database.Setup(a => a.Courses.Get(It.IsAny<int>())).Returns(course);

            var courseController = new CoursesController(database.Object, new User("Ivan Ivanov", "123456", Role.Lecturer));

            var result = courseController.AddLecture(5, "TestLecture");

            NUnit.Framework.Assert.IsInstanceOf(typeof(IView),result);
        }
        public void AddLecture_WithNonExistantCourse_ShouldThrowCorrectException()
        {
            var database = new Mock<IBangaloreUniversityDatabase>();
            Course course = null;
            database.Setup(a => a.Courses.Get(It.IsAny<int>())).Returns(course);

            var courseController = new CoursesController(database.Object, new User("Ivan Ivanov", "123456", Role.Lecturer));

            var exception = NUnit.Framework.Assert.Catch<ArgumentException>(
                () =>
                {
                    var result = courseController.AddLecture(5, "TestLecture");
                });
            Assert.AreEqual(string.Format(Constants.CourseDoesNotExist, 5), exception.Message);
        }
        public void AddLecture_WithIncorrectRole_ShouldThrowCorrectException()
        {
            var database = new Mock<IBangaloreUniversityDatabase>();
            var course = new Course("Test1234");
            database.Setup(a => a.Courses.Get(It.IsAny<int>())).Returns(course);

            var courseController = new CoursesController(database.Object, new User("Ivan ivanov", "123456", Role.Student));

            var exception = NUnit.Framework.Assert.Catch<AuthorizationFailedException>(
                () =>
                {
                    var result = courseController.AddLecture(5, "TestLecture");
                });
            Assert.AreEqual(Constants.NotAuthorized, exception.Message);
        }
        public void AddLecture_WithoutLoggedUser_ShouldThrowCorrectException()
        {
            var database = new Mock<IBangaloreUniversityDatabase>();
            var course = new Course("Test1234");
            database.Setup(a => a.Courses.Get(It.IsAny<int>())).Returns(course);

            var courseController = new CoursesController(database.Object, null);

            var exception = NUnit.Framework.Assert.Catch<ArgumentException>(
                () =>
                {
                    var result = courseController.AddLecture(5, "TestLecture");
                });
            Assert.AreEqual(Constants.NoLoggedInUserMessage, exception.Message);
        }