Ejemplo n.º 1
0
        /// <summary>
        /// Loads configured features using metadata
        /// </summary>
        /// <param name="featureScope">The scope in which to look for the features</param>
        /// <param name="configuredFeatures">Collection of configured feature metadata</param>
        /// <returns>Collection of configured feature instances</returns>
        public static HashSet <ConfiguredFeature> LoadConfiguredFeatures(FeatureScope featureScope, ConfiguredFeatureMetadata[] configuredFeatures)
        {
            var loadedConfiguredFeatures = new HashSet <ConfiguredFeature>();

            foreach (var configuredFeature in configuredFeatures)
            {
                try
                {
                    if (configuredFeature.ConditionGroups != null && configuredFeature.ConditionGroups.Any())
                    {
                        var loadedFeature = ConfiguredFeatureFactory.GetInstance(featureScope, configuredFeature.Name, configuredFeature.ConditionGroups);
                        loadedConfiguredFeatures.Add(loadedFeature);
                    }
                    else if (configuredFeature.ConditionGroup != null)
                    {
                        var loadedFeature = ConfiguredFeatureFactory.GetInstance(featureScope, configuredFeature.Name, configuredFeature.ConditionGroup);
                        loadedConfiguredFeatures.Add(loadedFeature);
                    }
                    else if (configuredFeature.Condition != null)
                    {
                        var loadedFeature = ConfiguredFeatureFactory.GetInstance(featureScope, configuredFeature.Name, configuredFeature.Condition);
                        loadedConfiguredFeatures.Add(loadedFeature);
                    }
                }
                catch (Exception ex)
                {
                    Log.Logger.LogError(ex, $"Error encountered when trying to load ConfiguredFeature {configuredFeature.Name}.");
                    Console.WriteLine(ex);
                }
            }

            return(loadedConfiguredFeatures);
        }
        public void GetInstance_Returns_Feature_With_Condition()
        {
            var featureScope = FeatureScope.Project;
            var featureName  = "FeatureName";
            var feature      = ConfiguredFeatureFactory.GetInstance(featureScope, featureName, ConditionMetadata);

            Assert.NotNull(feature);
            Assert.True(feature.Name == featureName);
            Assert.True(feature.FeatureScope == featureScope);
            Assert.True(feature is ConfiguredFeature);
            Assert.True(feature.Condition is XmlFileQueryCondition);
        }
        public void GetInstance_Returns_Feature_With_Condition_Groups()
        {
            var featureScope = FeatureScope.Project;
            var featureName  = "FeatureName";
            var feature      = ConfiguredFeatureFactory.GetInstance(featureScope, featureName, ConditionGroupsMetadata);

            Assert.NotNull(feature);
            Assert.True(feature.Name == featureName);
            Assert.True(feature.FeatureScope == featureScope);
            Assert.True(feature is ConfiguredFeature);
            Assert.True(feature.ConditionGroups.All(c => c.Conditions.Count() == 2));
            Assert.True(feature.ConditionGroups.Count() == 2);
        }