Browse Source

Implemented settingmanager's GetAll

pull/204/head
Halil İbrahim Kalkan 9 years ago
parent
commit
387dcae2e2
  1. 5
      src/Volo.Abp.Settings/Volo/Abp/Settings/ISettingDefinitionManager.cs
  2. 6
      src/Volo.Abp.Settings/Volo/Abp/Settings/SettingDefinitionContext.cs
  3. 6
      src/Volo.Abp.Settings/Volo/Abp/Settings/SettingDefinitionManager.cs
  4. 50
      src/Volo.Abp.Settings/Volo/Abp/Settings/SettingManager.cs
  5. 9
      test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_Tests.cs
  6. 24
      test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_GetValue_Tests.cs

5
src/Volo.Abp.Settings/Volo/Abp/Settings/ISettingDefinitionManager.cs

@ -1,4 +1,5 @@
using JetBrains.Annotations; using System.Collections.Generic;
using JetBrains.Annotations;
namespace Volo.Abp.Settings namespace Volo.Abp.Settings
{ {
@ -6,5 +7,7 @@ namespace Volo.Abp.Settings
{ {
[NotNull] [NotNull]
SettingDefinition Get([NotNull] string name); SettingDefinition Get([NotNull] string name);
IReadOnlyList<SettingDefinition> GetAll();
} }
} }

6
src/Volo.Abp.Settings/Volo/Abp/Settings/SettingDefinitionContext.cs

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Immutable;
namespace Volo.Abp.Settings namespace Volo.Abp.Settings
{ {
@ -16,6 +17,11 @@ namespace Volo.Abp.Settings
return Settings.GetOrDefault(name); return Settings.GetOrDefault(name);
} }
public virtual IReadOnlyList<SettingDefinition> GetAll()
{
return Settings.Values.ToImmutableList();
}
public virtual void Add(params SettingDefinition[] definitions) public virtual void Add(params SettingDefinition[] definitions)
{ {
if (definitions.IsNullOrEmpty()) if (definitions.IsNullOrEmpty())

6
src/Volo.Abp.Settings/Volo/Abp/Settings/SettingDefinitionManager.cs

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq; using System.Linq;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
@ -42,6 +43,11 @@ namespace Volo.Abp.Settings
return settingDefinition; return settingDefinition;
} }
public IReadOnlyList<SettingDefinition> GetAll()
{
return SettingDefinitions.Value.Values.ToImmutableList();
}
public virtual SettingDefinition GetOrNull(string name) public virtual SettingDefinition GetOrNull(string name)
{ {
return SettingDefinitions.Value.GetOrDefault(name); return SettingDefinitions.Value.GetOrDefault(name);

50
src/Volo.Abp.Settings/Volo/Abp/Settings/SettingManager.cs

@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
@ -83,14 +84,55 @@ namespace Volo.Abp.Settings
return null; return null;
} }
public virtual Task<List<SettingValue>> GetAllAsync() public virtual async Task<List<SettingValue>> GetAllAsync()
{ {
throw new System.NotImplementedException(); var settingValues = new Dictionary<string, SettingValue>();
var settingDefinitions = SettingDefinitionManager.GetAll();
foreach (var provider in Providers.Value)
{
foreach (var setting in settingDefinitions)
{
var value = await provider.GetOrNullAsync(setting, null);
if (value != null)
{
settingValues[setting.Name] = new SettingValue(setting.Name, value);
}
}
}
return settingValues.Values.ToList();
} }
public virtual Task<List<SettingValue>> GetAllAsync(string entityType, string entityId, bool fallback = true) public virtual async Task<List<SettingValue>> GetAllAsync(string entityType, string entityId, bool fallback = true)
{ {
throw new System.NotImplementedException(); Check.NotNull(entityType, nameof(entityType));
var settingValues = new Dictionary<string, SettingValue>();
var settingDefinitions = SettingDefinitionManager.GetAll();
var providers = Enumerable.Reverse(Providers.Value)
.SkipWhile(c => c.EntityType != entityType);
if (!fallback)
{
providers = providers.TakeWhile(c => c.EntityType == entityType);
}
providers = providers.Reverse();
foreach (var provider in providers)
{
foreach (var setting in settingDefinitions)
{
var value = await provider.GetOrNullAsync(setting, entityId);
if (value != null)
{
settingValues[setting.Name] = new SettingValue(setting.Name, value);
}
}
}
return settingValues.Values.ToList();
} }
public virtual Task SetAsync(string name, string value, bool forceToSet = false) public virtual Task SetAsync(string name, string value, bool forceToSet = false)

