Browse Source

Merge pull request #23776 from abpframework/ManagementStore-Patch

Refactor repository methods to ensure consistent `save changes` in Feature, Permission, and Setting management
pull/23780/head
Halil İbrahim Kalkan 1 year ago
committed by GitHub
parent
commit
8a574e2154
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 6
      modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManagementStore.cs
  2. 2
      modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureManagementStore_Tests.cs
  3. 13
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManagementProvider.cs
  4. 4
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs
  5. 20
      modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionManager_Tests.cs
  6. 6
      modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingManagementStore.cs
  7. 8
      modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManagementStore_Tests.cs

6
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/FeatureManagementStore.cs

@ -42,12 +42,12 @@ public class FeatureManagementStore : IFeatureManagementStore, ITransientDepende
if (featureValue == null) if (featureValue == null)
{ {
featureValue = new FeatureValue(GuidGenerator.Create(), name, value, providerName, providerKey); featureValue = new FeatureValue(GuidGenerator.Create(), name, value, providerName, providerKey);
await FeatureValueRepository.InsertAsync(featureValue); await FeatureValueRepository.InsertAsync(featureValue, true);
} }
else else
{ {
featureValue.Value = value; featureValue.Value = value;
await FeatureValueRepository.UpdateAsync(featureValue); await FeatureValueRepository.UpdateAsync(featureValue, true);
} }
await Cache.SetAsync(CalculateCacheKey(name, providerName, providerKey), new FeatureValueCacheItem(featureValue?.Value), considerUow: true); await Cache.SetAsync(CalculateCacheKey(name, providerName, providerKey), new FeatureValueCacheItem(featureValue?.Value), considerUow: true);
@ -59,7 +59,7 @@ public class FeatureManagementStore : IFeatureManagementStore, ITransientDepende
var featureValues = await FeatureValueRepository.FindAllAsync(name, providerName, providerKey); var featureValues = await FeatureValueRepository.FindAllAsync(name, providerName, providerKey);
foreach (var featureValue in featureValues) foreach (var featureValue in featureValues)
{ {
await FeatureValueRepository.DeleteAsync(featureValue); await FeatureValueRepository.DeleteAsync(featureValue, true);
await Cache.RemoveAsync(CalculateCacheKey(name, providerName, providerKey), considerUow: true); await Cache.RemoveAsync(CalculateCacheKey(name, providerName, providerKey), considerUow: true);
} }
} }

2
modules/feature-management/test/Volo.Abp.FeatureManagement.TestBase/Volo/Abp/FeatureManagement/FeatureManagementStore_Tests.cs

@ -135,8 +135,6 @@ public abstract class FeatureManagementStore_Tests<TStartupModule> : FeatureMana
EditionFeatureValueProvider.ProviderName, EditionFeatureValueProvider.ProviderName,
TestEditionIds.Regular.ToString()); TestEditionIds.Regular.ToString());
await uow.SaveChangesAsync();
// Assert // Assert
(await FeatureManagementStore.GetOrNullAsync(TestFeatureDefinitionProvider.SocialLogins, (await FeatureManagementStore.GetOrNullAsync(TestFeatureDefinitionProvider.SocialLogins,
EditionFeatureValueProvider.ProviderName, EditionFeatureValueProvider.ProviderName,

13
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManagementProvider.cs

@ -70,15 +70,8 @@ public abstract class PermissionManagementProvider : IPermissionManagementProvid
return; return;
} }
await PermissionGrantRepository.InsertAsync( permissionGrant = new PermissionGrant(GuidGenerator.Create(), name, Name, providerKey, CurrentTenant.Id);
new PermissionGrant( await PermissionGrantRepository.InsertAsync(permissionGrant, true);
GuidGenerator.Create(),
name,
Name,
providerKey,
CurrentTenant.Id
)
);
} }
protected virtual async Task RevokeAsync(string name, string providerKey) protected virtual async Task RevokeAsync(string name, string providerKey)
@ -89,6 +82,6 @@ public abstract class PermissionManagementProvider : IPermissionManagementProvid
return; return;
} }
await PermissionGrantRepository.DeleteAsync(permissionGrant); await PermissionGrantRepository.DeleteAsync(permissionGrant, true);
} }
} }

4
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/PermissionManager.cs

@ -184,7 +184,7 @@ public class PermissionManager : IPermissionManager, ISingletonDependency
} }
permissionGrant.ProviderKey = providerKey; permissionGrant.ProviderKey = providerKey;
return await PermissionGrantRepository.UpdateAsync(permissionGrant); return await PermissionGrantRepository.UpdateAsync(permissionGrant, true);
} }
public virtual async Task DeleteAsync(string providerName, string providerKey) public virtual async Task DeleteAsync(string providerName, string providerKey)
@ -192,7 +192,7 @@ public class PermissionManager : IPermissionManager, ISingletonDependency
var permissionGrants = await PermissionGrantRepository.GetListAsync(providerName, providerKey); var permissionGrants = await PermissionGrantRepository.GetListAsync(providerName, providerKey);
foreach (var permissionGrant in permissionGrants) foreach (var permissionGrant in permissionGrants)
{ {
await PermissionGrantRepository.DeleteAsync(permissionGrant); await PermissionGrantRepository.DeleteAsync(permissionGrant, true);
} }
} }

