From 7f6534bcb0beebfd951248ab1cecf66793472cfa Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 30 Dec 2020 14:40:09 +0300 Subject: [PATCH 1/4] CmsKit - Add DynamicMaxLength to TagDtos --- .../Volo/CmsKit/Admin/Tags/TagCreateDto.cs | 5 +++++ .../Volo/CmsKit/Admin/Tags/TagUpdateDto.cs | 3 +++ 2 files changed, 8 insertions(+) diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagCreateDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagCreateDto.cs index 3eb75bec07..6dd90d1362 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagCreateDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagCreateDto.cs @@ -1,12 +1,17 @@ using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; +using Volo.CmsKit.Tags; namespace Volo.CmsKit.Admin.Tags { public class TagCreateDto { [Required] + [DynamicMaxLength(typeof(TagConsts), nameof(TagConsts.MaxEntityTypeLength))] public string EntityType { get; set; } + [Required] + [DynamicMaxLength(typeof(TagConsts), nameof(TagConsts.MaxNameLength))] public string Name { get; set; } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs index 4df242a997..c4298b7730 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs @@ -1,10 +1,13 @@ using System.ComponentModel.DataAnnotations; +using Volo.Abp.Validation; +using Volo.CmsKit.Tags; namespace Volo.CmsKit.Admin.Tags { public class TagUpdateDto { [Required] + [DynamicMaxLength(typeof(TagConsts), nameof(TagConsts.MaxNameLength))] public string Name { get; set; } } } From 1f58e9db362ba08af0ed921d8e8591811787ff08 Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 30 Dec 2020 15:07:44 +0300 Subject: [PATCH 2/4] CmsKit - Seperate TagAppServices as Admin & Public --- .../Tags/TagAdminAppService_Tests.cs | 56 +++++++++++++++++++ ..._Tests.cs => TagPublicAppService_Tests.cs} | 4 +- 2 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/TagAdminAppService_Tests.cs rename modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/{TagAppService_Tests.cs => TagPublicAppService_Tests.cs} (95%) diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/TagAdminAppService_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/TagAdminAppService_Tests.cs new file mode 100644 index 0000000000..237434ef9f --- /dev/null +++ b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/TagAdminAppService_Tests.cs @@ -0,0 +1,56 @@ +using Microsoft.Extensions.DependencyInjection; +using NSubstitute; +using Shouldly; +using System; +using System.Threading.Tasks; +using Volo.Abp; +using Volo.Abp.Clients; +using Volo.Abp.Users; +using Volo.Abp.Validation; +using Volo.CmsKit.Admin.Tags; +using Volo.CmsKit.Public.Tags; +using Xunit; + +namespace Volo.CmsKit.Tags +{ + public class TagAdminAppService_Tests : CmsKitApplicationTestBase + { + private readonly ITagAdminAppService _tagAdminAppService; + private ICurrentUser _currentUser; + private readonly CmsKitTestData _cmsKitTestData; + + public TagAdminAppService_Tests() + { + _tagAdminAppService = GetRequiredService(); + _cmsKitTestData = GetRequiredService(); + } + + protected override void AfterAddApplication(IServiceCollection services) + { + _currentUser = Substitute.For(); + services.AddSingleton(_currentUser); + } + + [Fact] + public async Task ShouldCreateProperly() + { + var list = await _tagAdminAppService.CreateAsync(new TagCreateDto + { + EntityType = "any_new_type", + Name = "1", + }); + + list.Id.ShouldNotBe(Guid.Empty); + } + + [Fact] + public async Task ShouldThrowException_WhenTagAlreadyExist() + { + await Should.ThrowAsync(async () => await _tagAdminAppService.CreateAsync(new TagCreateDto + { + EntityType = _cmsKitTestData.Content_1_EntityType, + Name = _cmsKitTestData.Content_1_Tags[0], + })); + } + } +} diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/TagAppService_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/TagPublicAppService_Tests.cs similarity index 95% rename from modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/TagAppService_Tests.cs rename to modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/TagPublicAppService_Tests.cs index 35b46b5a04..6ad1136167 100644 --- a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/TagAppService_Tests.cs +++ b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/TagPublicAppService_Tests.cs @@ -10,13 +10,13 @@ using Xunit; namespace Volo.CmsKit.Tags { - public class TagAppService_Tests : CmsKitApplicationTestBase + public class TagPublicAppService_Tests : CmsKitApplicationTestBase { private readonly ITagAppService _tagAppService; private ICurrentUser _currentUser; private readonly CmsKitTestData _cmsKitTestData; - public TagAppService_Tests() + public TagPublicAppService_Tests() { _tagAppService = GetRequiredService(); _cmsKitTestData = GetRequiredService(); From bf6b37f3e96d85a2d5b14da69f2e5f3a1db493f6 Mon Sep 17 00:00:00 2001 From: enisn Date: Wed, 30 Dec 2020 15:15:01 +0300 Subject: [PATCH 3/4] CmsKit - Add TagAlreadyExistException --- .../Volo/CmsKit/CmsKitErrorCodes.cs | 2 +- .../CmsKit/Tags/TagAlreadyExistException.cs | 17 +++++++++++++++++ .../Volo/CmsKit/Tags/TagManager.cs | 4 ++-- .../Tags/TagAdminAppService_Tests.cs | 6 +----- 4 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/TagAlreadyExistException.cs diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/CmsKitErrorCodes.cs b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/CmsKitErrorCodes.cs index 336d163cfe..76ba39c3f2 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/CmsKitErrorCodes.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain.Shared/Volo/CmsKit/CmsKitErrorCodes.cs @@ -2,6 +2,6 @@ { public static class CmsKitErrorCodes { - //Add your business exception error codes here... + public const string TagAlreadyExist = "CmsKit:0001"; } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/TagAlreadyExistException.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/TagAlreadyExistException.cs new file mode 100644 index 0000000000..6cae0dde92 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/TagAlreadyExistException.cs @@ -0,0 +1,17 @@ +using JetBrains.Annotations; +using System; +using Volo.Abp; + +namespace Volo.CmsKit.Tags +{ + [Serializable] + public class TagAlreadyExistException : BusinessException + { + public TagAlreadyExistException([NotNull] string entityType, [NotNull] string name) + { + Code = CmsKitErrorCodes.TagAlreadyExist; + WithData(nameof(Tag.EntityType), entityType); + WithData(nameof(Tag.Name), name); + } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/TagManager.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/TagManager.cs index e1e9366a99..042b4e27a9 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/TagManager.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Tags/TagManager.cs @@ -41,7 +41,7 @@ namespace Volo.CmsKit.Tags { if (await _tagRepository.AnyAsync(entityType, name, tenantId, cancellationToken)) { - throw new BusinessException(message: "Tag already exist!"); // Already Exist + throw new TagAlreadyExistException(entityType, name); } return await _tagRepository.InsertAsync( @@ -63,7 +63,7 @@ namespace Volo.CmsKit.Tags if (name != entity.Name && await _tagRepository.AnyAsync(entity.EntityType, name, entity.TenantId, cancellationToken)) { - throw new BusinessException(message: "Tag already exist!"); // Already Exist + throw new TagAlreadyExistException(entity.EntityType, name); } entity.SetName(name); diff --git a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/TagAdminAppService_Tests.cs b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/TagAdminAppService_Tests.cs index 237434ef9f..4ad0d43468 100644 --- a/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/TagAdminAppService_Tests.cs +++ b/modules/cms-kit/test/Volo.CmsKit.Application.Tests/Tags/TagAdminAppService_Tests.cs @@ -3,12 +3,8 @@ using NSubstitute; using Shouldly; using System; using System.Threading.Tasks; -using Volo.Abp; -using Volo.Abp.Clients; using Volo.Abp.Users; -using Volo.Abp.Validation; using Volo.CmsKit.Admin.Tags; -using Volo.CmsKit.Public.Tags; using Xunit; namespace Volo.CmsKit.Tags @@ -46,7 +42,7 @@ namespace Volo.CmsKit.Tags [Fact] public async Task ShouldThrowException_WhenTagAlreadyExist() { - await Should.ThrowAsync(async () => await _tagAdminAppService.CreateAsync(new TagCreateDto + await Should.ThrowAsync(async () => await _tagAdminAppService.CreateAsync(new TagCreateDto { EntityType = _cmsKitTestData.Content_1_EntityType, Name = _cmsKitTestData.Content_1_Tags[0], From 4e50ccf95f251f1b0d66275644c87e0c2601ee1c Mon Sep 17 00:00:00 2001 From: Ilkay Ilknur Date: Thu, 31 Dec 2020 10:48:49 +0300 Subject: [PATCH 4/4] use GetCancellationToken method to pass cancellation tokens. --- .../Volo/CmsKit/Contents/EfCoreContentRepository.cs | 6 +++--- .../Volo/CmsKit/Tags/EfCoreTagRepository.cs | 6 +++--- .../Volo/CmsKit/MongoDB/Contents/MongoContentRepository.cs | 6 +++--- .../Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Contents/EfCoreContentRepository.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Contents/EfCoreContentRepository.cs index d426d1d7c5..9293d637f7 100644 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Contents/EfCoreContentRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Contents/EfCoreContentRepository.cs @@ -24,7 +24,7 @@ namespace Volo.CmsKit.Contents x.EntityType == entityType && x.EntityId == entityId && x.TenantId == tenantId, - cancellationToken: cancellationToken + cancellationToken: GetCancellationToken(cancellationToken) ); } @@ -39,7 +39,7 @@ namespace Volo.CmsKit.Contents x.EntityType == entityType && x.EntityId == entityId && x.TenantId == tenantId, - cancellationToken: cancellationToken + cancellationToken: GetCancellationToken(cancellationToken) ); } @@ -49,7 +49,7 @@ namespace Volo.CmsKit.Contents x.EntityType == entityType && x.EntityId == entityId && x.TenantId == tenantId, - cancellationToken: cancellationToken); + cancellationToken: GetCancellationToken(cancellationToken)); } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreTagRepository.cs b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreTagRepository.cs index 593905cc95..0b6cfe1f48 100644 --- a/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreTagRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.EntityFrameworkCore/Volo/CmsKit/Tags/EfCoreTagRepository.cs @@ -29,7 +29,7 @@ namespace Volo.CmsKit.Tags x.EntityType == entityType && x.Name == name && x.TenantId == tenantId, - cancellationToken); + GetCancellationToken(cancellationToken)); } public virtual Task GetAsync( @@ -42,7 +42,7 @@ namespace Volo.CmsKit.Tags x.EntityType == entityType && x.Name == name && x.TenantId == tenantId, - cancellationToken: cancellationToken); + cancellationToken: GetCancellationToken(cancellationToken)); } public virtual Task FindAsync( @@ -55,7 +55,7 @@ namespace Volo.CmsKit.Tags x.EntityType == entityType && x.Name == name && x.TenantId == tenantId, - cancellationToken: cancellationToken); + cancellationToken: GetCancellationToken(cancellationToken)); } public virtual async Task> GetAllRelatedTagsAsync( diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Contents/MongoContentRepository.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Contents/MongoContentRepository.cs index fd673cb34c..ccdee8b431 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Contents/MongoContentRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Contents/MongoContentRepository.cs @@ -24,7 +24,7 @@ namespace Volo.CmsKit.MongoDB.Contents x.EntityType == entityType && x.EntityId == entityId && x.TenantId == tenantId, - cancellationToken: cancellationToken + cancellationToken: GetCancellationToken(cancellationToken) ); } @@ -39,7 +39,7 @@ namespace Volo.CmsKit.MongoDB.Contents x.EntityType == entityType && x.EntityId == entityId && x.TenantId == tenantId, - cancellationToken: cancellationToken + cancellationToken: GetCancellationToken(cancellationToken) ); } @@ -49,7 +49,7 @@ namespace Volo.CmsKit.MongoDB.Contents x.EntityType == entityType && x.EntityId == entityId && x.TenantId == tenantId, - cancellationToken: cancellationToken); + cancellationToken: GetCancellationToken(cancellationToken)); } } } \ No newline at end of file diff --git a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs index de543d4666..86dc20d83c 100644 --- a/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs +++ b/modules/cms-kit/src/Volo.CmsKit.MongoDB/Volo/CmsKit/MongoDB/Tags/MongoTagRepository.cs @@ -29,7 +29,7 @@ namespace Volo.CmsKit.MongoDB.Tags x.EntityType == entityType && x.Name == name && x.TenantId == tenantId, - cancellationToken); + GetCancellationToken(cancellationToken)); } public Task GetAsync( @@ -42,7 +42,7 @@ namespace Volo.CmsKit.MongoDB.Tags x.EntityType == entityType && x.Name == name && x.TenantId == tenantId, - cancellationToken: cancellationToken); + cancellationToken: GetCancellationToken(cancellationToken)); } public Task FindAsync( @@ -55,7 +55,7 @@ namespace Volo.CmsKit.MongoDB.Tags x.EntityType == entityType && x.Name == name && x.TenantId == tenantId, - cancellationToken: cancellationToken); + cancellationToken: GetCancellationToken(cancellationToken)); } public virtual async Task> GetAllRelatedTagsAsync(