Ejemplo n.º 1
0
 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>();
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        public async void Create_InvalidArticleInput_Failure(ArticleBasicInfo request)
        {
            var result = await ariclesController.SaveArticle(request);

            result.Should().BeOfType <BadRequestObjectResult>();
        }