public async Task ShouldReturnOkWithEmptyListIfModuleHasZeroStudents_GetStudentsByModule()
        {
            Module module = new Module()
            {
                Id = 3, Code = "SEM5640", Year = "2020", ClassCode = "AB0", CoordinatorUid = "nst", Title = "Developing Advanced Internet Based-Applications"
            };
            List <Student> studentData = new List <Student>();
            var            mockRepo    = new Mock <IDataRepository>();

            mockRepo.Setup(repo => repo.GetModuleAsync(module.Id)).
            ReturnsAsync(module);
            mockRepo.Setup(repo => repo.StudentsByModuleAsync(module.Id)).
            ReturnsAsync(studentData);

            ModulesController controller = new ModulesController(mockRepo.Object);

            var result = await controller.GetStudentsByModule(module.Id);

            Assert.IsInstanceOfType(result.Result, typeof(OkObjectResult));

            var okResult = result.Result as OkObjectResult;
            var students = okResult.Value as List <Student>;

            Assert.AreEqual(0, students.Count);
        }
        public async Task ShouldReturnNotFoundIfModuleDoesntExist_GetStudentsByModule()
        {
            int id       = 3;
            var mockRepo = new Mock <IDataRepository>();

            mockRepo.Setup(repo => repo.GetModuleAsync(id)).
            ReturnsAsync((Module)null);

            ModulesController controller = new ModulesController(mockRepo.Object);

            var result = await controller.GetStudentsByModule(id);

            Assert.IsInstanceOfType(result.Result, typeof(NotFoundResult));
        }
        public async Task ShouldReturnStudentsOnAModuleWithStudents_GetStudentsByModule()
        {
            Module module = new Module()
            {
                Id = 3, Code = "SEM5640", Year = "2020", ClassCode = "AB0", CoordinatorUid = "nst", Title = "Developing Advanced Internet Based-Applications"
            };
            List <Student> studentData = new List <Student>();

            studentData.Add(new Student()
            {
                Uid = "mwj7", Forename = "Morgan", Surname = "Jones"
            });
            studentData.Add(new Student()
            {
                Uid = "dop2", Forename = "Dominic", Surname = "Parr"
            });

            var mockRepo = new Mock <IDataRepository>();

            mockRepo.Setup(repo => repo.GetModuleAsync(module.Id)).
            ReturnsAsync(module);
            mockRepo.Setup(repo => repo.StudentsByModuleAsync(module.Id)).
            ReturnsAsync(studentData);

            ModulesController controller = new ModulesController(mockRepo.Object);

            var result = await controller.GetStudentsByModule(module.Id);

            Assert.IsInstanceOfType(result.Result, typeof(OkObjectResult));

            var okResult = result.Result as OkObjectResult;
            var students = okResult.Value as List <Student>;

            Assert.AreEqual(2, students.Count);

            int i = 0;

            foreach (Student m in students)
            {
                Assert.AreEqual(studentData[i].Uid, m.Uid);
                Assert.AreEqual(studentData[i].Forename, m.Forename);
                Assert.AreEqual(studentData[i].Surname, m.Surname);
                i++;
            }
        }