From 6ccdd1a45602f2ce6e28ee53772f786f1a4cf055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 7 Feb 2018 15:59:59 +0300 Subject: [PATCH] Added tests. --- .../Settings/UserSettingManagerExtensions.cs | 15 +++++++ .../Volo/Abp/Settings/ISettingContributor.cs | 2 +- .../Volo/Abp/Settings/ISettingManager.cs | 4 +- .../Volo/Abp/Settings/SettingManager.cs | 12 +++--- .../SettingManager_User_Based_Tests.cs | 39 +++++++++++++++++-- 5 files changed, 58 insertions(+), 14 deletions(-) diff --git a/src/Volo.Abp.Session/Volo/Abp/Settings/UserSettingManagerExtensions.cs b/src/Volo.Abp.Session/Volo/Abp/Settings/UserSettingManagerExtensions.cs index 62eafb94c3..03eec3a914 100644 --- a/src/Volo.Abp.Session/Volo/Abp/Settings/UserSettingManagerExtensions.cs +++ b/src/Volo.Abp.Session/Volo/Abp/Settings/UserSettingManagerExtensions.cs @@ -13,14 +13,29 @@ namespace Volo.Abp.Settings return settingManager.GetOrNullAsync(name, UserSettingContributor.DefaultEntityType, userId.ToString(), fallback); } + public static Task GetOrNullForCurrentUserAsync(this ISettingManager settingManager, [NotNull] string name, bool fallback = true) + { + return settingManager.GetOrNullAsync(name, UserSettingContributor.DefaultEntityType, null, fallback); + } + public static Task> GetAllForUserAsync(this ISettingManager settingManager, Guid userId, bool fallback = true) { return settingManager.GetAllAsync(UserSettingContributor.DefaultEntityType, userId.ToString(), fallback); } + public static Task> GetAllForCurrentUserAsync(this ISettingManager settingManager, bool fallback = true) + { + return settingManager.GetAllAsync(UserSettingContributor.DefaultEntityType, null, fallback); + } + public static Task SetForUserAsync(this ISettingManager settingManager, Guid userId, [NotNull] string name, [CanBeNull] string value) { return settingManager.SetAsync(name, value, UserSettingContributor.DefaultEntityType, userId.ToString()); } + + public static Task SetForCurrentUserAsync(this ISettingManager settingManager, [NotNull] string name, [CanBeNull] string value) + { + return settingManager.SetAsync(name, value, UserSettingContributor.DefaultEntityType, null); + } } } diff --git a/src/Volo.Abp.Settings/Volo/Abp/Settings/ISettingContributor.cs b/src/Volo.Abp.Settings/Volo/Abp/Settings/ISettingContributor.cs index 9a90e42f8d..42bc9ef207 100644 --- a/src/Volo.Abp.Settings/Volo/Abp/Settings/ISettingContributor.cs +++ b/src/Volo.Abp.Settings/Volo/Abp/Settings/ISettingContributor.cs @@ -7,6 +7,6 @@ namespace Volo.Abp.Settings { string EntityType { get; } - Task GetOrNullAsync(SettingDefinition setting, [CanBeNull] string entityId); + Task GetOrNullAsync([NotNull] SettingDefinition setting, [CanBeNull] string entityId); } } \ No newline at end of file diff --git a/src/Volo.Abp.Settings/Volo/Abp/Settings/ISettingManager.cs b/src/Volo.Abp.Settings/Volo/Abp/Settings/ISettingManager.cs index 00b0a89e31..4c3e64a3b3 100644 --- a/src/Volo.Abp.Settings/Volo/Abp/Settings/ISettingManager.cs +++ b/src/Volo.Abp.Settings/Volo/Abp/Settings/ISettingManager.cs @@ -14,8 +14,8 @@ namespace Volo.Abp.Settings Task> GetAllAsync([NotNull] string entityType, [CanBeNull] string entityId, bool fallback = true); - Task SetAsync([NotNull] string name, string value, bool forceToSet = false); + Task SetAsync([NotNull] string name, [CanBeNull] string value, bool forceToSet = false); - Task SetAsync([NotNull] string name, string value, [NotNull] string entityType, [CanBeNull] string entityId, bool forceToSet = false); + Task SetAsync([NotNull] string name, [CanBeNull] string value, [NotNull] string entityType, [CanBeNull] string entityId, bool forceToSet = false); } } \ No newline at end of file diff --git a/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingManager.cs b/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingManager.cs index db7cf2f7da..76ce80bc4b 100644 --- a/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingManager.cs +++ b/src/Volo.Abp.Settings/Volo/Abp/Settings/SettingManager.cs @@ -37,12 +37,11 @@ namespace Volo.Abp.Settings ); } - public async Task GetOrNullAsync(string name) + public virtual async Task GetOrNullAsync(string name) { Check.NotNull(name, nameof(name)); var setting = SettingDefinitionManager.Get(name); - var contributors = Enumerable.Reverse(Contributors.Value); foreach (var contributor in contributors) @@ -63,7 +62,6 @@ namespace Volo.Abp.Settings Check.NotNull(entityType, nameof(entityType)); var setting = SettingDefinitionManager.Get(name); - var contributors = Enumerable .Reverse(Contributors.Value) .SkipWhile(c => c.EntityType != entityType); @@ -85,22 +83,22 @@ namespace Volo.Abp.Settings return null; } - public Task> GetAllAsync() + public virtual Task> GetAllAsync() { throw new System.NotImplementedException(); } - public Task> GetAllAsync(string entityType, string entityId, bool fallback = true) + public virtual Task> GetAllAsync(string entityType, string entityId, bool fallback = true) { throw new System.NotImplementedException(); } - public Task SetAsync(string name, string value, bool forceToSet = false) + public virtual Task SetAsync(string name, string value, bool forceToSet = false) { throw new System.NotImplementedException(); } - public Task SetAsync(string name, string value, string entityType, string entityId, bool forceToSet = false) + public virtual Task SetAsync(string name, string value, string entityType, string entityId, bool forceToSet = false) { throw new System.NotImplementedException(); } diff --git a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_Based_Tests.cs b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_Based_Tests.cs index dd421b3243..6c3cc49e0a 100644 --- a/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_Based_Tests.cs +++ b/test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_Based_Tests.cs @@ -32,6 +32,18 @@ namespace Volo.Abp.Settings (await _settingManager.GetOrNullForUserAsync("MySetting2", AbpIdentityTestDataBuilder.User2Id)).ShouldBe("user2-store-value"); } + [Fact] + public async Task Should_Fallback_To_Default_Store_Value_When_No_Value_For_Given_User() + { + (await _settingManager.GetOrNullForUserAsync("MySetting2", Guid.NewGuid())).ShouldBe("default-store-value"); + } + + [Fact] + public async Task Should_Not_Fallback_To_Default_Store_Value_When_No_Value_For_Given_User_But_Specified_Fallback_As_False() + { + (await _settingManager.GetOrNullForUserAsync("MySetting2", Guid.NewGuid(), fallback: false)).ShouldBeNull(); + } + [Fact] public async Task Should_Get_From_Store_For_Current_User() { @@ -43,15 +55,34 @@ namespace Volo.Abp.Settings } [Fact] - public async Task Should_Fallback_To_Default_Store_Value_When_No_Value_For_Given_User() + public async Task Should_Fallback_To_Default_Store_Value_When_No_Value_For_Current_User() { - (await _settingManager.GetOrNullForUserAsync("MySetting2", Guid.NewGuid())).ShouldBe("default-store-value"); + _currentUserId = Guid.NewGuid(); + (await _settingManager.GetOrNullAsync("MySetting2")).ShouldBe("default-store-value"); } [Fact] - public async Task Should_Not_Fallback_To_Default_Store_Value_When_No_Value_For_Given_User_But_Specified_Fallback_As_False() + public async Task Should_Get_From_Store_For_Current_User_With_GetOrNullForCurrentUserAsync() { - (await _settingManager.GetOrNullForUserAsync("MySetting2", Guid.NewGuid(), fallback: false)).ShouldBeNull(); + _currentUserId = AbpIdentityTestDataBuilder.User1Id; + (await _settingManager.GetOrNullForCurrentUserAsync("MySetting2")).ShouldBe("user1-store-value"); + + _currentUserId = AbpIdentityTestDataBuilder.User2Id; + (await _settingManager.GetOrNullForCurrentUserAsync("MySetting2")).ShouldBe("user2-store-value"); + } + + [Fact] + public async Task Should_Fallback_To_Default_Store_Value_When_No_Value_For_Current_User_With_GetOrNullForCurrentUserAsync() + { + _currentUserId = Guid.NewGuid(); + (await _settingManager.GetOrNullAsync("MySetting2")).ShouldBe("default-store-value"); + } + + [Fact] + public async Task Should_Not_Fallback_To_Default_Store_Value_When_No_Value_For_Current_User_But_Specified_Fallback_As_False() + { + _currentUserId = Guid.NewGuid(); + (await _settingManager.GetOrNullForCurrentUserAsync("MySetting2", fallback: false)).ShouldBeNull(); } } } \ No newline at end of file