public async Task <IActionResult> OnGetAsync(string slug = "") { if (string.IsNullOrEmpty(slug)) { return(Page()); } var request = new GetArticleQuery(slug); var result = await _mediator.Send(request); if (result == null) { Article = new ArticleCreate { Topic = UrlHelpers.SlugToTopic(slug) }; } else { // TODO: Convert this to use a PageRoute return(Redirect($"/{slug}/Edit")); } return(Page()); }
public async Task <ResultWrapper <GetArticleOutput> > Handle(GetArticleQuery request, CancellationToken cancellationToken) { ResultWrapper <GetArticleOutput> result = new ResultWrapper <GetArticleOutput>(); var tData = await _dbContext.TArticle .Include(x => x.TArticleSports) .ThenInclude(x => x.TSport) .FirstOrDefaultAsync(x => x.Id == request.Id); result.Status = true; result.Result = new GetArticleOutput() { Id = tData.Id, Title = tData.Title, Summary = tData.Summary, Image = tData.Image, Enabled = tData.Enabled, Content = tData.Content, Sports = tData.TArticleSports .Select(x => new PublicListItem() { Enabled = x.TSport.Enabled, Image = x.TSport.Image, Selected = false, Text = x.TSport.Title, Value = x.TSportId.ToString() }).ToList() }; return(result); }
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 <IActionResult> GetArticle([FromRoute] GetArticleQuery query) { var result = await _mediator.Send(query); if (result.ErrorOccurred) { return(BadRequest(result)); } return(Ok(result)); }
public IHttpActionResult GetArticle(string id) { var query = new GetArticleQuery { Id = id }; var dto = _queryBus.Send <GetArticleQuery, ArticleDto>(query); return(Ok(dto)); }
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 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_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(); }
public async Task <IActionResult> GetArticles(int id) { FirebaseUser user = HttpContext.GetFirebaseUser(); GetArticleQuery model = new GetArticleQuery() { firebaseId = user.UserId, Id = id }; ResultWrapper <GetArticleOutput> result = new ResultWrapper <GetArticleOutput>(); result = await _mediator.Send(model); return(Ok(result)); }
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 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 <IViewComponentResult> InvokeAsync(GetCommentModel commentModel) { // TODO: test with deleted boards var getBoardQuery = new GetBoardQuery(commentModel.BoardId); var board = await getBoardQuery.DefaultIfExceptionAsync(_mediator); var getArticleQuery = new GetArticleQuery(commentModel.ParentArticleId); GetArticleModel parentArticle = await getArticleQuery.DefaultIfExceptionAsync(_mediator); var getCommentQuery = new GetCommentQuery(commentModel.ParentCommentId); GetCommentModel parentComment = await getCommentQuery.DefaultIfExceptionAsync(_mediator); // TODO: will most likely return null when user is deleted var getUserQuery = new GetPublicUserQuery(commentModel.UserId); GetPublicUserModel user = await getUserQuery.DefaultIfExceptionAsync(_mediator); string jwt = _apiJwtManager.GetToken(); bool loggedIn = false; bool saved = false; bool userUpvoted = false; bool userDownvoted = false; bool userCreatedComment = false; try { var loggedInUser = await _mediator.Send(new GetAuthenticatedUserQuery()); if (loggedInUser != null) { loggedIn = true; } saved = loggedInUser.SavedComments.Any(commentId => commentId == commentModel.Id); userUpvoted = loggedInUser.LikedComments.Any(commentId => commentId == commentModel.Id); userDownvoted = loggedInUser.DislikedComments.Any(commentId => commentId == commentModel.Id); userCreatedComment = commentModel.UserId == loggedInUser.Id; } catch (System.Exception) { loggedIn = false; } var model = new CommentCardViewModel { Comment = commentModel, Board = board, ParentArticle = parentArticle, ParentComment = parentComment, User = user, Jwt = jwt, LoggedIn = loggedIn, Saved = saved, UserUpvoted = userUpvoted, UserDownvoted = userDownvoted, UserCreatedComment = userCreatedComment }; return(View(model)); }