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"); }
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(); }