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 8 months 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)
{
featureValue = new FeatureValue(GuidGenerator.Create(), name, value, providerName, providerKey);
await FeatureValueRepository.InsertAsync(featureValue);
await FeatureValueRepository.InsertAsync(featureValue, true);
}
else
{
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);
@ -59,7 +59,7 @@ public class FeatureManagementStore : IFeatureManagementStore, ITransientDepende
var featureValues = await FeatureValueRepository.FindAllAsync(name, providerName, providerKey);
foreach (var featureValue in featureValues)
{
await FeatureValueRepository.DeleteAsync(featureValue);
await FeatureValueRepository.DeleteAsync(featureValue, 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,
TestEditionIds.Regular.ToString());
await uow.SaveChangesAsync();
// Assert
(await FeatureManagementStore.GetOrNullAsync(TestFeatureDefinitionProvider.SocialLogins,
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;
}
await PermissionGrantRepository.InsertAsync(
new PermissionGrant(
GuidGenerator.Create(),
name,
Name,
providerKey,
CurrentTenant.Id
)
);
permissionGrant = new PermissionGrant(GuidGenerator.Create(), name, Name, providerKey, CurrentTenant.Id);
await PermissionGrantRepository.InsertAsync(permissionGrant, true);
}
protected virtual async Task RevokeAsync(string name, string providerKey)
@ -89,6 +82,6 @@ public abstract class PermissionManagementProvider : IPermissionManagementProvid
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;
return await PermissionGrantRepository.UpdateAsync(permissionGrant);
return await PermissionGrantRepository.UpdateAsync(permissionGrant, true);
}
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);
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",
true);
}
[Fact]
public async Task Set_Should_Throw_Exception_If_Provider_Not_Found()
{
@ -146,7 +146,7 @@ public class PermissionManager_Tests : PermissionTestBase
"Test",
true);
});
exception.Message.ShouldBe("Unknown permission management provider: UndefinedProvider");
}
@ -165,4 +165,20 @@ public class PermissionManager_Tests : PermissionTestBase
await _permissionManager.UpdateProviderKeyAsync(permissionGrant, "NewProviderKey");
(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)
{
setting = new Setting(GuidGenerator.Create(), name, value, providerName, providerKey);
await SettingRepository.InsertAsync(setting);
await SettingRepository.InsertAsync(setting, true);
}
else
{
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);
@ -64,7 +64,7 @@ public class SettingManagementStore : ISettingManagementStore, ITransientDepende
var setting = await SettingRepository.FindAsync(name, providerName, providerKey);
if (setting != null)
{
await SettingRepository.DeleteAsync(setting);
await SettingRepository.DeleteAsync(setting, 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);
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