public void AddSimpleStudentTest()
        {
            bool isItemAdded = false;
            var repository = Mock.Create<IRepository<Student>>();

            var studentModel = new StudentModel()
            {
                FirstName = "Petko"
            };

            var studentEntity = new Student()
            {
                StudentId = 1,
                FirstName = studentModel.FirstName
            };

            Mock.Arrange(() => repository.Add(Arg.IsAny<Student>()))
                .DoInstead(() => isItemAdded = true);
                //.Returns(studentEntity);

            var controller = new StudentsController(repository);
            SetupController(controller);
            controller.PostStudent(studentModel);

            Assert.IsTrue(isItemAdded);
        }
        public void GetAllStudentsTest()
        {
            var repository = Mock.Create<IRepository<Student>>();
            var studentToAdd = new Student()
            {
                FirstName = "Petko"
            };
            IList<Student> studentEntities = new List<Student>();
            studentEntities.Add(studentToAdd);
            Mock.Arrange(() => repository.All()).Returns(studentEntities.AsQueryable);

            var controller = new StudentsController(repository);

            var studentModels = controller.Get();
            Assert.IsTrue(studentModels.Count() == 1);
            Assert.AreEqual(studentToAdd.FirstName, studentModels.First().FirstName);
        }
        public void TestGetByIdStudent()
        {
            var repository = Mock.Create<IRepository<Student>>();
            var student = new Student()
            {
                StudentId = 1,
                FirstName = "Pesho",
                LastName = "Peshov",
                Grade = 3
            };

            Mock.Arrange<Student>(
                () => repository.Get(student.StudentId))
                .IgnoreArguments()
                .Returns(student)
                .MustBeCalled();

            var controller = new StudentsController(repository);
            SetupController(controller);
            var result = controller.Get(student.StudentId);

            Assert.AreEqual(result.StudentId, student.StudentId);
            Assert.AreEqual(result.FirstName, student.FirstName);
            Assert.AreEqual(result.LastName, student.LastName);
            Assert.AreEqual(result.Grade, student.Grade);
        }
        public void GetAllStudents_ReturnOnlyOneTest()
        {
            var repository = new FakeRepository<Student>();

            var studentToAdd = new Student()
            {
                FirstName = "Test student"
            };
            repository.entities.Add(studentToAdd);

            var controller = new StudentsController(repository);

            var studentsModels = controller.Get();
            Assert.IsTrue(studentsModels.Count() == 1);
            Assert.AreEqual(studentToAdd.FirstName, studentsModels.First().FirstName);
        }
        public void UpdateStudentTest()
        {
            bool isItemUpdated = false;
            var repository = Mock.Create<IRepository<Student>>();

            var studentModel = new StudentModel()
            {
                FirstName = "Petko"
            };
            var studentEntity = new Student()
            {
                StudentId = 1,
                FirstName = studentModel.FirstName
            };

            var controller = new StudentsController(repository);
            SetupController(controller);
            controller.PostStudent(studentModel);

            Mock.Arrange(() => repository.Update(Arg.IsAny<int>(), Arg.IsAny<Student>()))
              .DoInstead(() => isItemUpdated = true)
              .Returns(studentEntity);

            var newStudent = new Student()
            {
                StudentId = 1,
                FirstName = "New first name"
            };

            controller.Put(1, newStudent);

            Assert.IsTrue(isItemUpdated);
        }