From df096ad5bf070b5168925b09b08a68655ce819d7 Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 31 Dec 2019 22:44:47 +0800 Subject: [PATCH] Make SettingCacheItem ignore multi-tenancy. #2429 --- .../Abp/SettingManagement/SettingCacheItem.cs | 2 + .../SettingCacheItemInvalidator_Tests.cs | 38 +++++++++++++++++-- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingCacheItem.cs b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingCacheItem.cs index a590775167..3511df204d 100644 --- a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingCacheItem.cs +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain/Volo/Abp/SettingManagement/SettingCacheItem.cs @@ -1,8 +1,10 @@ using System; +using Volo.Abp.MultiTenancy; namespace Volo.Abp.SettingManagement { [Serializable] + [IgnoreMultiTenancy] public class SettingCacheItem { public string Value { get; set; } diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingCacheItemInvalidator_Tests.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingCacheItemInvalidator_Tests.cs index e74ea64671..cf2c610b79 100644 --- a/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingCacheItemInvalidator_Tests.cs +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingCacheItemInvalidator_Tests.cs @@ -1,10 +1,8 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System; using System.Threading.Tasks; -using Castle.DynamicProxy.Generators; using Shouldly; using Volo.Abp.Caching; +using Volo.Abp.MultiTenancy; using Volo.Abp.Settings; using Xunit; @@ -16,6 +14,7 @@ namespace Volo.Abp.SettingManagement private readonly ISettingManagementStore _settingManagementStore; private readonly ISettingRepository _settingRepository; private readonly SettingTestData _testData; + private readonly ICurrentTenant _currentTenant; public SettingCacheItemInvalidator_Tests() { @@ -23,6 +22,7 @@ namespace Volo.Abp.SettingManagement _cache = GetRequiredService>(); _settingRepository = GetRequiredService(); _testData = GetRequiredService(); + _currentTenant = GetRequiredService(); } [Fact] @@ -49,5 +49,35 @@ namespace Volo.Abp.SettingManagement (await _cache.GetAsync( SettingCacheItem.CalculateCacheKey("MySetting2", UserSettingValueProvider.ProviderName, _testData.User1Id.ToString())).ConfigureAwait(false)).ShouldBeNull(); } + + [Fact] + public async Task Cache_Should_Invalidator_WhenSettingChanged_Between_Tenant_And_Host() + { + var tenantId = Guid.NewGuid(); + + using (_currentTenant.Change(tenantId)) + { + // GetOrNullAsync will cache language. + await _settingManagementStore + .GetOrNullAsync("MySetting2", GlobalSettingValueProvider.ProviderName, null) + .ConfigureAwait(false); + } + + using (_currentTenant.Change(null)) + { + // SetAsync will make cache invalid. + await _settingManagementStore + .SetAsync("MySetting2", "MySetting2Value", GlobalSettingValueProvider.ProviderName, null) + .ConfigureAwait(false); + } + + using (_currentTenant.Change(tenantId)) + { + // Assert + (await _cache.GetAsync( + SettingCacheItem.CalculateCacheKey("MySetting2", GlobalSettingValueProvider.ProviderName, null)) + .ConfigureAwait(false)).ShouldBeNull(); + } + } } }