20
modules/permission-management/test/Volo.Abp.PermissionManagement.Domain.Tests/Volo/Abp/PermissionManagement/PermissionManager_Tests.cs

@ -134,7 +134,7 @@ public class PermissionManager_Tests : PermissionTestBase
"Test", "Test",
true); true);
} }
[Fact] [Fact]
public async Task Set_Should_Throw_Exception_If_Provider_Not_Found() public async Task Set_Should_Throw_Exception_If_Provider_Not_Found()
{ {
@ -146,7 +146,7 @@ public class PermissionManager_Tests : PermissionTestBase
"Test", "Test",
true); true);
}); });
exception.Message.ShouldBe("Unknown permission management provider: UndefinedProvider"); exception.Message.ShouldBe("Unknown permission management provider: UndefinedProvider");
} }
@ -165,4 +165,20 @@ public class PermissionManager_Tests : PermissionTestBase
await _permissionManager.UpdateProviderKeyAsync(permissionGrant, "NewProviderKey"); await _permissionManager.UpdateProviderKeyAsync(permissionGrant, "NewProviderKey");
(await _permissionGrantRepository.FindAsync("MyPermission1", "Test", "NewProviderKey")).ShouldNotBeNull(); (await _permissionGrantRepository.FindAsync("MyPermission1", "Test", "NewProviderKey")).ShouldNotBeNull();
} }
[Fact]
public async Task DeleteAsync()
{
await _permissionGrantRepository.InsertAsync(new PermissionGrant(
Guid.NewGuid(),
"MyPermission1",
"Test",
"Test")
);
var permissionGrant = await _permissionGrantRepository.FindAsync("MyPermission1", "Test", "Test");
permissionGrant.ProviderKey.ShouldBe("Test");
await _permissionManager.DeleteAsync("Test","Test");
(await _permissionGrantRepository.FindAsync("MyPermission1", "Test", "Test")).ShouldBeNull();
}
} }

6
modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingManagementStore.cs

@ -41,12 +41,12 @@ public class SettingManagementStore : ISettingManagementStore, ITransientDepende
if (setting == null) if (setting == null)
{ {
setting = new Setting(GuidGenerator.Create(), name, value, providerName, providerKey); setting = new Setting(GuidGenerator.Create(), name, value, providerName, providerKey);
await SettingRepository.InsertAsync(setting); await SettingRepository.InsertAsync(setting, true);
} }
else else
{ {
setting.Value = value; setting.Value = value;
await SettingRepository.UpdateAsync(setting); await SettingRepository.UpdateAsync(setting, true);
} }
await Cache.SetAsync(CalculateCacheKey(name, providerName, providerKey), new SettingCacheItem(setting?.Value), considerUow: true); await Cache.SetAsync(CalculateCacheKey(name, providerName, providerKey), new SettingCacheItem(setting?.Value), considerUow: true);
@ -64,7 +64,7 @@ public class SettingManagementStore : ISettingManagementStore, ITransientDepende
var setting = await SettingRepository.FindAsync(name, providerName, providerKey); var setting = await SettingRepository.FindAsync(name, providerName, providerKey);
if (setting != null) if (setting != null)
{ {
await SettingRepository.DeleteAsync(setting); await SettingRepository.DeleteAsync(setting, true);
await Cache.RemoveAsync(CalculateCacheKey(name, providerName, providerKey), considerUow: true); await Cache.RemoveAsync(CalculateCacheKey(name, providerName, providerKey), considerUow: true);
} }
} }

8
modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManagementStore_Tests.cs

@ -66,6 +66,14 @@ public class SettingManagementStore_Tests : SettingsTestBase
var valueAfterSet = await _settingManagementStore.GetOrNullAsync("MySetting1", GlobalSettingValueProvider.ProviderName, null); var valueAfterSet = await _settingManagementStore.GetOrNullAsync("MySetting1", GlobalSettingValueProvider.ProviderName, null);
valueAfterSet.ShouldBe("43"); valueAfterSet.ShouldBe("43");
await _settingManagementStore.DeleteAsync("MySetting1", GlobalSettingValueProvider.ProviderName, null);
var values = await _settingManagementStore.GetListAsync(["MySetting1"], GlobalSettingValueProvider.ProviderName, null);
var settingValue = values.FirstOrDefault(x => x.Name == "MySetting1");
settingValue.ShouldNotBeNull();
settingValue.Value.ShouldBeNull();
} }
} }

Loading…
Cancel
Save