CmsKit - Change TagEntityTypeDefinition configuration

pull/7483/head
enisn 5 years ago
parent fdd6b4234c
commit c62c3fa9b8

@ -21,20 +21,20 @@ namespace Volo.CmsKit.Tags
{
Check.NotNullOrWhiteSpace(entityType, nameof(entityType));
var result = options.EntityTypes.GetOrDefault(entityType) ?? throw new EntityNotTaggableException(entityType);
var result = options.EntityTypes.FirstOrDefault(x => x.EntityType == entityType) ?? throw new EntityNotTaggableException(entityType);
return Task.FromResult(result);
}
public virtual Task<List<TagEntityTypeDefiniton>> GetTagDefinitionsAsync()
{
return Task.FromResult(options.EntityTypes.Values.ToList());
return Task.FromResult(options.EntityTypes.ToList());
}
public virtual Task<bool> IsDefinedAsync([NotNull] string entityType)
{
Check.NotNullOrWhiteSpace(entityType, nameof(entityType));
return Task.FromResult(options.EntityTypes.ContainsKey(entityType));
return Task.FromResult(options.EntityTypes.Any(a => a.EntityType == entityType));
}
}
}

@ -4,17 +4,7 @@ using Volo.Abp.Localization;
namespace Volo.CmsKit.Tags
{
public class TagEntityTypeDefinitionDictionary : Dictionary<string, TagEntityTypeDefiniton>
public class TagEntityTypeDefinitionDictionary : HashSet<TagEntityTypeDefiniton>
{
public void AddOrReplace(
[NotNull] string entityType,
[CanBeNull] ILocalizableString displayName = null,
[CanBeNull] string createPolicy = null,
[CanBeNull] string updatePolicy = null,
[CanBeNull] string deletePolicy = null
)
{
this[entityType] = new TagEntityTypeDefiniton(entityType, displayName, createPolicy, updatePolicy, deletePolicy);
}
}
}

@ -1,11 +1,12 @@
using JetBrains.Annotations;
using System;
using Volo.Abp;
using Volo.Abp.Localization;
using Volo.CmsKit.Domain.Volo.CmsKit;
namespace Volo.CmsKit.Tags
{
public class TagEntityTypeDefiniton : PolicySpecifiedDefinition
public class TagEntityTypeDefiniton : PolicySpecifiedDefinition, IEquatable<TagEntityTypeDefiniton>
{
public string EntityType { get; }
@ -27,5 +28,10 @@ namespace Volo.CmsKit.Tags
DisplayName = displayName;
}
public bool Equals(TagEntityTypeDefiniton other)
{
return EntityType == other.EntityType;
}
}
}

@ -0,0 +1,66 @@
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Options;
using Shouldly;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Localization;
using Volo.CmsKit.Localization;
using Xunit;
namespace Volo.CmsKit.Tags
{
public class TagEntityTypeDefinitionDictionary_Tests : CmsKitDomainTestBase
{
private readonly CmsKitTagOptions cmsKitTagOptions;
public TagEntityTypeDefinitionDictionary_Tests()
{
var options = GetRequiredService<IOptions<CmsKitTagOptions>>();
cmsKitTagOptions = options.Value;
}
[Fact]
public void ShouldAddEntityTypeProperly_WithOnlyEntityType()
{
cmsKitTagOptions.EntityTypes.Add(new TagEntityTypeDefiniton("My.Entity.Type"));
}
[Fact]
public void ShouldAddEntityTypeProperly_WithEntityTypeAndDisplayName()
{
cmsKitTagOptions.EntityTypes.Add(
new TagEntityTypeDefiniton(
"My.Entity.Type",
LocalizableString.Create<CmsKitResource>("MyEntity")));
}
[Fact]
public void ShouldAddEntityType_WithAllParameters()
{
cmsKitTagOptions.EntityTypes.Add(
new TagEntityTypeDefiniton(
"My.Entity.Type",
LocalizableString.Create<CmsKitResource>("MyEntity"),
"SomeCreatePolicy",
"SomeUpdatePolicy",
"SomeDeletePolicy"
));
}
[Fact]
public void ShouldThrowException_WhileAddingExistingType()
{
var expectedCount = cmsKitTagOptions.EntityTypes.Count + 1;
var entityTypeDefinition = new TagEntityTypeDefiniton("My.Entity.Type");
cmsKitTagOptions.EntityTypes.Add(entityTypeDefinition);
cmsKitTagOptions.EntityTypes.Add(entityTypeDefinition);
cmsKitTagOptions.EntityTypes.Count.ShouldBe(expectedCount);
}
}
}

@ -1,5 +1,6 @@
using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Data;
@ -86,12 +87,12 @@ namespace Volo.CmsKit
}
private Task ConfigureCmsKitOptionsAsync()
{
_tagOptions.Value.EntityTypes.AddOrReplace(_cmsKitTestData.EntityType1);
_tagOptions.Value.EntityTypes.AddOrReplace(_cmsKitTestData.EntityType2);
_tagOptions.Value.EntityTypes.AddOrReplace(_cmsKitTestData.Content_1_EntityType);
_tagOptions.Value.EntityTypes.AddOrReplace(_cmsKitTestData.Content_2_EntityType);
_tagOptions.Value.EntityTypes.AddOrReplace(_cmsKitTestData.TagDefinition_1_EntityType);
{
_tagOptions.Value.EntityTypes.AddIfNotContains(new TagEntityTypeDefiniton(_cmsKitTestData.EntityType1));
_tagOptions.Value.EntityTypes.AddIfNotContains(new TagEntityTypeDefiniton(_cmsKitTestData.EntityType2));
_tagOptions.Value.EntityTypes.AddIfNotContains(new TagEntityTypeDefiniton(_cmsKitTestData.Content_1_EntityType));
_tagOptions.Value.EntityTypes.AddIfNotContains(new TagEntityTypeDefiniton(_cmsKitTestData.Content_2_EntityType));
_tagOptions.Value.EntityTypes.AddIfNotContains(new TagEntityTypeDefiniton(_cmsKitTestData.TagDefinition_1_EntityType));
return Task.CompletedTask;
}

Loading…
Cancel
Save