public async Task GetArticleQueryHandlerTest_Fail_When_Id_Doe_Not_Exist()
        {
            var sut = new GetArticleQueryHandler(db);

            var getArticleQuery = new GetArticleQuery(nonExistingArticleId);

            var result = await sut.Handle(getArticleQuery, CancellationToken.None);

            Assert.Null(result);
        }
        public async Task GetArticleQueryHandlerTest_Succes()
        {
            var sut = new GetArticleQueryHandler(db);

            var getArticleQuery = new GetArticleQuery(firstArticleId);

            var result = await sut.Handle(getArticleQuery, CancellationToken.None);

            Assert.IsType <ArticleLookupModel>(result);
            Assert.NotNull(result);
            Assert.Equal("Article 1", result.Title);
        }
        public async Task GivenValidRequest_WhenTheArticleDoesNotExist_ThrowsApiExpection()
        {
            // Arrange
            var getArticleQuery = new GetArticleQuery("an-article-does-not-exist");

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

            // Assert
            exception.StatusCode.ShouldBe(HttpStatusCode.NotFound);
        }
        public async Task GivenValidRequest_WhenTheArticleExists_ReturnsArticleViewModel()
        {
            // Arrange
            var getArticleQuery = new GetArticleQuery("how-to-train-your-dragon");

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

            // Assert
            response.ShouldNotBeNull();
            response.ShouldBeOfType <ArticleViewModel>();
            response.Article.ShouldNotBeNull();
            response.Article.ShouldBeOfType <ArticleDto>();
            response.Article.Author.Username.ShouldBe("joey.mckenzie");
            response.Article.TagList.ShouldNotBeEmpty();
            response.Article.TagList.ShouldContain("dragons");
        }
示例#5
0
        public async Task UpdateArticleSuccessTest()
        {
            var queryHandler    = new GetArticleQueryHandler(db);
            var getArticleQuery = new GetArticleQuery(firstArticleId);
            var article         = await queryHandler.Handle(getArticleQuery, CancellationToken.None);

            db = new AppDatabaseContext(options);

            var sut = new UpdateArticleCommandHandler(db);
            var updatedArticleCommand = new UpdateArticleCommand
            {
                Id    = firstArticleId,
                Title = "Updated Article Title"
            };

            var result = await sut.Handle(updatedArticleCommand, CancellationToken.None);

            var updatedArticle = queryHandler.Handle(getArticleQuery, CancellationToken.None);

            Assert.IsType <Unit>(result);
            Assert.NotNull(updatedArticle);
        }
        public async Task And_The_Api_Is_Called_With_Invalid_Request_Parameters_Then_No_Article_Is_Returned(
            GetArticleQuery query, [Frozen] Mock<IApiClient> client, [Frozen] Mock<IOptions<CampaignConfiguration>> config, GetArticleQueryHandler handler)
        {
            SetupMockConfig(config);
            client.Setup(o => o.Get<Page<Article>>(It.Is<GetArticlesPreviewRequest>(r => r.GetUrl == $"article/preview/{query.Hub}/{query.Slug}"))).ReturnsAsync((Page<Article>)null);
            client.Setup(o => o.Get<Page<Article>>(It.Is<GetArticlesRequest>(r => r.GetUrl == $"article/{query.Hub}/{query.Slug}"))).ReturnsAsync((Page<Article>)null);
            client.Setup(o => o.Get<Page<Menu>>(It.Is<GetMenuRequest>(r => r.GetUrl == $"menu"))).ReturnsAsync((Page<Menu>)null);

            var actual = await handler.Handle(query, CancellationToken.None);

            actual.Should().NotBeNull();
            actual.Page.Should().BeNull();
        }
        public async Task Then_The_Api_Is_Called_With_The_Valid_Request_Parameters_Then_The_Article_Is_Returned_From_The_Api_With_The_Menu(
            bool preview, GetArticleQuery query, Page<Article> response, [Frozen] Mock<IApiClient> client, [Frozen] Mock<IOptions<CampaignConfiguration>> config, GetArticleQueryHandler handler)
        {
            query.Preview = preview;
            SetupMockConfig(config, false);

            client.Setup(o => o.Get<Page<Article>>(It.Is<GetArticlesRequest>(r => r.GetUrl == $"article/{query.Hub}/{query.Slug}"))).ReturnsAsync(response);

            var actual = await handler.Handle(query, CancellationToken.None);

            client.Verify(
                o => o.Get<Page<Article>>(It.Is<GetArticlesRequest>(r => r.GetUrl == $"article/{query.Hub}/{query.Slug}")), Times.Once);

            client.Verify(o => o.Get<Page<Article>>(It.IsAny<GetArticlesPreviewRequest>()), Times.Never);
            actual.Should().NotBeNull();
            actual.Page.Should().NotBeNull();
            actual.Page.Content.Should().NotBeNull();
            actual.Page.Menu.Should().NotBeNull();
            actual.Page.Menu.Apprentices.Should().NotBeNullOrEmpty();
            actual.Page.Menu.Influencers.Should().NotBeNullOrEmpty();
            actual.Page.Menu.TopLevel.Should().NotBeNullOrEmpty();
            actual.Page.Menu.Employers.Should().NotBeNullOrEmpty();
        }
        public async Task Then_The_Api_Is_Called_With_The_Valid_Request_Parameters_And_The_Article_Is_Returned_From_The_Preview_Api_if_Config_And_Param_Set(
            GetArticleQuery query, Page<Article> response, [Frozen] Mock<IOptions<CampaignConfiguration>> config, [Frozen] Mock<IApiClient> client, GetArticleQueryHandler handler)
        {
            SetupMockConfig(config);
            query.Preview = true;
            client.Setup(o => o.Get<Page<Article>>(It.Is<GetArticlesPreviewRequest>(r => r.GetUrl == $"article/preview/{query.Hub}/{query.Slug}"))).ReturnsAsync(response);

            var actual = await handler.Handle(query, CancellationToken.None);

            client.Verify(o => o.Get<Page<Article>>(It.Is<GetArticlesPreviewRequest>(r => r.GetUrl == $"article/preview/{query.Hub}/{query.Slug}")), Times.Once);
            actual.Should().NotBeNull();
            actual.Page.Should().NotBeNull();
        }