Browse Source

CmsKit - Update tests for MediaDescriptor

pull/7908/head
enisn 5 years ago
parent
commit
39b449569a
  1. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminAppService.cs
  2. 4
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/AssemblyInfo.cs
  3. 6
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/MediaDescriptors/DefaultMediaDescriptorDefinitionStore.cs
  4. 8
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/MediaDescriptors/MediaDescriptorDefinition.cs
  5. 9
      modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/MediaDescriptors/MediaDescriptorManager.cs
  6. 3
      modules/cms-kit/test/Volo.CmsKit.Application.Tests/MediaDescriptors/MediaDescriptorAdminAppService_Tests.cs
  7. 44
      modules/cms-kit/test/Volo.CmsKit.Domain.Tests/MediaDescriptors/MediaDescriptorManager_Test.cs
  8. 7
      modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs
  9. 12
      modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorAdminAppService.cs

@ -40,7 +40,7 @@ namespace Volo.CmsKit.Admin.MediaDescriptors
var newId = GuidGenerator.Create();
using (var stream = inputStream.GetStream())
{
var newEntity = await MediaDescriptorManager.Create(inputStream.ContentType, inputStream.Name, inputStream.ContentType, inputStream.ContentLength ?? 0);
var newEntity = await MediaDescriptorManager.CreateAsync(inputStream.EntityType, inputStream.Name, inputStream.ContentType, inputStream.ContentLength ?? 0);
await MediaContainer.SaveAsync(newId.ToString(), stream);
await MediaDescriptorRepository.InsertAsync(newEntity);

4
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/AssemblyInfo.cs

@ -0,0 +1,4 @@
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("Volo.CmsKit.Domain.Tests", AllInternalsVisible = true)]
[assembly: InternalsVisibleTo("Volo.CmsKit.TestBase", AllInternalsVisible = true)]

6
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/MediaDescriptors/DefaultMediaDescriptorDefinitionStore.cs

@ -37,7 +37,11 @@ namespace Volo.CmsKit.MediaDescriptors
public Task<bool> IsDefinedAsync([NotNull] string entityType)
{
return Task.Run(() => Options.EntityTypes.Any(a => a.EntityType == entityType));
Check.NotNullOrEmpty(entityType, nameof(entityType));
var isDefined = Options.EntityTypes.Any(a => a.EntityType == entityType);
return Task.FromResult(isDefined);
}
}
}

8
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/MediaDescriptors/MediaDescriptorDefinition.cs

@ -1,8 +1,9 @@
using JetBrains.Annotations;
using System;
namespace Volo.CmsKit.MediaDescriptors
{
public class MediaDescriptorDefinition : PolicySpecifiedDefinition
public class MediaDescriptorDefinition : PolicySpecifiedDefinition, IEquatable<MediaDescriptorDefinition>
{
public MediaDescriptorDefinition(
[NotNull] string entityType,
@ -14,5 +15,10 @@ namespace Volo.CmsKit.MediaDescriptors
deletePolicy)
{
}
public bool Equals(MediaDescriptorDefinition other)
{
return base.Equals(other);
}
}
}

9
modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/MediaDescriptors/MediaDescriptorManager.cs

