public async Task GivenValidRequest_WhenTheArticleDoesNotContainAnyComments_ReturnsEmptyCommentViewModelList()
        {
            // Arrange
            var articleCommentsQuery = new ArticleCommentsQuery("why-beer-is-gods-gift-to-the-world");

            // Act
            var handler  = new ArticleCommentsQueryHandler(Context, Mapper);
            var response = await handler.Handle(articleCommentsQuery, CancellationToken.None);

            // Assert
            response.ShouldNotBeNull();
            response.ShouldBeOfType <CommentViewModelList>();
            response.Comments.ShouldBeEmpty();
        }
        public async Task GivenValidRequest_WhenTheArticleExists_ReturnsCommentViewModelListWithComments()
        {
            // Arrange
            var articleCommentsQuery = new ArticleCommentsQuery("how-to-train-your-dragon");

            // Act
            var handler  = new ArticleCommentsQueryHandler(Context, Mapper);
            var response = await handler.Handle(articleCommentsQuery, CancellationToken.None);

            // Assert
            response.ShouldNotBeNull();
            response.ShouldBeOfType <CommentViewModelList>();
            response.Comments.Count().ShouldBe(2);
        }
        public async Task GivenValidRequest_WhenTheArticleDoesNotExist_ThrowsApiExceptionWithNotFound()
        {
            // Arrange
            var articleCommentsQuery = new ArticleCommentsQuery("how-to-not-train-your-dragon");

            // Act
            var handler  = new ArticleCommentsQueryHandler(Context, Mapper);
            var response = await Should.ThrowAsync <ConduitApiException>(async() =>
            {
                await handler.Handle(articleCommentsQuery, CancellationToken.None);
            });

            // Assert
            response.StatusCode.ShouldBe(HttpStatusCode.NotFound);
            response.ShouldNotBeNull();
            response.ShouldBeOfType <ConduitApiException>();
        }