[ValidateModelState]       // Filter - при невалиден ModelState показва само текущ. view:
        public async Task <IActionResult> Create(CourseCreationBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            //var course = new CourseCreationBindingModel()
            //{
            //    Name = model.Name,
            //    Slug = model.Slug
            //};
            //// or
            ////var course = this.mapper.Map<Course>(model);
            ////this.contex.Courses.Add(course);
            ////contex.SaveChanges();
            // or afret adding services:
            var course = await this.coursesService.AddCourse(model);

            this.TempData.Put("__Message", new MessageModel()
            {
                Type    = MessageType.Success,
                Message = "Course created succesfully."
            });

            return(RedirectToAction("Details", new { id = course.Id }));
        }
Exemplo n.º 2
0
        //[ExpectedException(typeof(ArgumentException))]
        public async Task AddCourse_WithNullCourse_ShouldThrowException() // wahyWeDo_conditions_wahyExpect
        {
            // 1. Arrange
            CourseCreationBindingModel courseModel = null;

            // 2. Act
            Func <Task> addCourse = () => this.service.AddCourse(courseModel);

            // 3. Asserts
            // await Assert.ThrowsExceptionAsync<ArgumentException>(addCourse);
            var exception = await Assert.ThrowsExceptionAsync <ArgumentException>(addCourse);

            Assert.AreEqual(ValidationConstants.CourseNullMessage, exception.Message);
        }
        public async Task <Course> AddCourse(CourseCreationBindingModel model)
        {
            Validator.EnsureNotNull(model, ValidationConstants.CourseNullMessage);
            Validator.EnsureStringNotNullOrEmpty(model.Name, ValidationConstants.CourseNameMessage);
            Validator.EnsureStringNotNullOrEmpty(model.Slug, ValidationConstants.CourseSlugMessage);

            var course = this.Mapper.Map <Course>(model);

            await this.DbContext.Courses.AddAsync(course);

            await this.DbContext.SaveChangesAsync();

            return(course);
        }
Exemplo n.º 4
0
        public async Task AddCourse_WithProperCourse_ShouldAddCorrectly() // wahyWeDo_conditions_wahyExpect
        {
            // 1. Arrange
            var courseName = "New course name";
            var slugName   = "new-course-name";

            var courseModel = new CourseCreationBindingModel()
            {
                Name = courseName,
                Slug = slugName
            };

            // 2. Act
            await this.service.AddCourse(courseModel);

            // 3. Asserts
            Assert.AreEqual(1, this.dbContext.Courses.Count());
            var course = this.dbContext.Courses.First();

            Assert.AreEqual(courseName, course.Name);
            Assert.AreEqual(slugName, course.Slug);
        }
Exemplo n.º 5
0
        public void Create_WithValidCourse_ShoudCallService() // for POST
        {
            //1. Arrange
            var  model         = new CourseCreationBindingModel();
            bool serviceCalled = false;


            //1. Arrange:
            var mockRepository = new Mock <IAdminCoursesService>();

            mockRepository
            .Setup(repo => repo.AddCourse(model))
            .Callback(() => serviceCalled = true);

            var mockLocalizer = new Mock <IStringLocalizer <CoursesController> >();

            var controller = new CoursesController(mockRepository.Object, mockLocalizer.Object);

            //2. Act:
            var result = controller.Create(model);

            //3. Assert with three separate tests in one:
            Assert.IsTrue(serviceCalled);
        }