public void DoIt() { IFeatureConfiguration features = new FeatureConfiguration { new BooleanToggle("Feature1", true), new DateRangeToggle( "Feature2", true, DateTime.Now.AddDays(-2), DateTime.Now.AddDays(3)), new EstablishedFeatureToggle("establishedFeature") }; var mainFeature = new BooleanToggle("mainFeature", true); var subFeature1 = new BooleanToggle("subFeature1", true); var subFeature2 = new BooleanToggle("subFeature2", true); var dependency1 = new DependencyToggle(subFeature1, mainFeature); var dependency2 = new DependencyToggle(subFeature2, mainFeature); features.Add(dependency1); features.Add(dependency2); features.Add(new EstablishedFeatureToggle("establishedFeature")); Console.WriteLine(features.WhatDoIHave()); }
public void Freeze_Freezes_Toggle() { var toggle = new BooleanToggle(TestName, true); toggle.Freeze(); Assert.IsTrue(toggle.IsFrozen); }
public void AddDependency_Throws_If_Object_Is_Frozen() { var toggle = new DependencyToggle(new BooleanToggle(ToggleName, true)); toggle.Freeze(); var dependency = new BooleanToggle("a", true); Assert.Throws<ToggleFrozenException>(() => toggle.AddDependency(dependency)); }
public void ToString_Outputs_Object_State() { var toggle = new BooleanToggle(TestName, true); string output = toggle.ToString(); StringAssert.Contains(TestName, output); StringAssert.Contains(bool.TrueString, output); }
public void Construction_Sets_Enabled() { var toggle = new BooleanToggle(TestName, true); Assert.IsTrue(toggle.IsEnabled()); toggle = new BooleanToggle(TestName, false); Assert.IsFalse(toggle.IsEnabled()); }
public void AddDependency_Throws_If_Object_Is_Frozen() { var toggle = new DependencyToggle(new BooleanToggle(ToggleName, true)); toggle.Freeze(); var dependency = new BooleanToggle("a", true); Assert.Throws <ToggleFrozenException>(() => toggle.AddDependency(dependency)); }
public void Can_Find_Feature_Toggle_By_Name() { const string toggleName = "testName"; var toggle = new BooleanToggle(toggleName, true); var featureConfiguration = new FeatureConfiguration { toggle }; var locator = new LocateByNameStrategy(featureConfiguration, toggleName); Assert.AreSame(toggle, locator.Locate()); }
public void Add_Adds_Feature_By_Name() { var configuration = new FeatureConfiguration(); var expected = new BooleanToggle(TestFeatureName, true); configuration.Add(expected); var actual = configuration.Get(TestFeatureName); Assert.AreSame(expected, actual); }
public void Can_Add_Dependencies_To_Toggle() { var toggle = new DependencyToggle(new BooleanToggle(ToggleName, true)); Assert.IsFalse(toggle.Dependencies.Any()); var dependency = new BooleanToggle("a", true); toggle.AddDependency(dependency); Assert.IsTrue(toggle.Dependencies.Any()); Assert.AreSame(toggle.Dependencies.Single(), dependency); }
public void Add_Replaces_Feature_With_Name() { var configuration = new FeatureConfiguration(); var original = new BooleanToggle(TestFeatureName, false); var expected = new BooleanToggle(TestFeatureName, true); configuration.Add(original); configuration.Add(expected); var actual = configuration.Get(TestFeatureName); Assert.AreSame(expected, actual); }
public void AssertConfigurationIsValid_Returns_False_For_Non_Circular_Dpendency() { var toggle1 = new DependencyToggle(new BooleanToggle(ToggleName, true)); var toggle2 = new DependencyToggle(new BooleanToggle(ToggleName, true)); var toggle3 = new DependencyToggle(new BooleanToggle(ToggleName, true)); var toggle4 = new BooleanToggle(ToggleName, true); toggle1.AddDependency(toggle2); toggle2.AddDependency(toggle3); toggle2.AddDependency(toggle4); toggle3.AddDependency(toggle4); Assert.DoesNotThrow(toggle1.AssertConfigurationIsValid); }
public void IsEnabled_Returns_False_For_Enabled_Features() { var configuration = new FeatureConfiguration(); const bool expected = false; var feature = new BooleanToggle(TestFeatureName, expected); configuration.Add(feature); var actual = configuration.IsEnabled(TestFeatureName); Assert.AreEqual(expected, actual); }
public void Clear_Clears_Features_From_Configuration() { var configuration = new FeatureConfiguration(); const bool expected = false; var feature = new BooleanToggle(TestFeatureName, expected); configuration.Add(feature); configuration.Clear(); Assert.IsNull(configuration.Get(TestFeatureName)); Assert.AreEqual(0, configuration.Count); }
public void Can_Enumerate_Over_Feature_Toggles() { var configuration = new FeatureConfiguration(); var f1 = new BooleanToggle("f1", true); configuration.Add(f1); var f2 = new BooleanToggle("f2", true); configuration.Add(f2); Assert.IsTrue(configuration.Any(x => x == f1)); Assert.IsTrue(configuration.Any(x => x == f2)); }
public void Can_Enumerate_Over_Feature_Toggles_Via_Base_IEnumerable_Interface() { var configuration = new FeatureConfiguration(); var f1 = new BooleanToggle("f1", true); configuration.Add(f1); var f2 = new BooleanToggle("f2", true); configuration.Add(f2); IEnumerable baseConfiguration = configuration; var enumerator = baseConfiguration.GetEnumerator(); Assert.IsTrue(enumerator.MoveNext()); }
public void WhatDoIHave_Returns_Diagnostic_String_On_Feature_Toggle_Instances() { var configuration = new FeatureConfiguration(); var f1 = new BooleanToggle("f1", true); configuration.Add(f1); var f2 = new BooleanToggle("f2", false); configuration.Add(f2); string diagnostics = configuration.WhatDoIHave(); StringAssert.Contains("f1", diagnostics); StringAssert.Contains(bool.TrueString, diagnostics); StringAssert.Contains("f2", diagnostics); StringAssert.Contains(bool.FalseString, diagnostics); }
private IFeatureToggle ConvertToFeatureToggle(ToggleConfig config) { IFeatureToggle toggle; if (config.IsEstablished) { toggle = new EstablishedFeatureToggle(config.Name); } else if ((config.FromDate != null) || (config.ToDate != null)) { toggle = new DateRangeToggle(config.Name, config.Enabled, config.FromDate, config.ToDate); } else { toggle = new BooleanToggle(config.Name, config.Enabled); } return(string.IsNullOrEmpty(config.Dependencies) ? toggle : new DependencyToggle(toggle)); }
public void Initialize_From_Source_Initializes_From_Custom_Reader() { var reader = new Mock <IConfigurationReader>(); var feature1 = new BooleanToggle("f1", true); var feature2 = new BooleanToggle("f2", true); var features = new[] { feature1, feature2 }; reader.Setup(x => x.GetFeatures()).Returns(features); var configuration = new FeatureConfiguration(); configuration.Initialize(x => x.FromSource(reader.Object)); Assert.AreSame(feature1, configuration.Get("f1")); Assert.AreSame(feature2, configuration.Get("f2")); reader.VerifyAll(); }
public void Construction_Sets_Name() { var toggle = new BooleanToggle(TestName, true); Assert.AreEqual(TestName, toggle.Name); }
public void Feature_Is_Unfrozen_By_Default() { var toggle = new BooleanToggle(TestName, true); Assert.IsFalse(toggle.IsFrozen); }
public void Initialize_From_Source_Initializes_From_Custom_Reader() { var reader = new Mock<IConfigurationReader>(); var feature1 = new BooleanToggle("f1", true); var feature2 = new BooleanToggle("f2", true); var features = new[] { feature1, feature2 }; reader.Setup(x => x.GetFeatures()).Returns(features); var configuration = new FeatureConfiguration(); configuration.Initialize(x => x.FromSource(reader.Object)); Assert.AreSame(feature1, configuration.Get("f1")); Assert.AreSame(feature2, configuration.Get("f2")); reader.VerifyAll(); }
private IFeatureToggle ConvertToFeatureToggle(ToggleConfig config) { IFeatureToggle toggle; if (config.IsEstablished) { toggle = new EstablishedFeatureToggle(config.Name); } else if ((config.FromDate != null) || (config.ToDate != null)) { toggle = new DateRangeToggle(config.Name, config.Enabled, config.FromDate, config.ToDate); } else { toggle = new BooleanToggle(config.Name, config.Enabled); } return string.IsNullOrEmpty(config.Dependencies) ? toggle : new DependencyToggle(toggle); }
public void IsEnabled_Returns_True_For_Enabled_Features() { var configuration = new FeatureConfiguration(); const bool expected = true; var feature = new BooleanToggle(TestFeatureName, expected); configuration.Add(feature); var actual = configuration.IsEnabled(TestFeatureName); Assert.AreEqual(expected, actual); }