Esempio n. 1
0
        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 }));
        }
Esempio n. 2
0
 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);
        }