From 7bf8a90af68fa9c2294b45624796cfaaf8009583 Mon Sep 17 00:00:00 2001 From: Ahmet Date: Wed, 10 Feb 2021 13:52:46 +0300 Subject: [PATCH] added admin tests --- .../MediaDescriptorAdminAppService_Tests.cs | 53 +++++++++++++++++++ .../CmsKitDataSeedContributor.cs | 26 ++++++++- .../Volo.CmsKit.TestBase/CmsKitTestData.cs | 8 +++ 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 modules/cms-kit/test/Volo.CmsKit.Application.Tests/MediaDescriptors/MediaDescriptorAdminAppService_Tests.cs diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/MediaDescriptors/MediaDescriptorAdminAppService_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/MediaDescriptors/MediaDescriptorAdminAppService_Tests.cs new file mode 100644 index 0000000000..20bfaf2c12 --- /dev/null +++ b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/MediaDescriptors/MediaDescriptorAdminAppService_Tests.cs @@ -0,0 +1,53 @@ +using System; +using System.IO; +using System.Text; +using System.Threading.Tasks; +using Shouldly; +using Volo.CmsKit.Admin.MediaDescriptors; +using Xunit; + +namespace Volo.CmsKit.MediaDescriptors +{ + public class MediaDescriptorAdminAppService_Tests : CmsKitApplicationTestBase + { + private readonly CmsKitTestData _cmsKitTestData; + private readonly IMediaDescriptorAdminAppService _mediaDescriptorAdminAppService; + private readonly IMediaDescriptorRepository _mediaDescriptorRepository; + + public MediaDescriptorAdminAppService_Tests() + { + _cmsKitTestData = GetRequiredService(); + _mediaDescriptorAdminAppService = GetRequiredService(); + _mediaDescriptorRepository = GetRequiredService(); + } + + [Fact] + public async Task Should_Create_Media() + { + var mediaName = "README.md"; + var mediaType = "text/markdown"; + var mediaContent = + "# ABP Framework\nABP Framework is a complete **infrastructure** based on the **ASP.NET Core** to create **modern web applications** and **APIs** by following the software development **best practices** and the **latest technologies**."; + + using var stream = new MemoryStream(Encoding.UTF8.GetBytes(mediaContent)); + + var inputStream = new CreateMediaInputStream(stream) + { + ContentType = mediaType, + Name = mediaName + }; + + var media = await _mediaDescriptorAdminAppService.CreateAsync(inputStream); + + media.ShouldNotBeNull(); + } + + [Fact] + public async Task Should_Delete_Media() + { + await _mediaDescriptorAdminAppService.DeleteAsync(_cmsKitTestData.Media_1_Id); + + (await _mediaDescriptorRepository.FindAsync(_cmsKitTestData.Media_1_Id)).ShouldBeNull(); + } + } +} \ No newline at end of file diff --git a/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs b/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs index 2ac4a23171..68a65de89e 100644 --- a/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs +++ b/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs @@ -1,8 +1,11 @@ using Microsoft.Extensions.Options; using System; using System.Collections.Generic; +using System.IO; using System.Linq; +using System.Text; using System.Threading.Tasks; +using Volo.Abp.BlobStoring; using Volo.Abp.Data; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Repositories; @@ -12,6 +15,7 @@ using Volo.Abp.Users; using Volo.CmsKit.Blogs; using Volo.CmsKit.Comments; using Volo.CmsKit.Contents; +using Volo.CmsKit.MediaDescriptors; using Volo.CmsKit.Pages; using Volo.CmsKit.Ratings; using Volo.CmsKit.Reactions; @@ -38,6 +42,8 @@ namespace Volo.CmsKit private readonly IBlogPostRepository _blogPostRepository; private readonly IOptions _options; private readonly IOptions _tagOptions; + private readonly IMediaDescriptorRepository _mediaDescriptorRepository; + private readonly IBlobContainer _mediaBlobContainer; public CmsKitDataSeedContributor( IGuidGenerator guidGenerator, @@ -55,7 +61,9 @@ namespace Volo.CmsKit IBlogPostRepository blogPostRepository, IEntityTagManager entityTagManager, IOptions options, - IOptions tagOptions) + IOptions tagOptions, + IMediaDescriptorRepository mediaDescriptorRepository, + IBlobContainer mediaBlobContainer) { _guidGenerator = guidGenerator; _cmsUserRepository = cmsUserRepository; @@ -73,6 +81,8 @@ namespace Volo.CmsKit _blogPostRepository = blogPostRepository; _options = options; _tagOptions = tagOptions; + _mediaDescriptorRepository = mediaDescriptorRepository; + _mediaBlobContainer = mediaBlobContainer; } public async Task SeedAsync(DataSeedContext context) @@ -96,6 +106,8 @@ namespace Volo.CmsKit await SeedPagesAsync(); await SeedBlogsAsync(); + + await SeedMediaAsync(); } } @@ -314,5 +326,17 @@ namespace Volo.CmsKit await _blogPostRepository.InsertAsync(new BlogPost(_cmsKitTestData.BlogPost_2_Id, blog.Id, _cmsKitTestData.BlogPost_2_Title, _cmsKitTestData.BlogPost_2_Slug, "Short desc 2")); } + + private async Task SeedMediaAsync() + { + using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(_cmsKitTestData.Media_1_Content))) + { + var media = new MediaDescriptor(_cmsKitTestData.Media_1_Id, _cmsKitTestData.Media_1_Name, _cmsKitTestData.Media_1_ContentType, stream.Length); + + await _mediaDescriptorRepository.InsertAsync(media); + + await _mediaBlobContainer.SaveAsync(media.Id.ToString(), stream); + } + } } } diff --git a/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs b/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs index 2d6bf30da6..b0b4a5b1ba 100644 --- a/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs +++ b/modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs @@ -90,5 +90,13 @@ namespace Volo.CmsKit public string BlogPost_2_Title => "How to use CmsKit"; public string BlogPost_2_Slug => "how-to-use-cms-kit"; + + public Guid Media_1_Id { get; } = Guid.NewGuid(); + + public string Media_1_Content = "Hi, this is text file"; + + public string Media_1_Name = "hello.txt"; + + public string Media_1_ContentType = "text/plain"; } }