示例#1
0
        public async Task Manager_Update_Test()
        {
            var info = new SettingModelUpdateSto
            {
                TypeFullName = typeof(SampleSetting).FullName,
                ProviderName = TenantSettingValueProvider.ProviderName,
                Properties   = new List <SettingModelPropertySto> {
                    new SettingModelPropertySto {
                        Name  = "Name",
                        Value = "Tom"
                    },
                    new SettingModelPropertySto {
                        Name  = "Age",
                        Value = "30"
                    },
                    new SettingModelPropertySto {
                        Name  = "MaritalStatus",
                        Value = "true"
                    },
                    new SettingModelPropertySto {
                        Name  = "Asset",
                        Value = "5000"
                    }
                }
            };
            await _settingModelManager.UpdateAsync(info);

            _sampleSetting.Name.ShouldBe(info.Properties[0].Value);
            _sampleSetting.Age.ShouldBe(info.Properties[1].Value.To <int>());
            _sampleSetting.MaritalStatus.ShouldBe(info.Properties[2].Value.To <bool>());
            _sampleSetting.Asset.ShouldBe(info.Properties[3].Value.To <double>());
        }
示例#2
0
        public async Task UpdateAsync(SettingModelUpdateSto sto)
        {
            _settingValueProviderManager.CheckProviderName(sto.ProviderName);

            var model = _settingModelTypeManager.EditableModels.Find(t =>
                                                                     t.GetType().FullName == sto.TypeFullName
                                                                     );

            Check.NotNull(model, sto.TypeFullName);

            model.SetValueProviderName(sto.ProviderName);
            var providerKey    = GetProviderKey(sto.ProviderName);
            var inputPropertys = sto.Properties.ToDictionary(key => key.Name, val => val.Value);

            await ChangeSettingInternalAsync(model.GetType(), sto.ProviderName, providerKey, inputPropertys);
        }
示例#3
0
        public async Task Manager_Update_ChangeProviderName_Test()
        {
            var info = new SettingModelUpdateSto
            {
                TypeFullName = typeof(SampleSetting).FullName,
                ProviderName = "test",
                Properties   = new List <SettingModelPropertySto> {
                    new SettingModelPropertySto {
                        Name  = "Name",
                        Value = "Tom"
                    },
                    new SettingModelPropertySto {
                        Name  = "Age",
                        Value = "30"
                    },
                    new SettingModelPropertySto {
                        Name  = "MaritalStatus",
                        Value = "true"
                    },
                    new SettingModelPropertySto {
                        Name  = "Asset",
                        Value = "5000"
                    }
                }
            };
            await Assert.ThrowsAsync <ArgumentNullException>(async() =>
                                                             await _settingModelManager.UpdateAsync(info)
                                                             );

            info.ProviderName = UserSettingValueProvider.ProviderName;
            await _settingModelManager.UpdateAsync(info);

            _sampleSetting.Name.ShouldBe(SampleSetting.NameDefaultValue);
            _sampleSetting.Age.ShouldBe(0);
            _sampleSetting.MaritalStatus.ShouldBeFalse();
            _sampleSetting.Asset.ShouldBe(0);

            info.ProviderName = TenantSettingValueProvider.ProviderName;
            await _settingModelManager.UpdateAsync(info);

            _sampleSetting.Name.ShouldBe(info.Properties[0].Value);
            _sampleSetting.Age.ShouldBe(info.Properties[1].Value.To <int>());
            _sampleSetting.MaritalStatus.ShouldBe(info.Properties[2].Value.To <bool>());
            _sampleSetting.Asset.ShouldBe(info.Properties[3].Value.To <double>());
        }