示例#1
0
        public void CreateConfigKeyName_WithCategoryName_ContainsCategoryNameSection(string settingsKeyName, string siteName, string categoryName, bool useCategorySections)
        {
            var options = new CmsSettingsConfigBuilderOptions
            {
                UseCategorySections = useCategorySections
            };

            var sut = new CmsSettingConfigKeyNameFactory(Configuration, options);

            var    setting = new CmsSetting(settingsKeyName, string.Empty, categoryName, siteName);
            string actual  = sut.CreateConfigKeyName(setting);

            Assert.That(
                actual,
                Does.Contain($"{categoryName}{AppConfigurationPath.KeyDelimiter}")
                );
        }
        public void CreateConfigSettings_WithCategorySections_PreservesGlobalSettingsForSites(bool useCategorySections)
        {
            var globalSetting = new CmsSetting("Key1", "Value1", "Category1", null);
            var siteSetting   = new CmsSetting("Key2", "Value2", "Category1", "Site");

            ReadOnlyCollection <CmsSetting> settings = new List <CmsSetting>
            {
                globalSetting,
                siteSetting
            }
            .AsReadOnly();

            IQueryHandler <AllConfigCmsSettingsQuery, IReadOnlyCollection <CmsSetting> > allSettingsQueryHandler = A.Fake <IQueryHandler <AllConfigCmsSettingsQuery, IReadOnlyCollection <CmsSetting> > >();

            A.CallTo(() => allSettingsQueryHandler.Handle(A <AllConfigCmsSettingsQuery> .Ignored))
            .Returns(settings);

            var configurationManager = new ConfigurationManagerAdapter();
            var configuration        = new AppConfiguration(configurationManager);
            var options = new CmsSettingsConfigBuilderOptions
            {
                UseCategorySections = useCategorySections
            };
            var configKeyNameFactory = new CmsSettingConfigKeyNameFactory(configuration, options);

            var sut = new CmsSettingsConfigBuilderInternal(
                options,
                allSettingsQueryHandler,
                configKeyNameFactory
                );

            ICollection <KeyValuePair <string, string> > values = sut.GetAllValues(null);

            // If a category has at least one Site setting value, all other keys in that category should be made available within the corresponding Site "section" by falling back to Global settings values where a Site specific value is not available

            string globalSettingKey = configKeyNameFactory.CreateConfigKeyName(globalSetting);
            string expected         = globalSetting.Value;

            KeyValuePair <string, string> configSetting = values.FirstOrDefault(setting => setting.Key == globalSettingKey);
            string actual = configSetting.Value;

            Assert.That(actual, Is.EqualTo(expected));
        }
示例#3
0
        public void CreateConfigKeyName_WithKeyPrefix_StripsPrefixWhenDirected(string siteName, string categoryName, string keyPrefix, string keyName, bool stripPrefix, bool useCategorySections)
        {
            var options = new CmsSettingsConfigBuilderOptions
            {
                UseCategorySections = useCategorySections,
                KeyPrefix           = keyPrefix,
                StripPrefix         = stripPrefix
            };

            var sut = new CmsSettingConfigKeyNameFactory(Configuration, options);

            string settingsKeyName = $"{keyPrefix}{keyName}";

            var    setting = new CmsSetting(settingsKeyName, string.Empty, categoryName, siteName);
            string actual  = sut.CreateConfigKeyName(setting);

            Assert.That(
                actual,
                stripPrefix ? Does.Not.Contain(keyPrefix) : Does.Contain(keyPrefix)
                );
        }
示例#4
0
        public void CreateSettingsKeyName_WithGlobalConfigKey_CreatesGlobalSettingsKey(string settingsKeyName, string siteName, string categoryName, bool useCategorySections)
        {
            var options = new CmsSettingsConfigBuilderOptions
            {
                UseCategorySections = useCategorySections
            };

            var sut = new CmsSettingConfigKeyNameFactory(Configuration, options);

            var    setting   = new CmsSetting(settingsKeyName, string.Empty, categoryName, siteName);
            string configKey = sut.CreateConfigKeyName(setting);

            SettingsKeyName actual = sut.CreateSettingsKeyName(configKey);

            Assert.Multiple(() =>
            {
                Assert.That(actual.KeyName, Is.EqualTo(settingsKeyName));
                Assert.That(actual.SiteName, Is.Empty);
                Assert.IsTrue(actual.IsGlobal);
            });
        }
示例#5
0
        public void CreateSettingsKeyName_WithKeyPrefix_RestoresPrefixWhenStripped(string siteName, string categoryName, string keyPrefix, string keyName, bool stripPrefix, bool useCategorySections)
        {
            var options = new CmsSettingsConfigBuilderOptions
            {
                UseCategorySections = useCategorySections,
                KeyPrefix           = keyPrefix,
                StripPrefix         = stripPrefix
            };

            var sut = new CmsSettingConfigKeyNameFactory(Configuration, options);

            string settingsKeyName = $"{keyPrefix}{keyName}";

            var    setting   = new CmsSetting(settingsKeyName, string.Empty, categoryName, siteName);
            string configKey = sut.CreateConfigKeyName(setting);

            SettingsKeyName actual = sut.CreateSettingsKeyName(configKey);

            Assert.That(
                actual.KeyName,
                Does.StartWith(keyPrefix)
                );
        }