diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Blogs/BlogPostAdminAppService_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Blogs/BlogPostAdminAppService_Tests.cs new file mode 100644 index 0000000000..f0b3d595f4 --- /dev/null +++ b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Blogs/BlogPostAdminAppService_Tests.cs @@ -0,0 +1,16 @@ +using System; +using Shouldly; +using Volo.CmsKit.Admin.Blogs; + +namespace Volo.CmsKit.Blogs +{ + public class BlogPostAdminAppService_Tests : CmsKitApplicationTestBase + { + private readonly IBlogPostAdminAppService blogPostAdminAppService; + + public BlogPostAdminAppService_Tests() + { + blogPostAdminAppService = GetRequiredService(); + } + } +} diff --git a/modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Blogs/BlogPostManager_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Blogs/BlogPostManager_Tests.cs new file mode 100644 index 0000000000..5950fc1333 --- /dev/null +++ b/modules/cms-kit/test/Volo.CmsKit.Domain.Tests/Blogs/BlogPostManager_Tests.cs @@ -0,0 +1,75 @@ +using Shouldly; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Guids; +using Volo.CmsKit.Tags; +using Xunit; + +namespace Volo.CmsKit.Blogs +{ + public class BlogPostManager_Tests : CmsKitDomainTestBase + { + private readonly IBlogPostManager blogPostManager; + private readonly IGuidGenerator guidGenerator; + private readonly IBlogPostRepository blogPostRepository; + private readonly CmsKitTestData cmsKitTestData; + + public BlogPostManager_Tests( + IBlogPostManager blogPostManager, + IGuidGenerator guidGenerator, + IBlogPostRepository blogPostRepository, + CmsKitTestData cmsKitTestData) + { + this.blogPostManager = blogPostManager; + this.guidGenerator = guidGenerator; + this.blogPostRepository = blogPostRepository; + this.cmsKitTestData = cmsKitTestData; + } + + [Fact] + public async Task CreateAsync_ShouldWorkProperly_WithCorrectData() + { + var title = "New blog post"; + var urlSlug = "new-blog-post"; + + var created = await blogPostManager.CreateAsync( + new BlogPost(guidGenerator.Create(), title, urlSlug)); + + created.Id.ShouldNotBe(Guid.Empty); + + var blogPost = await blogPostRepository.GetAsync(created.Id); + blogPost.Title.ShouldBe(title); + blogPost.UrlSlug.ShouldBe(urlSlug); + } + + [Fact] + public async Task CreateAsync_ShouldThrowException_WhenUrlSlugAlreadyExists() + { + var blogPost = new BlogPost(guidGenerator.Create(), "Any New Title", cmsKitTestData.Blog_1_UrlSlug); + + await Should.ThrowAsync(async () => + await blogPostManager.CreateAsync(blogPost)); + } + + [Fact] + public async Task UpdateAsync_ShoudlWorkProperly_WithCorrectData() + { + var newTitle = "Yet Another Post"; + var newUrlSlug = "yet-another-post"; + + var blogPost = await blogPostRepository.GetAsync(cmsKitTestData.Blog_1_Id); + + blogPost.SetTitle(newTitle); + blogPost.SetUrlSlug(newUrlSlug); + + await blogPostManager.UpdateAsync(blogPost); + + var updated = await blogPostRepository.GetAsync(cmsKitTestData.Blog_1_Id); + updated.Title.ShouldBe(newTitle); + updated.UrlSlug.ShouldBe(newUrlSlug); + } + } +} diff --git a/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs b/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs index 46a552641b..8af99d512d 100644 --- a/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs +++ b/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs @@ -6,6 +6,7 @@ using Volo.Abp.DependencyInjection; using Volo.Abp.Guids; using Volo.Abp.MultiTenancy; using Volo.Abp.Users; +using Volo.CmsKit.Blogs; using Volo.CmsKit.Comments; using Volo.CmsKit.Contents; using Volo.CmsKit.Pages; @@ -29,6 +30,9 @@ namespace Volo.CmsKit private readonly IEntityTagRepository _entityTagRepository; private readonly ITagManager _tagManager; private readonly IPageRepository _pageRepository; + private readonly IBlogRepository _blogRepository; + private readonly IBlogPostRepository _blogPostRepository; + public CmsKitDataSeedContributor( IGuidGenerator guidGenerator, ICmsUserRepository cmsUserRepository, @@ -36,11 +40,13 @@ namespace Volo.CmsKit ICommentRepository commentRepository, ReactionManager reactionManager, IRatingRepository ratingRepository, - ICurrentTenant currentTenant, + ICurrentTenant currentTenant, IContentRepository contentRepository, - ITagManager tagManager, - IEntityTagRepository entityTagRepository, - IPageRepository pageRepository) + ITagManager tagManager, + IEntityTagRepository entityTagRepository, + IPageRepository pageRepository, + IBlogRepository blogRepository, + IBlogPostRepository blogPostRepository) { _guidGenerator = guidGenerator; _cmsUserRepository = cmsUserRepository; @@ -53,6 +59,8 @@ namespace Volo.CmsKit _tagManager = tagManager; _entityTagRepository = entityTagRepository; _pageRepository = pageRepository; + _blogRepository = blogRepository; + _blogPostRepository = blogPostRepository; } public async Task SeedAsync(DataSeedContext context) @@ -72,6 +80,8 @@ namespace Volo.CmsKit await SeedTagsAsync(); await SeedPagesAsync(); + + await SeedBlogsAsync(); } } @@ -208,14 +218,14 @@ namespace Volo.CmsKit _cmsKitTestData.Content_1_EntityId, _cmsKitTestData.Content_1 ); - + var content2 = new Content( _cmsKitTestData.Content_2_Id, _cmsKitTestData.Content_2_EntityType, _cmsKitTestData.Content_2_EntityId, _cmsKitTestData.Content_2 ); - + var content3 = new Content( Guid.NewGuid(), "deleted_entity_type", @@ -239,11 +249,11 @@ namespace Volo.CmsKit await _entityTagRepository.InsertAsync(new EntityTag(tagEntity.Id, _cmsKitTestData.Content_1_EntityId)); } - + foreach (var tag in _cmsKitTestData.Content_2_Tags) { var tagEntity = await _tagManager.InsertAsync(_guidGenerator.Create(), _cmsKitTestData.Content_2_EntityType, tag); - + await _entityTagRepository.InsertAsync(new EntityTag(tagEntity.Id, _cmsKitTestData.Content_2_EntityId)); } } @@ -252,15 +262,24 @@ namespace Volo.CmsKit { var page1 = new Page(_cmsKitTestData.Page_1_Id, _cmsKitTestData.Page_1_Title, _cmsKitTestData.Page_1_Url, _cmsKitTestData.Page_1_Description); var page1Content = new Content(_guidGenerator.Create(), nameof(Page), page1.Id.ToString(), _cmsKitTestData.Page_1_Content); - + await _pageRepository.InsertAsync(page1); await _contentRepository.InsertAsync(page1Content); - + var page2 = new Page(_cmsKitTestData.Page_2_Id, _cmsKitTestData.Page_2_Title, _cmsKitTestData.Page_2_Url, _cmsKitTestData.Page_2_Description); var page2Content = new Content(_guidGenerator.Create(), nameof(Page), page2.Id.ToString(), _cmsKitTestData.Page_2_Content); await _pageRepository.InsertAsync(page2); await _contentRepository.InsertAsync(page2Content); } + + private async Task SeedBlogsAsync() + { + var blog = await _blogRepository.InsertAsync(new Blog(_cmsKitTestData.BlogName)); + + await _blogPostRepository.InsertAsync(new BlogPost(blog.Id, _cmsKitTestData.Blog_1_Title, _cmsKitTestData.Blog_1_UrlSlug, "Short desc 1")); + + await _blogPostRepository.InsertAsync(new BlogPost(blog.Id, _cmsKitTestData.Blog_2_Title, _cmsKitTestData.Blog_2_UrlSlug, "Short desc 2")); + } } } diff --git a/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs b/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs index 7433759f40..e4b4fc89cb 100644 --- a/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs +++ b/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs @@ -59,5 +59,19 @@ namespace Volo.CmsKit public Guid Page_2_Id { get; } = Guid.NewGuid(); public string Page_2_Content => Content_2; + + public string BlogName => "Cms Blog"; + + public Guid Blog_1_Id { get; } = Guid.NewGuid(); + + public string Blog_1_Title => "How to install CmsKit?"; + + public string Blog_1_UrlSlug => "how-to-install-cms-kit"; + + public Guid Blog_2_Id { get; } = Guid.NewGuid(); + + public string Blog_2_Title => "How to use CmsKit?"; + + public string Blog_2_UrlSlug => "how-to-use-cms-kit?"; } }