public void Filter_ShouldReturnAllStudentsMatchingThePredicate()
        {
            var student = new Student()
            {
                Id = 1,
                FirstName = "Andrew",
                LastName = "Fuller",
                Age = 29,
                Grade = 4,
                SchoolId = 1
            };

            IList<Student> students = new List<Student>();
            students.Add(student);

            var repository = Mock.Create<IRepository>();

            Mock.Arrange(() => repository.Filter<Student>(
                Arg.IsAny<Expression<Func<Student, bool>>>(),
                new[] { "School", "Marks" }))
                .Returns(() => students.AsQueryable());

            var controller = new StudentsController(repository);

            var studentsFound = controller.Get("Maths", 6.0f);
            Assert.IsTrue(studentsFound.Count() == 1);
            Assert.AreEqual(student.FirstName, studentsFound.First().FirstName);
        }
        public void GetAll_ShouldReturnAllStudents()
        {
            var student = new Student()
            {
                Id = 1,
                FirstName = "Andrew",
                LastName = "Fuller",
                Age = 29,
                Grade = 4,
                SchoolId = 1
            };

            IList<Student> students = new List<Student>();
            students.Add(student);

            var repository = Mock.Create<IRepository>();

            Mock.Arrange(() => repository.All<Student>(new[] { "School", "Marks" })).Returns(() => students.AsQueryable());

            var controller = new StudentsController(repository);

            var studentsFound = controller.Get();
            Assert.IsTrue(studentsFound.Count() == 1);
            Assert.AreEqual(student.FirstName, studentsFound.First().FirstName);
        }
        public void GetById_ShouldReturnSingleStudent()
        {
            var student = new Student()
            {
                Id = 1,
                FirstName = "Andrew",
                LastName = "Fuller",
                Age = 29,
                Grade = 4,
                SchoolId = 1
            };

            var repository = Mock.Create<IRepository>();

            Mock.Arrange(() => repository.Find<Student>(
                Arg.IsAny<Expression<Func<Student, bool>>>(),
                new[] { "School", "Marks" }))
                .Returns(student);

            var controller = new StudentsController(repository);

            var studentFound = controller.Get(student.Id);
            Assert.AreEqual(student.Id, studentFound.Id);
            Assert.AreEqual(student.FirstName, studentFound.FirstName);
            Assert.AreEqual(student.LastName, studentFound.LastName);
            Assert.AreEqual(student.Age, studentFound.Age);
            Assert.AreEqual(student.Grade, studentFound.Grade);
            Assert.AreEqual(student.SchoolId, studentFound.SchoolId);
        }