public PostsControllerTests() { _repoMock = new Mock <IRecipeRepository>(); var mockMapper = new MapperConfiguration(cfg => { cfg.AddProfile(new AutoMapperProfiles()); }); var mapper = mockMapper.CreateMapper(); _postsController = new PostsController(_repoMock.Object, mapper); _calculateAverageRatings = new CalculateAverageRatings(_repoMock.Object); // Mock claim types _userClaims = new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, "josh"), new Claim(ClaimTypes.NameIdentifier, "2"), }, "mock")); _postsController.ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = _userClaims } }; }
public async Task <IActionResult> GetPost(int id) { var calculateAverageRatings = new CalculateAverageRatings(_recipeRepo); var post = await _recipeRepo.GetPost(id); var average = calculateAverageRatings.GetAverageRating(id).Result; // Assign users avatar to the post var authorAvatar = await _recipeRepo.GetMainPhotoForUser(post.UserId); if (authorAvatar != null) { post.UserPhotoUrl = authorAvatar.Url; } // Assign commenters photos foreach (var comment in post.Comments) { var commenterId = comment.CommenterId; var commentersMainPhoto = await _recipeRepo.GetMainPhotoForUser(commenterId); if (commentersMainPhoto != null) { comment.UserPhotoUrl = commentersMainPhoto.Url; } } if (post.Ratings.Count() == 0) { post.AverageRating = 0; } else { post.AverageRating = average; } var postFromRepo = _mapper.Map <PostsForDetailedDto>(post); if (await _recipeRepo.SaveAll()) { return(Ok(postFromRepo)); } return(Ok(postFromRepo)); }
public async Task <IActionResult> GetPosts([FromQuery] PageParams pageParams, PostForSearchDto postForSearchDto) { var calculateAverageRatings = new CalculateAverageRatings(_recipeRepo); var posts = await _recipeRepo.GetPosts(pageParams, postForSearchDto); foreach (var post in posts) { // Assign users avatar to the post var authorAvatar = await _recipeRepo.GetMainPhotoForUser(post.UserId); if (authorAvatar != null) { post.UserPhotoUrl = authorAvatar.Url; } // Calculate average rating of post var average = calculateAverageRatings.GetAverageRating(post.PostId).Result; if (post.Ratings.Count() == 0) { post.AverageRating = 0; } else { post.AverageRating = average; } } var postsFromRepo = _mapper.Map <IEnumerable <PostsForListDto> >(posts); Response.AddPagination(posts.CurrentPage, posts.PageSize, posts.TotalCount, posts.TotalPages); // If update to average rating, save to the database and return the newly updated posts if (await _recipeRepo.SaveAll()) { return(Ok(postsFromRepo)); } return(Ok(postsFromRepo)); }