Merge branch 'dev' into cli-nolayers-blazor-wasm

pull/15516/head
Yunus Emre Kalkan 3 years ago
commit 975cdc926a

@ -14,18 +14,15 @@ public class FeatureAppService : FeatureManagementAppServiceBase, IFeatureAppSer
{
protected FeatureManagementOptions Options { get; }
protected IFeatureManager FeatureManager { get; }
protected IFeatureValueRepository FeatureValueRepository { get; }
protected IFeatureDefinitionManager FeatureDefinitionManager { get; }
public FeatureAppService(IFeatureManager featureManager,
IFeatureDefinitionManager featureDefinitionManager,
IOptions<FeatureManagementOptions> options,
IFeatureValueRepository featureValueRepository)
IOptions<FeatureManagementOptions> options)
{
FeatureManager = featureManager;
FeatureDefinitionManager = featureDefinitionManager;
Options = options.Value;
FeatureValueRepository = featureValueRepository;
}
public virtual async Task<GetFeatureListResultDto> GetAsync([NotNull] string providerName, string providerKey)
@ -140,6 +137,6 @@ public class FeatureAppService : FeatureManagementAppServiceBase, IFeatureAppSer
public virtual async Task DeleteAsync([NotNull] string providerName, string providerKey)
{
await FeatureValueRepository.DeleteAsync(providerName, providerKey);
await FeatureManager.DeleteAsync(providerName, providerKey);
}
}

@ -215,4 +215,33 @@ public class FeatureManager : IFeatureManager, ISingletonDependency
return featureNameValueWithGrantedProvider;
}
public virtual async Task DeleteAsync(string providerName, string providerKey)
{
var featureNameValues = await GetAllAsync(providerName, providerKey);
var providers = Enumerable
.Reverse(Providers)
.SkipWhile(p => p.Name != providerName)
.ToList();
if (!providers.Any())
{
return;
}
providers = providers
.TakeWhile(p => p.Name == providerName)
.ToList(); //Getting list for case of there are more than one provider with same providerName
foreach (var featureNameValue in featureNameValues)
{
var feature = await FeatureDefinitionManager.GetAsync(featureNameValue.Name);
foreach (var provider in providers)
{
await provider.ClearAsync(feature, providerKey);
}
}
}
}

@ -15,4 +15,6 @@ public interface IFeatureManager
Task<List<FeatureNameValueWithGrantedProvider>> GetAllWithProviderAsync([NotNull] string providerName, [CanBeNull] string providerKey, bool fallback = true);
Task SetAsync([NotNull] string name, [CanBeNull] string value, [NotNull] string providerName, [CanBeNull] string providerKey, bool forceToSet = false);
Task DeleteAsync(string providerName, string providerKey);
}

@ -195,4 +195,18 @@ public class FeatureManager_Tests : FeatureManagementDomainTestBase
featureValue.ShouldNotBeNull();
featureValue.Value.ShouldBe(true.ToString().ToLower());
}
[Fact]
public async Task DeleteAsync()
{
//Default
(await _featureManager.GetOrNullAsync(TestFeatureDefinitionProvider.BackupCount, TenantFeatureValueProvider.ProviderName, TestEditionIds.TenantId.ToString())).ShouldBe("0");
await _featureManager.SetAsync(TestFeatureDefinitionProvider.BackupCount, "2", TenantFeatureValueProvider.ProviderName, TestEditionIds.TenantId.ToString());
(await _featureManager.GetOrNullAsync(TestFeatureDefinitionProvider.BackupCount, TenantFeatureValueProvider.ProviderName, TestEditionIds.TenantId.ToString())).ShouldBe("2");
await _featureManager.DeleteAsync(TenantFeatureValueProvider.ProviderName, TestEditionIds.TenantId.ToString());
(await _featureManager.GetOrNullAsync(TestFeatureDefinitionProvider.BackupCount, TenantFeatureValueProvider.ProviderName, TestEditionIds.TenantId.ToString())).ShouldBe("0");
}
}

Loading…
Cancel
Save