public async Task Should_Change_Setting_Values() { var session = new MyChangableSession(); var settingManager = new SettingManager(CreateMockSettingDefinitionManager()) { SettingStore = new MemorySettingStore(), AbpSession = session }; //Application level changes await settingManager.ChangeSettingForApplicationAsync(MyAppLevelSetting, "53"); await settingManager.ChangeSettingForApplicationAsync(MyAppLevelSetting, "54"); await settingManager.ChangeSettingForApplicationAsync(MyAllLevelsSetting, "application level changed value"); (await settingManager.SettingStore.GetSettingOrNullAsync(null, null, MyAppLevelSetting)).Value.ShouldBe("54"); (await settingManager.GetSettingValueAsync<int>(MyAppLevelSetting)).ShouldBe(54); (await settingManager.GetSettingValueAsync(MyAllLevelsSetting)).ShouldBe("application level changed value"); //Tenant level changes session.TenantId = 1; await settingManager.ChangeSettingForTenantAsync(1, MyAllLevelsSetting, "tenant 1 changed value"); (await settingManager.GetSettingValueAsync(MyAllLevelsSetting)).ShouldBe("tenant 1 changed value"); //User level changes session.UserId = 1; await settingManager.ChangeSettingForUserAsync(1, MyAllLevelsSetting, "user 1 changed value"); (await settingManager.GetSettingValueAsync(MyAllLevelsSetting)).ShouldBe("user 1 changed value"); }
public async Task Should_Delete_Setting_Values_On_Default_Value() { var session = new MyChangableSession(); var store = new MemorySettingStore(); var settingManager = new SettingManager(CreateMockSettingDefinitionManager()) { SettingStore = store, AbpSession = session }; session.TenantId = 1; session.UserId = 1; //We can get user's personal stored value (await store.GetSettingOrNullAsync(null, 1, MyAllLevelsSetting)).ShouldNotBe(null); (await settingManager.GetSettingValueAsync(MyAllLevelsSetting)).ShouldBe("user 1 stored value"); //This will delete setting for the user since it's same as tenant's setting value await settingManager.ChangeSettingForUserAsync(1, MyAllLevelsSetting, "tenant 1 stored value"); (await store.GetSettingOrNullAsync(null, 1, MyAllLevelsSetting)).ShouldBe(null); //We can get tenant's setting value (await store.GetSettingOrNullAsync(1, null, MyAllLevelsSetting)).ShouldNotBe(null); (await settingManager.GetSettingValueAsync(MyAllLevelsSetting)).ShouldBe("tenant 1 stored value"); //This will delete setting for tenant since it's same as application's setting value await settingManager.ChangeSettingForTenantAsync(1, MyAllLevelsSetting, "application level stored value"); (await store.GetSettingOrNullAsync(null, 1, MyAllLevelsSetting)).ShouldBe(null); //We can get application's value (await store.GetSettingOrNullAsync(null, null, MyAllLevelsSetting)).ShouldNotBe(null); (await settingManager.GetSettingValueAsync(MyAllLevelsSetting)).ShouldBe("application level stored value"); //This will delete setting for application since it's same as the default value of the setting await settingManager.ChangeSettingForApplicationAsync(MyAllLevelsSetting, "application level default value"); (await store.GetSettingOrNullAsync(null, null, MyAllLevelsSetting)).ShouldBe(null); //Now, there is no setting value, default value should return (await settingManager.GetSettingValueAsync(MyAllLevelsSetting)).ShouldBe("application level default value"); }