@ -1,10 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services;
using Volo.CmsKit.MediaDescriptors;
namespace Volo.CmsKit.MediaDescriptors
{
@ -17,7 +12,7 @@ namespace Volo.CmsKit.MediaDescriptors
MediaDescriptorDefinitionStore = mediaDescriptorDefinitionStore;
}
public virtual async Task<MediaDescriptor> Create(string entityType, string name, string mimeType, long size)
public virtual async Task<MediaDescriptor> CreateAsync(string entityType, string name, string mimeType, long size)
{
if(!await MediaDescriptorDefinitionStore.IsDefinedAsync(entityType))
{

3
modules/cms-kit/test/Volo.CmsKit.Application.Tests/MediaDescriptors/MediaDescriptorAdminAppService_Tests.cs

@ -34,7 +34,8 @@ namespace Volo.CmsKit.MediaDescriptors
var inputStream = new CreateMediaInputStream(stream)
{
ContentType = mediaType,
Name = mediaName
Name = mediaName,
EntityType = _cmsKitTestData.Media_1_EntityType
};
var media = await _mediaDescriptorAdminAppService.CreateAsync(inputStream);

44
modules/cms-kit/test/Volo.CmsKit.Domain.Tests/MediaDescriptors/MediaDescriptorManager_Test.cs

@ -0,0 +1,44 @@
using Shouldly;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.CmsKit.Blogs;
using Xunit;
namespace Volo.CmsKit.MediaDescriptors
{
public class MediaDescriptorManager_Test : CmsKitDomainTestBase
{
private readonly MediaDescriptorManager manager;
private readonly CmsKitTestData testData;
public MediaDescriptorManager_Test()
{
manager = GetRequiredService<MediaDescriptorManager>();
testData = GetRequiredService<CmsKitTestData>();
}
[Fact]
public async Task CreateAsync_ShouldWorkProperly_WithDefinedEntityType()
{
var created = await manager.CreateAsync(testData.Media_1_EntityType, "MyAwesomeImage.png", "image/png", 128000);
created.ShouldNotBeNull();
created.Id.ShouldNotBe(Guid.Empty);
}
[Fact]
public async Task CreateAsync_ShouldThrowException_WithUndefinedEntityType()
{
var undefinedEntityType = "My.Any.EntityType";
var exception = await Should.ThrowAsync<EntityCantHaveMediaException>(async () =>
await manager.CreateAsync(undefinedEntityType, "import.json", "application/json", 256000));
exception.ShouldNotBeNull();
exception.EntityType.ShouldBe(undefinedEntityType);
}
}
}

7
modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitDataSeedContributor.cs

@ -48,6 +48,7 @@ namespace Volo.CmsKit
private readonly IMediaDescriptorRepository _mediaDescriptorRepository;
private readonly IBlobContainer<MediaContainer> _mediaBlobContainer;
private readonly BlogManager _blogManager;
private readonly IOptions<CmsKitMediaOptions> _mediaOptions;
public CmsKitDataSeedContributor(
IGuidGenerator guidGenerator,
@ -71,7 +72,8 @@ namespace Volo.CmsKit
IOptions<CmsKitTagOptions> tagOptions,
IMediaDescriptorRepository mediaDescriptorRepository,
IBlobContainer<MediaContainer> mediaBlobContainer,
BlogManager blogManager)
BlogManager blogManager,
IOptions<CmsKitMediaOptions> cmsMediaOptions)
{
_guidGenerator = guidGenerator;
_cmsUserRepository = cmsUserRepository;
@ -95,6 +97,7 @@ namespace Volo.CmsKit
_mediaDescriptorRepository = mediaDescriptorRepository;
_mediaBlobContainer = mediaBlobContainer;
_blogManager = blogManager;
_mediaOptions = cmsMediaOptions;
}
public async Task SeedAsync(DataSeedContext context)
@ -133,6 +136,8 @@ namespace Volo.CmsKit
_tagOptions.Value.EntityTypes.AddIfNotContains(new TagEntityTypeDefiniton(_cmsKitTestData.Content_2_EntityType));
_tagOptions.Value.EntityTypes.AddIfNotContains(new TagEntityTypeDefiniton(_cmsKitTestData.TagDefinition_1_EntityType));
_mediaOptions.Value.EntityTypes.AddIfNotContains(new MediaDescriptorDefinition(_cmsKitTestData.Media_1_EntityType));
return Task.CompletedTask;
}

12
modules/cms-kit/test/Volo.CmsKit.TestBase/CmsKitTestData.cs

@ -101,13 +101,13 @@ namespace Volo.CmsKit
public bool BlogFeature_2_Enabled => false;
public Guid Media_1_Id { get; } = Guid.NewGuid();
public string Media_1_EntityType = nameof(Blog);
public string Media_1_Content = "Hi, this is text file";
public string Media_1_Name = "hello.txt";
public string Media_1_EntityType => nameof(Blog);
public string Media_1_ContentType = "text/plain";
public string Media_1_Content { get; } = "Hi, this is text file";
public string Media_1_Name { get; } = "hello.txt";
public string Media_1_ContentType { get; } = "text/plain";
}
}

Loading…
Cancel
Save