public Article(ArticleBasicInfo model, string authorId) { Abstract = model.Abstract; AuthorId = authorId; Content = model.Content; CoverImage = model.CoverImage; IsPrivate = model.IsPrivate; Title = model.Title; Categories = model.Categories; GalleryImages = new List <GalleryImage>(); }
public async void UpdateArticle_ValidArticle_Success() { var result = await ariclesController.SaveArticle(validArticleRequest); var okResult = result.Should().BeOfType <OkObjectResult>().Subject; var articleId = okResult.Value.Should().BeAssignableTo <ArticleId>().Subject; var updatedArticleRequest = new ArticleBasicInfo() { Id = articleId.Id, Abstract = "Updated Abstract", Categories = new string[] { "1", "2" }, Content = "Updated Content", CoverImage = "Updated CoverImage", IsPrivate = true, Title = "Updated Title" }; result = await ariclesController.SaveArticle(updatedArticleRequest); result.Should().BeOfType <OkObjectResult>(); okResult = result.Should().BeOfType <OkObjectResult>().Subject; var articleIdResponse = okResult.Value.Should().BeAssignableTo <ArticleId>().Subject; result = await ariclesController.GetArticleDetails(articleIdResponse.Id); result.Should().BeOfType <OkObjectResult>(); okResult = result.Should().BeOfType <OkObjectResult>().Subject; var articleResponse = okResult.Value.Should().BeAssignableTo <ArticleDetails>().Subject; articleResponse.Should().NotBeNull(); articleResponse.Title.Should().Be(updatedArticleRequest.Title); articleResponse.Id.Should().Be(articleId.Id); // Make sure the ID is the same old ID articleResponse.Abstract.Should().Be(updatedArticleRequest.Abstract); articleResponse.Content.Should().Be(updatedArticleRequest.Content); articleResponse.Author.Id.Should().Be(currentUserId); articleResponse.IsPrivate.Should().Be(updatedArticleRequest.IsPrivate); articleResponse.IsApproved.Should().Be(false); //articleDetailsResponse.Categories.Should().Be(validArticleRequest.Categories.Count); articleResponse.Content.Should().Be(updatedArticleRequest.Content); articleResponse.UpdatedOn.Should().BeCloseTo(DateTime.UtcNow, TWO_SECONDS_IN_MILLIONSECONDS); articleResponse.CreatedOn.Should().BeCloseTo(DateTime.UtcNow, TWO_SECONDS_IN_MILLIONSECONDS); }
public async Task <IActionResult> SaveArticle(ArticleBasicInfo aricleModel) { try { if (aricleModel == null || String.IsNullOrWhiteSpace(aricleModel.Title) || String.IsNullOrWhiteSpace(aricleModel.Abstract) || String.IsNullOrWhiteSpace(aricleModel.Content)) { return(BadRequest(new { message = "Invalid article" })); } Article article; // If the article model doesn't have an id then create a new article otherwise update the article if (String.IsNullOrWhiteSpace(aricleModel.Id)) { article = new Article(aricleModel, currentUserId); } else { article = await databaseService.GetArticleAsync(aricleModel.Id); article.Abstract = aricleModel.Abstract; article.Content = aricleModel.Content; article.CoverImage = aricleModel.CoverImage; article.IsPrivate = aricleModel.IsPrivate; article.Title = aricleModel.Title; article.Categories = aricleModel.Categories; } Utilities.MassageArticleImages(article); await databaseService.SaveArticleAsync(article); return(Ok(new ArticleId(article.Id))); } catch (Exception ex) { logger.LogError(ex, ex.Message); return(StatusCode(StatusCodes.Status500InternalServerError)); } }
public CommentsControllerTest() { var logFactory = LoggerFactory.Create(builder => builder.AddConsole()); var logger = logFactory.CreateLogger <CommentsController>(); var notificationServiceFake = new NotificationServiceFake(); var databaseService = new DatabaseServiceFake(); var requestModel = new RegisterRequest() { Email = "*****@*****.**", Name = "Tester", Password = "******" }; var user = new User(requestModel) { Id = ObjectId.GenerateNewId().ToString() }; var currentUser = databaseService.SaveUserAsync(user).Result; var articleRequest = new ArticleBasicInfo() { Title = "title", Abstract = "abstract", Content = "content" }; var article = new Article(articleRequest, currentUserId); article.Id = SAMPLE_ARTICLE_ID; var sampleArticle = databaseService.SaveArticleAsync(article).Result; var claims = new[] { new Claim(ClaimTypes.Name, currentUser.Name), new Claim(ClaimTypes.NameIdentifier, currentUser.Id) }; var httpContextAccessFake = new HttpContextAccessorFake(claims); currentUserId = httpContextAccessFake.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; commentsController = new CommentsController(httpContextAccessFake, databaseService, logger); }
public async void Create_InvalidArticleInput_Failure(ArticleBasicInfo request) { var result = await ariclesController.SaveArticle(request); result.Should().BeOfType <BadRequestObjectResult>(); }