public void Should_Change_Setting_Values() { var session = new MyChangableSession(); var settingManager = new SettingManager(CreateMockSettingDefinitionManager(), new ObjectThreadSafeCacheFactoryService()); settingManager.SettingStore = new MemorySettingStore(); settingManager.Session = session; //Application level changes settingManager.ChangeSettingForApplication(MyAppLevelSetting, "53"); settingManager.ChangeSettingForApplication(MyAppLevelSetting, "54"); settingManager.ChangeSettingForApplication(MyAllLevelsSetting, "application level changed value"); settingManager.SettingStore.GetSettingOrNull(null, null, MyAppLevelSetting).Value.ShouldBe("54"); settingManager.GetSettingValue<int>(MyAppLevelSetting).ShouldBe(54); settingManager.GetSettingValue(MyAllLevelsSetting).ShouldBe("application level changed value"); //Tenant level changes session.TenantId = Guid.NewGuid(); settingManager.ChangeSettingForTenant(session.TenantId.Value, MyAllLevelsSetting, "tenant 1 changed value"); settingManager.GetSettingValue(MyAllLevelsSetting).ShouldBe("tenant 1 changed value"); //User level changes session.UserId = Guid.NewGuid(); settingManager.ChangeSettingForUser(session.UserId.Value, MyAllLevelsSetting, "user 1 changed value"); settingManager.GetSettingValue(MyAllLevelsSetting).ShouldBe("user 1 changed value"); }
public void Should_Delete_Setting_Values_On_Default_Value() { var session = new MyChangableSession(); var store = new MemorySettingStore(); var settingManager = new SettingManager(CreateMockSettingDefinitionManager(), new ObjectThreadSafeCacheFactoryService()); settingManager.SettingStore = store; settingManager.Session = session; session.TenantId = Guid.NewGuid(); session.UserId = Guid.NewGuid(); //We can get user's personal stored value store.GetSettingOrNull(null, session.UserId, MyAllLevelsSetting).ShouldNotBe(null); settingManager.GetSettingValue(MyAllLevelsSetting).ShouldBe("user 1 stored value"); //This will delete setting for the user since it's same as tenant's setting value settingManager.ChangeSettingForUser(session.UserId.Value, MyAllLevelsSetting, "tenant 1 stored value"); store.GetSettingOrNull(null, session.UserId, MyAllLevelsSetting).ShouldBe(null); //We can get tenant's setting value store.GetSettingOrNull(session.TenantId, null, MyAllLevelsSetting).ShouldNotBe(null); settingManager.GetSettingValue(MyAllLevelsSetting).ShouldBe("tenant 1 stored value"); //This will delete setting for tenant since it's same as application's setting value settingManager.ChangeSettingForTenant(session.TenantId.Value, MyAllLevelsSetting, "application level stored value"); store.GetSettingOrNull(null, session.UserId, MyAllLevelsSetting).ShouldBe(null); //We can get application's value store.GetSettingOrNull(null, null, MyAllLevelsSetting).ShouldNotBe(null); settingManager.GetSettingValue(MyAllLevelsSetting).ShouldBe("application level stored value"); //This will delete setting for application since it's same as the default value of the setting settingManager.ChangeSettingForApplication(MyAllLevelsSetting, "application level default value"); store.GetSettingOrNull(null, null, MyAllLevelsSetting).ShouldBe(null); //Now, there is no setting value, default value should return settingManager.GetSettingValue(MyAllLevelsSetting).ShouldBe("application level default value"); }