コード例 #1
0
        public async Task ReturnCreatedAtRouteResponseWhenCourseCreated()
        {
            var newCourseviewModelForCreate = new CourseForCreateViewModel
            {
                Name        = "Film Study",
                TeacherName = "Stanley Kubrick"
            };
            var newCourse = new Course
            {
                Id          = 4,
                Name        = "Film Study",
                TeacherName = "Stanley Kubrick"
            };

            _mapper.Setup(m => m.Map <Course>(It.IsAny <CourseForCreateViewModel>()))
            .Returns(newCourse);

            var courseCtrl = new CourseController(_mapper.Object, _courseService.Object);
            var actual     = await courseCtrl.Post(newCourseviewModelForCreate);

            var okResult = Assert.IsType <CreatedAtRouteResult>(actual);
            var course   = Assert.IsType <CourseForCreateViewModel>(okResult.Value);

            Assert.Equal("Film Study", course.Name);
        }
コード例 #2
0
        public async Task ReturnCreatedAtRouteResponseIfEverythingIsFine()
        {
            var courseToAdd = new CourseForCreateViewModel()
            {
                Name        = "Film Study",
                TeacherName = "Stanley Kubrick",
                Location    = "Building 6 Room 601",
                Students    = new List <CourseStudentForCreateViewModel>()
                {
                    new CourseStudentForCreateViewModel()
                    {
                        StudentId = 4
                    },
                    new CourseStudentForCreateViewModel()
                    {
                        StudentId = 5
                    },
                    new CourseStudentForCreateViewModel()
                    {
                        StudentId = 5
                    }
                }
            };
            var response = await Client.PostAsJsonAsync <CourseForCreateViewModel>("/api/course", courseToAdd);

            response.EnsureSuccessStatusCode();

            var responseString = await response.Content.ReadAsStringAsync();
        }
コード例 #3
0
        public async Task ReturnUnprocessableEntityResponseIfModelstateNotValid()
        {
            var courseToAdd = new CourseForCreateViewModel();
            var response    = await Client.PostAsJsonAsync <CourseForCreateViewModel>("/api/course", courseToAdd);

            var responseString = await response.Content.ReadAsStringAsync();

            Assert.Equal(HttpStatusCode.UnprocessableEntity, response.StatusCode);
            Assert.Contains("The Name field is required.", responseString);
            Assert.Contains("The TeacherName field is required.", responseString);
            Assert.Contains("The Location field is required.", responseString);
        }
コード例 #4
0
        public async Task <ActionResult> Post([FromBody] CourseForCreateViewModel courseViewModelForCreate)
        {
            if (courseViewModelForCreate == null)
            {
                return(BadRequest("Request body is null."));
            }
            var course = new Course();

            _mapper.Map(courseViewModelForCreate, course);
            if (await _courseService.CreateAsync(course) > 0)
            {
                return(CreatedAtRoute("GetCourseById", new { Id = course.Id }, courseViewModelForCreate));
            }

            return(StatusCode(500));
        }
コード例 #5
0
        private List <CourseStudent> FillCourseStudentForCreate(CourseForCreateViewModel coVM, Course course)
        {
            var courseStudents = new List <CourseStudent>();

            foreach (var item in coVM.Students.GroupBy(x => x.StudentId).Select(x => x.First()).ToList())
            {
                if (item.StudentId != null)
                {
                    courseStudents.Add(new CourseStudent()
                    {
                        Course    = course,
                        StudentId = item.StudentId.Value
                    });
                }
            }
            return(courseStudents);
        }
コード例 #6
0
        public async Task CreateCourse()
        {
            var options = new DbContextOptionsBuilder <UniversityContext>()
                          .UseInMemoryDatabase(databaseName: "Add_to_controller")
                          .Options;

            using (var context = new UniversityContext(options))
            {
                var courseViewModelForCreate = new CourseForCreateViewModel()
                {
                    Name        = "English",
                    TeacherName = "William Shakespeare",
                };
                var service = new CourseService(context);
                var ctrl    = new CourseController(_mapper, service);
                var result  = await ctrl.Post(courseViewModelForCreate);

                var okResult = Assert.IsType <CreatedAtRouteResult>(result);
                var course   = Assert.IsType <CourseForCreateViewModel>(okResult.Value);
                Assert.Equal("English", course.Name);
            }
        }