From 0ec0cc213eea7c4dbcccd29a006c3e136d880da5 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 8 Apr 2019 16:31:14 +0800 Subject: [PATCH] Add SettingManagerment unit tests. --- .../Abp/SettingManagement/SettingTestData.cs | 2 + .../SettingTestDataBuilder.cs | 2 +- .../TestSettingDefinitionProvider.cs | 3 + ...ultValueSettingManagementProvider_Tests.cs | 49 ++++++++++++++ .../SettingCacheItemInvalidator_Tests.cs | 53 +++++++++++++++ .../SettingManagementStore_Tests.cs | 64 +++++++++++++++++++ 6 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/DefaultValueSettingManagementProvider_Tests.cs create mode 100644 modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingCacheItemInvalidator_Tests.cs create mode 100644 modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManagementStore_Tests.cs diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/SettingTestData.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/SettingTestData.cs index 066ec4c45d..5b93721110 100644 --- a/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/SettingTestData.cs +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/SettingTestData.cs @@ -7,5 +7,7 @@ namespace Volo.Abp.SettingManagement { public Guid User1Id { get; } = Guid.NewGuid(); public Guid User2Id { get; } = Guid.NewGuid(); + + public Guid SettingId { get; } = Guid.NewGuid(); } } \ No newline at end of file diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/SettingTestDataBuilder.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/SettingTestDataBuilder.cs index 79ae4702c8..a66a4fe253 100644 --- a/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/SettingTestDataBuilder.cs +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/SettingTestDataBuilder.cs @@ -24,7 +24,7 @@ namespace Volo.Abp.SettingManagement { _settingRepository.Insert( new Setting( - _guidGenerator.Create(), + _testData.SettingId, "MySetting1", "42", GlobalSettingValueProvider.ProviderName diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/TestSettingDefinitionProvider.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/TestSettingDefinitionProvider.cs index 2bf4a628da..950d0b5d2b 100644 --- a/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/TestSettingDefinitionProvider.cs +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.TestBase/Volo/Abp/SettingManagement/TestSettingDefinitionProvider.cs @@ -8,8 +8,11 @@ namespace Volo.Abp.SettingManagement { context.Add(new SettingDefinition("MySetting1")); context.Add(new SettingDefinition("MySetting2")); + context.Add(new SettingDefinition("MySetting3", "123")); context.Add(new SettingDefinition("MySettingWithoutInherit", isInherited: false)); context.Add(new SettingDefinition("SettingNotSetInStore", defaultValue: "default-value")); + + } } } \ No newline at end of file diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/DefaultValueSettingManagementProvider_Tests.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/DefaultValueSettingManagementProvider_Tests.cs new file mode 100644 index 0000000000..d19f587a78 --- /dev/null +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/DefaultValueSettingManagementProvider_Tests.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Settings; +using Xunit; + +namespace Volo.Abp.SettingManagement +{ + public class DefaultValueSettingManagementProvider_Tests : SettingsTestBase + { + private readonly ISettingDefinitionManager _settingDefinitionManager; + + public DefaultValueSettingManagementProvider_Tests() + { + _settingDefinitionManager = GetRequiredService(); + } + + [Fact] + public async Task GetOrNullAsync() + { + var mySetting3 = _settingDefinitionManager.Get("MySetting3"); + + var defaultValueSettingManagementProvider = new DefaultValueSettingManagementProvider(); + (await defaultValueSettingManagementProvider + .GetOrNullAsync(mySetting3, DefaultValueSettingValueProvider.ProviderName)).ShouldBe("123"); + } + + [Fact] + public async Task SetAsync() + { + var mySetting3 = _settingDefinitionManager.Get("MySetting3"); + + await Assert.ThrowsAsync(async () => await new DefaultValueSettingManagementProvider().SetAsync(mySetting3, "123", + DefaultValueSettingValueProvider.ProviderName)); + } + + [Fact] + public async Task ClearAsync() + { + var mySetting3 = _settingDefinitionManager.Get("MySetting3"); + + await Assert.ThrowsAsync(async () => + await new DefaultValueSettingManagementProvider().ClearAsync(mySetting3, + DefaultValueSettingValueProvider.ProviderName)); + } + } +} 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 new file mode 100644 index 0000000000..de956d0202 --- /dev/null +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingCacheItemInvalidator_Tests.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using Castle.DynamicProxy.Generators; +using Shouldly; +using Volo.Abp.Caching; +using Volo.Abp.Settings; +using Xunit; + +namespace Volo.Abp.SettingManagement +{ + public class SettingCacheItemInvalidator_Tests : SettingsTestBase + { + private readonly IDistributedCache _cache; + private readonly ISettingManagementStore _settingManagementStore; + private readonly ISettingRepository _settingRepository; + private readonly SettingTestData _testData; + + public SettingCacheItemInvalidator_Tests() + { + _settingManagementStore = GetRequiredService(); + _cache = GetRequiredService>(); + _settingRepository = GetRequiredService(); + _testData = GetRequiredService(); + } + + [Fact] + public async Task GetOrNullAsync_Should_Cached() + { + // Act + (await _cache.GetAsync(SettingCacheItem.CalculateCacheKey("MySetting2", "User", _testData.User1Id.ToString()))).ShouldBeNull(); + await _settingManagementStore.GetOrNullAsync("MySetting2", "User", _testData.User1Id.ToString()); + (await _cache.GetAsync(SettingCacheItem.CalculateCacheKey("MySetting2", "User", _testData.User1Id.ToString()))).ShouldNotBeNull(); + } + + [Fact] + public async Task Cache_Should_Invalidator_WhenSettingChanged() + { + // Arrange + // GetOrNullAsync will cache language. + await _settingManagementStore.GetOrNullAsync("MySetting2", "User", _testData.User1Id.ToString()); + + // Act + var lang = await _settingRepository.FindAsync("MySetting2", "User", _testData.User1Id.ToString()); + await _settingRepository.DeleteAsync(lang); + + // Assert + (await _cache.GetAsync( + SettingCacheItem.CalculateCacheKey("MySetting2", "User", _testData.User1Id.ToString()))).ShouldBeNull(); + } + } +} diff --git a/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManagementStore_Tests.cs b/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManagementStore_Tests.cs new file mode 100644 index 0000000000..753ba15054 --- /dev/null +++ b/modules/setting-management/test/Volo.Abp.SettingManagement.Tests/Volo/Abp/SettingManagement/SettingManagementStore_Tests.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Settings; +using Xunit; + +namespace Volo.Abp.SettingManagement +{ + public class SettingManagementStore_Tests : SettingsTestBase + { + private readonly ISettingManagementStore _settingManagementStore; + private readonly ISettingRepository _settingRepository; + private readonly SettingTestData _testData; + + public SettingManagementStore_Tests() + { + _settingManagementStore = GetRequiredService(); + _settingRepository = GetRequiredService(); + _testData = GetRequiredService(); + } + + [Fact] + public async Task GetOrNull_NotExist_Should_Be_Null() + { + var value = await _settingManagementStore.GetOrNullAsync("notExistName", "notExistProviderName", + "notExistProviderKey"); + + value.ShouldBeNull(); + } + + [Fact] + public async Task GetOrNullAsync() + { + var value = await _settingManagementStore.GetOrNullAsync("MySetting1", GlobalSettingValueProvider.ProviderName, null); + + value.ShouldNotBeNull(); + value.ShouldBe("42"); + } + + [Fact] + public async Task SetAsync() + { + var setting = await _settingRepository.FindAsync(_testData.SettingId); + setting.Value.ShouldBe("42"); + + await _settingManagementStore.SetAsync("MySetting1", "43", GlobalSettingValueProvider.ProviderName, null); + + (await _settingRepository.FindAsync(_testData.SettingId)).Value.ShouldBe("43"); + } + + [Fact] + public async Task DeleteAsync() + { + (await _settingRepository.FindAsync(_testData.SettingId)).ShouldNotBeNull(); + + await _settingManagementStore.DeleteAsync("MySetting1", GlobalSettingValueProvider.ProviderName, null); + + (await _settingRepository.FindAsync(_testData.SettingId)).ShouldBeNull(); + } + + } +}