A toggle that has other feature toggles as dependencies.
Inheritance: FeatureToggleBase, IDependencyFeatureToggle
        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 AssertConfigurationIsValid_Throws_For_CircularDependency()
        {
            var toggle1 = new DependencyToggle(new BooleanToggle(ToggleName, true));
            var toggle2 = new DependencyToggle(new BooleanToggle(ToggleName, true));
            toggle1.AddDependency(toggle2);
            toggle2.AddDependency(toggle1);

            Assert.Throws<CircularDependencyException>(toggle1.AssertConfigurationIsValid);
        }
        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 Freeze_Freezes_Toggle()
 {
     var toggle1 = new DependencyToggle(new BooleanToggle(ToggleName, true));
     toggle1.Freeze();
     Assert.IsTrue(toggle1.IsFrozen);
 }
 public void Toggle_Is_Unfrozen_By_Default()
 {
     var toggle1 = new DependencyToggle(new BooleanToggle(ToggleName, true));
     Assert.IsFalse(toggle1.IsFrozen);
 }
 public void Evaluate_Returns_True_If_Enabled_With_No_Dependencies()
 {
     var toggle = new DependencyToggle(new BooleanToggle(ToggleName, true), new IFeatureToggle[0]);
     Assert.IsTrue(toggle.IsEnabled());
 }
        public void Freeze_Freezes_Dependencies()
        {
            var toggle1 = new DependencyToggle(new BooleanToggle(ToggleName, true));
            var dependency1 = new Mock<IFeatureToggle>();
            var dependency2 = new Mock<IFeatureToggle>();

            toggle1.AddDependency(dependency1.Object);
            toggle1.AddDependency(dependency2.Object);

            dependency1.Setup(x => x.Freeze());
            dependency2.Setup(x => x.Freeze());

            toggle1.Freeze();

            Assert.IsTrue(toggle1.IsFrozen);
            dependency1.VerifyAll();
            dependency2.VerifyAll();
        }
        public void Evaluate_Returns_True_If_Dependencies_Not_Disabled()
        {
            var toggles = new IFeatureToggle[] { new BooleanToggle("a", true), new BooleanToggle("b", true) };

            var toggle = new DependencyToggle(new BooleanToggle(ToggleName, true), toggles);
            Assert.IsTrue(toggle.IsEnabled());
        }
 public void Evaluate_Returns_False_If_Disabled()
 {
     var toggle = new DependencyToggle(new BooleanToggle(ToggleName, false), new IFeatureToggle[0]);
     Assert.IsFalse(toggle.IsEnabled());
 }
 public void Construction_Saves_Name()
 {
     var toggle = new DependencyToggle(new BooleanToggle(ToggleName, true), new IFeatureToggle[0]);
     Assert.AreEqual(ToggleName, toggle.Name);
 }
        public void Construction_Saves_Dependencies()
        {
            var toggles = new IFeatureToggle[] { new BooleanToggle("a", true), new BooleanToggle("b", true) };

            var toggle = new DependencyToggle(new BooleanToggle(ToggleName, true), toggles);
            CollectionAssert.AreEquivalent(toggles, toggle.Dependencies);
        }
        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);
        }