public async Task <IActionResult> CreateBlog([FromForm] CreateBlogRequest request) { var course = await _courseRepository.GetCourseById(request.CourseId); if (course == null) { return(BadRequest()); } var currentUserId = GetUserId(); if (currentUserId != course.TutorId && currentUserId != course.CustomerId) { return(BadRequest()); } if (currentUserId != request.AuthorId) { return(BadRequest()); } var courseBlog = new CourseBlog { AuthorId = (int)currentUserId, CourseId = request.CourseId, CreationDateTimeUtc = DateTime.UtcNow, Text = request.BlogText }; await _courseRepository.AddCourseBlog(courseBlog); return(RedirectToAction("GetCourseView", new { id = request.CourseId })); }
public async Task AddCourseBlog(CourseBlog blog) { using (IDbConnection db = new SqlConnection(_connectionString)) { await db.ExecuteAsync(@"INSERT INTO [dbo].[CourseBlogs] (CourseId, AuthorId, CreationDateTimeUtc, Text) VALUES (@CourseId, @AuthorId, @CreationDateTimeUtc, @Text)", blog); } }
public async Task SuccessfulCourseBlogCreation() { // Given var courseRequest = new CourseController.CreateBlogRequest { AuthorId = 123, BlogText = "Some text", CourseId = 789 }; _courseRepositoryMock .Setup(_ => _.GetCourseById(It.IsAny <int>())) .ReturnsAsync(new Course { Id = courseRequest.CourseId, TutorId = courseRequest.AuthorId, CustomerId = 456 }) .Verifiable(); _userRepositoryMock .Setup(_ => _.GetUserIdByEmail(It.IsAny <string>())) .Returns(courseRequest.AuthorId) .Verifiable(); CourseBlog actualBlog = null; _courseRepositoryMock .Setup(_ => _.AddCourseBlog(It.IsAny <CourseBlog>())) .Returns(Task.CompletedTask) .Callback((CourseBlog cb) => actualBlog = cb) .Verifiable(); // When var response = await _courseController.CreateBlog(courseRequest); // Then Mock.Verify(_courseRepositoryMock, _userRepositoryMock); response.Should().BeOfType <RedirectToActionResult>(); actualBlog.Should().NotBeNull(); actualBlog.AuthorId.Should().Be(courseRequest.AuthorId); actualBlog.CourseId.Should().Be(courseRequest.CourseId); actualBlog.Text.Should().Be(courseRequest.BlogText); }