Example #1
0
        public IActionResult GetBlogs(int userId,
                                      [FromQuery] BlogsResourceParameters blogsResourceParameters,
                                      [FromHeader(Name = nameof(HeaderNames.Accept))] string mediaType)
        {
            if (!_weblogDataRepository.UserExists(userId))
            {
                return(NotFound());
            }

            var blogEntities = _weblogDataRepository.GetBlogs(userId, blogsResourceParameters);

            var blogsToReturn = _mapper.Map <IEnumerable <BlogDto> >(blogEntities);

            Response.Headers.Add(PaginationHeader <Blog> .Get(blogEntities));

            var includeLinks = MediaTypes.IncludeLinks(mediaType);

            if (!includeLinks)
            {
                return(Ok(blogsToReturn));
            }

            var blogsWithLinks = blogsToReturn.Select(blog =>
            {
                var links = CreateLinksForBlog(Url, userId, blog.BlogId);

                return(new BlogDtoWithLinks(blog, links));
            });

            var collectionToReturn = new
            {
                blogs = blogsWithLinks,
                links = LinksForCollection.Create(
                    CreateBlogsResourceUri,
                    new int[] { userId },
                    blogsResourceParameters,
                    blogEntities.HasPrevious,
                    blogEntities.HasNext)
            };

            return(Ok(collectionToReturn));
        }
Example #2
0
        public void AddBlog()
        {
            //-- arrange
            var countBeforeAdd = _repository.GetBlogs(_resourceParameters).Count();

            var blog = new Blog
            {
                Title   = "title",
                Excerpt = "excerpt"
            };

            //-- act
            _repository.AddBlog(1, blog);
            _repository.Save();

            var actual = _repository.GetBlogs(_resourceParameters).Count();

            //-- assert
            Assert.AreEqual(countBeforeAdd + 1, actual);

            //-- clean up
            _repository.DeleteBlog(blog);
            _repository.Save();
        }