From 9b8ab09f23d13be8ca948623d448056af48cab0c Mon Sep 17 00:00:00 2001 From: YinChang0626 Date: Sun, 15 Nov 2020 00:17:17 +0800 Subject: [PATCH 1/3] fix bug of FeatureManager.GetAllWithProviderAsync and add unittest --- .../Volo/Abp/FeatureManagement/FeatureManager.cs | 6 ++---- .../Abp/FeatureManagement/FeatureManager_Tests.cs | 11 ++++++++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs index 38c61cc743..93618e39c7 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs @@ -84,9 +84,7 @@ namespace Volo.Abp.FeatureManagement providers = providers.TakeWhile(c => c.Name == providerName); } - var providerList = providers.Reverse().ToList(); - - if (!providerList.Any()) + if (!providers.Any()) { return new List(); } @@ -96,7 +94,7 @@ namespace Volo.Abp.FeatureManagement foreach (var feature in featureDefinitions) { var featureNameValueWithGrantedProvider = new FeatureNameValueWithGrantedProvider(feature.Name, null); - foreach (var provider in providerList) + foreach (var provider in providers) { string pk = null; if (provider.Compatible(providerName)) diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureManager_Tests.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureManager_Tests.cs index d86bcfaa48..fab724d604 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureManager_Tests.cs +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureManager_Tests.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Threading.Tasks; using Shouldly; using Volo.Abp.Features; @@ -19,7 +20,15 @@ namespace Volo.Abp.FeatureManagement _featureChecker = GetRequiredService(); _currentTenant = GetRequiredService(); } - + [Fact] + public async Task Should_Get_A_Correct_FeatureValue_By_GetAllWithProviderAsync() + { + (await _featureManager.GetAllWithProviderAsync( + EditionFeatureValueProvider.ProviderName, + TestEditionIds.Enterprise.ToString() + )).FirstOrDefault(x=>x.Name== TestFeatureDefinitionProvider.ProjectCount) + .Value.ShouldBe("3"); + } [Fact] public async Task Should_Get_A_FeatureValue_For_A_Provider() { From 00f5169b867ed559555eeb406cb849f2f0dfbf3c Mon Sep 17 00:00:00 2001 From: maliming Date: Sun, 15 Nov 2020 14:32:55 +0800 Subject: [PATCH 2/3] Refactor. --- .../Abp/FeatureManagement/FeatureManager.cs | 10 ++-- .../FeatureManagement/FeatureManager_Tests.cs | 52 +++++++++++++++---- .../FeatureValueRepository_Tests.cs | 2 +- 3 files changed, 49 insertions(+), 15 deletions(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs index 93618e39c7..0eb447e5c6 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; @@ -76,15 +76,15 @@ namespace Volo.Abp.FeatureManagement Check.NotNull(providerName, nameof(providerName)); var featureDefinitions = FeatureDefinitionManager.GetAll(); - var providers = Enumerable.Reverse(Providers) - .SkipWhile(c => c.Name != providerName); + var providers = Enumerable.Reverse(Providers).SkipWhile(c => c.Name != providerName); if (!fallback) { providers = providers.TakeWhile(c => c.Name == providerName); } - if (!providers.Any()) + var providersList = providers.ToList(); + if (!providersList.Any()) { return new List(); } @@ -94,7 +94,7 @@ namespace Volo.Abp.FeatureManagement foreach (var feature in featureDefinitions) { var featureNameValueWithGrantedProvider = new FeatureNameValueWithGrantedProvider(feature.Name, null); - foreach (var provider in providers) + foreach (var provider in providersList) { string pk = null; if (provider.Compatible(providerName)) diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureManager_Tests.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureManager_Tests.cs index fab724d604..232673c233 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureManager_Tests.cs +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.Domain.Tests/Volo/Abp/FeatureManagement/FeatureManager_Tests.cs @@ -20,15 +20,7 @@ namespace Volo.Abp.FeatureManagement _featureChecker = GetRequiredService(); _currentTenant = GetRequiredService(); } - [Fact] - public async Task Should_Get_A_Correct_FeatureValue_By_GetAllWithProviderAsync() - { - (await _featureManager.GetAllWithProviderAsync( - EditionFeatureValueProvider.ProviderName, - TestEditionIds.Enterprise.ToString() - )).FirstOrDefault(x=>x.Name== TestFeatureDefinitionProvider.ProjectCount) - .Value.ShouldBe("3"); - } + [Fact] public async Task Should_Get_A_FeatureValue_For_A_Provider() { @@ -120,5 +112,47 @@ namespace Volo.Abp.FeatureManagement (await _featureChecker.IsEnabledAsync(TestFeatureDefinitionProvider.SocialLogins)).ShouldBeTrue(); } } + + + [Fact] + public async Task Should_Get_FeatureValues_With_Provider_For_A_Provider() + { + var featureNameValueWithGrantedProviders = await _featureManager.GetAllWithProviderAsync( + EditionFeatureValueProvider.ProviderName, + TestEditionIds.Enterprise.ToString() + ); + + featureNameValueWithGrantedProviders.ShouldContain(x => + x.Name == TestFeatureDefinitionProvider.SocialLogins + && x.Value == true.ToString().ToLowerInvariant() && + x.Provider.Name == EditionFeatureValueProvider.ProviderName); + + featureNameValueWithGrantedProviders.ShouldContain(x => + x.Name == TestFeatureDefinitionProvider.EmailSupport && + x.Value == true.ToString().ToLowerInvariant() && + x.Provider.Name == EditionFeatureValueProvider.ProviderName); + + //Default Value + featureNameValueWithGrantedProviders.ShouldContain(x => + x.Name == TestFeatureDefinitionProvider.DailyAnalysis && + x.Value == false.ToString().ToLowerInvariant() && + x.Provider.Name == DefaultValueFeatureValueProvider.ProviderName); + + featureNameValueWithGrantedProviders.ShouldContain(x => + x.Name == TestFeatureDefinitionProvider.UserCount && + x.Value == "20" && + x.Provider.Name == EditionFeatureValueProvider.ProviderName); + + featureNameValueWithGrantedProviders.ShouldContain(x => + x.Name == TestFeatureDefinitionProvider.ProjectCount && + x.Value == "3" && + x.Provider.Name == EditionFeatureValueProvider.ProviderName); + + featureNameValueWithGrantedProviders.ShouldContain(x => + x.Name == TestFeatureDefinitionProvider.BackupCount && + x.Value == "5" && + x.Provider.Name == EditionFeatureValueProvider.ProviderName); + } + } } diff --git a/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureValueRepository_Tests.cs b/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureValueRepository_Tests.cs index db606b2582..6cc50f7378 100644 --- a/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureValueRepository_Tests.cs +++ b/modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureValueRepository_Tests.cs @@ -41,7 +41,7 @@ namespace Volo.Abp.FeatureManagement } [Fact] - public async Task FindAAllsync() + public async Task FindAllAsync() { var featureValues = await Repository.FindAllAsync( TestFeatureDefinitionProvider.ProjectCount, From 3372be5daa80b97ff31517d3b536136e0321d336 Mon Sep 17 00:00:00 2001 From: maliming Date: Sun, 15 Nov 2020 14:35:16 +0800 Subject: [PATCH 3/3] Rename providersList to providerList. --- .../Volo/Abp/FeatureManagement/FeatureManager.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs index 0eb447e5c6..6d7c6d59c2 100644 --- a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManager.cs @@ -83,8 +83,8 @@ namespace Volo.Abp.FeatureManagement providers = providers.TakeWhile(c => c.Name == providerName); } - var providersList = providers.ToList(); - if (!providersList.Any()) + var providerList = providers.ToList(); + if (!providerList.Any()) { return new List(); } @@ -94,7 +94,7 @@ namespace Volo.Abp.FeatureManagement foreach (var feature in featureDefinitions) { var featureNameValueWithGrantedProvider = new FeatureNameValueWithGrantedProvider(feature.Name, null); - foreach (var provider in providersList) + foreach (var provider in providerList) { string pk = null; if (provider.Compatible(providerName))