Пример #1
0
        public async Task BlogPostBuilder_BuildsBlogWithMetaTag()
        {
            var author = Author.Create(new User(""), new AuthorProfile("", "", ""), Mock.Of <IAuthorValidator>());
            var mock   = new Mock <IAuthorService>();

            mock.Setup(a => a.GetAuthor()).Returns(author);
            var authorService = mock.Object;
            var imageService  = new Mock <IImageService>().Object;
            var builder       = new BlogPostBuilder(authorService, imageService);
            var tags          = new List <MetaTag>()
            {
                new MetaTag("description", "test description")
            };
            var addBlogPostCommand = new AddBlogPostCommand()
            {
                ContentIntro = "Intro",
                Content      = "Test",
                Subject      = "Subject"
            };
            var category = new Category("", 1, "");
            var blogPost = await builder.WrittenByCurrentAuthor().WithCategory(category).WithContent(addBlogPostCommand)
                           .WithMetaTags(tags).Build();

            Assert.Single(blogPost.MetaTags);
        }
Пример #2
0
        public async Task <IActionResult> AddPost(AddBlogPostViewModel model)
        {
            if (ModelState.IsValid)
            {
                var curUser = await _userManager.GetUserAsync(User);

                var author = await _qpa.ProcessAsync(new GetAuthorByAppUserIdQuery { Id = curUser.Id });

                var abpc = new AddBlogPostCommand
                {
                    Author      = author,
                    Title       = model.Title,
                    Content     = model.Content,
                    Description = model.Description,
                    CreatedAt   = DateTime.Now,
                    ModifiedAt  = DateTime.Now,
                    Public      = false,
                    PublishOn   = DateTime.Now.AddDays(7)
                };

                var result = await _cp.ProcessAsync(abpc);

                if (result.Succeeded)
                {
                    return(RedirectToAction("EditPost", new { id = result.Command.Id }));
                }
                else
                {
                    ModelState.AddModelError("", "Error saving to database!");
                    return(View(model));
                }
            }
            return(View(model));
        }
Пример #3
0
        public bool Add(BlogPost blogPost)
        {
            if (blogPost != null)
            {
                var dbCommand = new AddBlogPostCommand(dbContext, blogPost);
                dbCommand.Execut();
                return(true);
            }

            return(false);
        }
Пример #4
0
        public string AddPost(string blogid, string username, string password, Post post, bool publish)
        {
            if (validateUser(username, password))
            {
                var author = getAuthor(username);

                var np = new AddBlogPostCommand()
                {
                    Title       = post.title,
                    Author      = author,
                    Description = post.mt_excerpt,
                    Content     = post.description,
                    CreatedAt   = post.dateCreated,
                    ModifiedAt  = DateTime.Now,
                    Public      = publish,
                    PublishOn   = DateTime.Now,
                    Image       = getImgUrl(post.description),
                    IsHtml      = true
                };

                var result = _cp.ProcessAsync(np).GetAwaiter().GetResult();

                if (result.Succeeded)
                {
                    _logger.LogInformation($"Successfully added post through metaweblog {post.title}");
                    if (post.categories.Any())
                    {
                        var sc = new SetBlogPostCategoriesByStringArrayCommand
                        {
                            Categories = post.categories.ToList(),
                            BlogPostId = result.Command.Id
                        };

                        var scResult = _cp.ProcessAsync(sc).GetAwaiter().GetResult();

                        if (scResult.Succeeded)
                        {
                            _logger.LogInformation($"Successfully added categories for post {post.title} through metaweblog");
                            return(result.Command.Id.ToString());
                        }
                    }
                    else
                    {
                        return(result.Command.Id.ToString());
                    }
                }
            }
            _logger.LogError($"Error adding post through metaweblog {post.title}");
            return("-1");
        }
Пример #5
0
        public async Task <IActionResult> AddPost(AddBlogPostViewModel model)
        {
            var content = Request.Form["editor1"];

            if (ModelState.IsValid)
            {
                var curUser = await _userManager.GetUserAsync(User);

                var author = await _qpa.ProcessAsync(new GetAuthorByAppUserIdQuery { Id = curUser.Id });

                var abpc = new AddBlogPostCommand
                {
                    Author = author,
                    Title  = model.Title,
                    //Content = model.Content,
                    Content     = content,
                    Description = model.Description,
                    CreatedAt   = DateTime.Now,
                    ModifiedAt  = DateTime.Now,
                    Public      = false,
                    PublishOn   = DateTime.Now.AddDays(7)
                };

                var result = await _cp.ProcessAsync(abpc);

                if (result.Succeeded)
                {
                    _logger.LogInformation("Added BlogPost {0} by {1} {2}", model.Title, author.FirstName, author.LastName);

                    return(RedirectToAction("EditPost", new { id = result.Command.Id }));
                }
                else
                {
                    _logger.LogWarning("Unable to add BlogPost {0} by {1} {2}", model.Title, author.FirstName, author.LastName);

                    ModelState.AddModelError("", "Error saving to database!");
                    return(View(model));
                }
            }
            return(View(model));
        }
Пример #6
0
        public async Task AddBlogPostCommandHandler_AddsBlog()
        {
            var imageService              = TestContext.CreateImageService();
            var builder                   = new BlogPostBuilder(_authorService, imageService);
            var handlerContext            = TestContext.CreateHandlerContext <BlogPostSummaryViewModel>(RequestDbContext, CreateMapper());
            var addBlogPostCommandHandler = new AddBlogPostCommandHandler(handlerContext, builder);
            var category                  = await RequestDbContext.Categories.FirstOrDefaultAsync();

            var addBlogPostCommand = new AddBlogPostCommand()
            {
                Subject      = "Test",
                ContentIntro = "Test",
                Content      = "Test",
                CategoryId   = category.Id
            };

            var result = await addBlogPostCommandHandler.Handle(addBlogPostCommand, CancellationToken.None);

            Assert.InRange(result.Id, 1, int.MaxValue);
            Assert.Equal(category.Name, result.Category);
        }
Пример #7
0
        public async Task AddBlogPostCommandHandler_WithFile_AddsBlog()
        {
            var mapper         = CreateMapper();
            var imageFactory   = TestContext.CreateImageService();
            var builder        = new BlogPostBuilder(_authorService, imageFactory);
            var handlerContext = TestContext.CreateHandlerContext <BlogPostSummaryViewModel>(RequestDbContext, mapper);
            var handler        = new AddBlogPostCommandHandler(handlerContext, builder);
            var fileMock       = TestContext.CreateFileMock();
            var file           = fileMock.Object;
            var category       = await RequestDbContext.Categories.FirstOrDefaultAsync();

            var message = new AddBlogPostCommand()
            {
                Subject      = "Test",
                Content      = "Test",
                ContentIntro = "Test",
                File         = file,
                CategoryId   = category.Id
            };

            var result = await handler.Handle(message, CancellationToken.None);

            Assert.NotNull(result.Image.UriPath);
        }
Пример #8
0
 public async Task <ActionResult <BlogPostSummaryViewModel> > Add([FromForm] AddBlogPostCommand command)
 {
     return(await _mediator.Send(command));
 }