[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 })); }
//[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); }
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); }
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); }