public void ConfigurationFactoryShouldReturnConfigurationFromConfigurationFactoryProvider() { IRule rule = Mocker.DynamicMock <IRule>(); IRuleConfiguration config = Mocker.DynamicMock <IRuleConfiguration>(); IRuleConfigurationFactory factory = Mocker.DynamicMock <IRuleConfigurationFactory>(); Expect.Call(_provider.GetRuleConfigurationFactoryFor(rule.GetType())).Return(factory).Repeat.Once(); Expect.Call(factory.Get(rule.GetType())).Return(config).Repeat.Once(); Expect.Call(_project.GetProjectRuleConfigurationOverrides()).Return(new IRuleConfigurationOverride[] {}).Repeat.Once(); Mocker.ReplayAll(); Assert.AreEqual(config, _configFactory.GetRuleConfigurationFor(rule.GetType())); Mocker.VerifyAll(); }
/// <summary> /// Gets the configuration for the specified rule type /// </summary> /// <param name="aType">The rule type</param> /// <returns>The rule configuration</returns> public IRuleConfiguration GetRuleConfigurationFor(Type aType) { IRuleConfigurationFactory factory = _provider.GetRuleConfigurationFactoryFor(aType); if (factory == null) { throw new CalidusException("No default configuration could be loaded for rule " + aType.FullName); } //determine default and overridden configuration IRuleConfiguration defaultConfig = factory.Get(aType); IRuleConfigurationOverride overrideConfig = _project.GetProjectRuleConfigurationOverrides().FirstOrDefault <IRuleConfigurationOverride>(p => p.Rule.FullName.Equals(aType.FullName)); IRuleConfiguration actualConfig = defaultConfig; if (overrideConfig != null) { IList <IRuleConfigurationParameter> parameters = new List <IRuleConfigurationParameter>(); foreach (IRuleConfigurationParameter aParam in overrideConfig.Parameters) { //get the default value IRuleConfigurationParameter defaultConfigParameter = defaultConfig.Parameters.FirstOrDefault <IRuleConfigurationParameter>(p => p.Name.Equals(aParam.Name)); //create an overridden parameter with the overridden value DefaultRuleConfigurationParameter overriddenParam = new DefaultRuleConfigurationParameter(); overriddenParam.Name = defaultConfigParameter.Name; overriddenParam.ParameterType = defaultConfigParameter.ParameterType; overriddenParam.Value = aParam.Value; //add the overridden parameter parameters.Add(overriddenParam); } actualConfig = new DefaultRuleConfiguration(aType, defaultConfig.Description, parameters); } return(actualConfig); }