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

            var studentModel = new Student()
            {
                Age = 10,
                Grade = 4,
                FirstName = "Nikolay",
                LastName = "Kostadinov",
            };

            var studentEntity = new Student()
            {
                StudentId = 1,
                Grade = 4,
                FirstName = "Nikolay",
                LastName = "Kostadinov",
            };

            Mock.Arrange(() => repository.Add(Arg.IsAny<Student>()))
                .Throws<ArgumentException>("Grade");

            var controller = new StudentController(repository);
            controller.SetupControllerForTest(HttpMethod.Post, BaseUrl, ControllerName);
            
            var expected = HttpStatusCode.BadRequest;

            //act
            var httpResponse = controller.Post(studentModel);
            var actual = httpResponse.StatusCode;

            ///assert
            Assert.AreEqual(expected, actual);
        }
        public void Add_WhenStudentIsValid_ShouldAddTheStudent()
        {
            bool isItemAdded = false;
            var repository = Mock.Create<IRepository<Student>>();

            var studentModel = new Student()
            {
                Age = 10,
                Grade = 4,
                FirstName = "Nikolay",
                LastName = "Kostadinov",
            };

            var studentEntity = new Student()
            {
                StudentId = 1,
                Age = 10,
                Grade = 4,
                FirstName = "Nikolay",
                LastName = "Kostadinov",
            };

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

            var controller = new StudentController(repository);
            controller.SetupControllerForTest(HttpMethod.Post, BaseUrl, ControllerName);

            //act
            var httpResponse = controller.Post(studentModel);

            var header = httpResponse.Headers.Location.AbsoluteUri;
            var expected = BaseUrl + ControllerName + "/1";
            Assert.IsTrue(isItemAdded);
            Assert.AreEqual(expected, header);
        }