9
test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_Tests.cs

@ -33,5 +33,14 @@ namespace Volo.Abp.Settings
{ {
(await _settingManager.GetOrNullAsync("MySetting1")).ShouldBe("42"); (await _settingManager.GetOrNullAsync("MySetting1")).ShouldBe("42");
} }
[Fact]
public async Task Should_Get_All_Base_Store_Values()
{
var settingValues = await _settingManager.GetAllAsync();
settingValues.ShouldContain(sv => sv.Name == "MySetting1" && sv.Value == "42");
settingValues.ShouldContain(sv => sv.Name == "MySetting2" && sv.Value == "default-store-value");
settingValues.ShouldContain(sv => sv.Name == "SettingNotSetInStore" && sv.Value == "default-value");
}
} }
} }

24
test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_Based_Tests.cs → test/Volo.Abp.Settings.Tests/Volo/Abp/Settings/SettingManager_User_GetValue_Tests.cs

@ -8,19 +8,20 @@ using Xunit;
namespace Volo.Abp.Settings namespace Volo.Abp.Settings
{ {
public class SettingManager_User_Based_Tests: AbpSettingsTestBase public class SettingManager_User_GetValue_Tests: AbpSettingsTestBase
{ {
private Guid _currentUserId; private Guid _currentUserId;
private readonly ISettingManager _settingManager; private readonly ISettingManager _settingManager;
public SettingManager_User_Based_Tests() public SettingManager_User_GetValue_Tests()
{ {
_settingManager = GetRequiredService<ISettingManager>(); _settingManager = GetRequiredService<ISettingManager>();
} }
protected override void AfterAddApplication(IServiceCollection services) protected override void AfterAddApplication(IServiceCollection services)
{ {
ICurrentUser currentUser = Substitute.For<ICurrentUser>(); var currentUser = Substitute.For<ICurrentUser>();
currentUser.Id.Returns(ci => _currentUserId); currentUser.Id.Returns(ci => _currentUserId);
services.AddSingleton(currentUser); services.AddSingleton(currentUser);
} }
@ -84,5 +85,22 @@ namespace Volo.Abp.Settings
_currentUserId = Guid.NewGuid(); _currentUserId = Guid.NewGuid();
(await _settingManager.GetOrNullForCurrentUserAsync("MySetting2", fallback: false)).ShouldBeNull(); (await _settingManager.GetOrNullForCurrentUserAsync("MySetting2", fallback: false)).ShouldBeNull();
} }
[Fact]
public async Task Should_Get_All_From_Store_For_Given_User()
{
var settingValues = await _settingManager.GetAllForUserAsync(AbpIdentityTestDataBuilder.User1Id);
settingValues.ShouldContain(sv => sv.Name == "MySetting1" && sv.Value == "42");
settingValues.ShouldContain(sv => sv.Name == "MySetting2" && sv.Value == "user1-store-value");
settingValues.ShouldContain(sv => sv.Name == "SettingNotSetInStore" && sv.Value == "default-value");
}
[Fact]
public async Task Should_Get_All_From_Store_For_Given_User_Without_Fallback()
{
var settingValues = await _settingManager.GetAllForUserAsync(AbpIdentityTestDataBuilder.User1Id, fallback: false);
settingValues.Count.ShouldBe(1);
settingValues.ShouldContain(sv => sv.Name == "MySetting2" && sv.Value == "user1-store-value");
}
} }
} }
Loading…
Cancel
Save