Browse Source

CmsKit - Update tests for MediaDescriptor

pull/7908/head
enisn 6 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(); var newId = GuidGenerator.Create();
using (var stream = inputStream.GetStream()) 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 MediaContainer.SaveAsync(newId.ToString(), stream);
await MediaDescriptorRepository.InsertAsync(newEntity); 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) 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 JetBrains.Annotations;
using System;
namespace Volo.CmsKit.MediaDescriptors namespace Volo.CmsKit.MediaDescriptors
{ {
public class MediaDescriptorDefinition : PolicySpecifiedDefinition public class MediaDescriptorDefinition : PolicySpecifiedDefinition, IEquatable<MediaDescriptorDefinition>
{ {
public MediaDescriptorDefinition( public MediaDescriptorDefinition(
[NotNull] string entityType, [NotNull] string entityType,
@ -14,5 +15,10 @@ namespace Volo.CmsKit.MediaDescriptors
deletePolicy) 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.Threading.Tasks;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Services; using Volo.Abp.Domain.Services;
using Volo.CmsKit.MediaDescriptors;
namespace Volo.CmsKit.MediaDescriptors namespace Volo.CmsKit.MediaDescriptors
{ {
@ -17,7 +12,7 @@ namespace Volo.CmsKit.MediaDescriptors
MediaDescriptorDefinitionStore = mediaDescriptorDefinitionStore; 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)) 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) var inputStream = new CreateMediaInputStream(stream)
{ {
ContentType = mediaType, ContentType = mediaType,
Name = mediaName Name = mediaName,
EntityType = _cmsKitTestData.Media_1_EntityType
}; };
var media = await _mediaDescriptorAdminAppService.CreateAsync(inputStream); 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 IMediaDescriptorRepository _mediaDescriptorRepository;
private readonly IBlobContainer<MediaContainer> _mediaBlobContainer; private readonly IBlobContainer<MediaContainer> _mediaBlobContainer;
private readonly BlogManager _blogManager; private readonly BlogManager _blogManager;
private readonly IOptions<CmsKitMediaOptions> _mediaOptions;
public CmsKitDataSeedContributor( public CmsKitDataSeedContributor(
IGuidGenerator guidGenerator, IGuidGenerator guidGenerator,
@ -71,7 +72,8 @@ namespace Volo.CmsKit
IOptions<CmsKitTagOptions> tagOptions, IOptions<CmsKitTagOptions> tagOptions,
IMediaDescriptorRepository mediaDescriptorRepository, IMediaDescriptorRepository mediaDescriptorRepository,
IBlobContainer<MediaContainer> mediaBlobContainer, IBlobContainer<MediaContainer> mediaBlobContainer,
BlogManager blogManager) BlogManager blogManager,
IOptions<CmsKitMediaOptions> cmsMediaOptions)
{ {
_guidGenerator = guidGenerator; _guidGenerator = guidGenerator;
_cmsUserRepository = cmsUserRepository; _cmsUserRepository = cmsUserRepository;
@ -95,6 +97,7 @@ namespace Volo.CmsKit
_mediaDescriptorRepository = mediaDescriptorRepository; _mediaDescriptorRepository = mediaDescriptorRepository;
_mediaBlobContainer = mediaBlobContainer; _mediaBlobContainer = mediaBlobContainer;
_blogManager = blogManager; _blogManager = blogManager;
_mediaOptions = cmsMediaOptions;
} }
public async Task SeedAsync(DataSeedContext context) 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.Content_2_EntityType));
_tagOptions.Value.EntityTypes.AddIfNotContains(new TagEntityTypeDefiniton(_cmsKitTestData.TagDefinition_1_EntityType)); _tagOptions.Value.EntityTypes.AddIfNotContains(new TagEntityTypeDefiniton(_cmsKitTestData.TagDefinition_1_EntityType));
_mediaOptions.Value.EntityTypes.AddIfNotContains(new MediaDescriptorDefinition(_cmsKitTestData.Media_1_EntityType));
return Task.CompletedTask; 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 bool BlogFeature_2_Enabled => false;
public Guid Media_1_Id { get; } = Guid.NewGuid(); 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