public void BuilderTest_FeatureWithReadOnlyStrategy_FailedEnable()
        {
            var builder = new FeatureSetBuilder();

            builder.Build(ctx => ctx.AddFeature <MySampleFeature>());

            Assert.Throws <InvalidOperationException>(() => FeatureContext.Enable <MySampleFeature>());
        }
        public ActionResult Update(string name, string state)
        {
            if (state == "on")
            {
                FeatureContext.Enable(name);
            }
            else
            {
                FeatureContext.Disable(name);
            }

            return(RedirectToAction("Index"));
        }
        public void BuilderTest_FeatureWithWritableStrategy_FailToWrite_FeatureDoesNotChangeState()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MyWritableFeatureSingleStrategy>();
                ctx.ForStrategy <WritableStrategy>().Use <WritableStrategyExceptionImpl>();
            });

            Assert.False(container.IsEnabled <MyWritableFeatureSingleStrategy>());
            FeatureContext.Enable <MyWritableFeatureSingleStrategy>();

            Assert.False(container.IsEnabled <MyWritableFeatureSingleStrategy>());
        }
Exemple #4
0
        protected void chkEnabled_OnCheckedChanged(object sender, EventArgs e)
        {
            var checkBox    = (CheckBox)sender;
            var featureName = checkBox.InputAttributes["value"];

            if (checkBox.Checked)
            {
                FeatureContext.Enable(featureName);
            }
            else
            {
                FeatureContext.Disable(featureName);
            }
        }
        public void BuilderTest_FeatureWithWritableStrategy_FeatureCanBeEnabled()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MyWritableFeatureSingleStrategy>();
                ctx.ForStrategy <WritableStrategy>().Use <WritableStrategyImpl>();
            });

            Assert.False(container.IsEnabled <MyWritableFeatureSingleStrategy>());
            Assert.True(container.GetFeature <MyWritableFeatureSingleStrategy>().CanModify, "Feature is not modifiable");

            FeatureContext.Enable <MyWritableFeatureSingleStrategy>();

            Assert.True(container.IsEnabled <MyWritableFeatureSingleStrategy>());
        }
Exemple #6
0
        public void ChangeState_AllWritableStrategiesSynced()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MySampleFeatureWithMultipleWritableStrategies>();

                ctx.ForStrategy <WritableHashMapStrategyAttribute>().Use <WritableHashtableStrategy>();
                ctx.ForStrategy <WritableHashMapStrategy2Attribute>().Use <WritableHashtable2Strategy>();
            });

            FeatureContext.Enable <MySampleFeatureWithMultipleWritableStrategies>();

            Assert.True(FeatureContext.IsEnabled <MySampleFeatureWithMultipleWritableStrategies>());

            // TODO:
            //Assert.True(container.IsEnabled<MySampleFeatureWithMultipleWritableStrategies>(typeof(WritableHashtableStrategy)));
            //Assert.True(container.IsEnabled<MySampleFeatureWithMultipleWritableStrategies>(typeof(WritableHashtable2Strategy)));
        }
        public void BuilderTest_MultipleFeaturesSameStrategy_NoCollisionsInState()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MyWritableFeatureSingleStrategy>();
                ctx.AddFeature <MyWritableAnotherFeatureSingleStrategy>();
                ctx.ForStrategy <WritableStrategy>().Use <WritableStrategyImpl>();
            });

            FeatureContext.Enable <MyWritableAnotherFeatureSingleStrategy>();

            Assert.False(FeatureContext.IsEnabled <MyWritableFeatureSingleStrategy>());
            Assert.True(FeatureContext.IsEnabled <MyWritableAnotherFeatureSingleStrategy>());

            FeatureContext.Enable <MyWritableFeatureSingleStrategy>();
            FeatureContext.Disable <MyWritableAnotherFeatureSingleStrategy>();

            Assert.True(FeatureContext.IsEnabled <MyWritableFeatureSingleStrategy>());
            Assert.False(FeatureContext.IsEnabled <MyWritableAnotherFeatureSingleStrategy>());
        }
        public IResourceResult Execute(IResourceContext context)
        {
            var p = context.Parameters;

            string featureName;

            if (!p.TryGetValue("featurename", out featureName))
            {
                throw new ArgumentException("Missing name of the feature");
            }

            string value;

            if (!p.TryGetValue("val", out value))
            {
                throw new ArgumentException("Missing new value for the feature");
            }

            if (string.IsNullOrEmpty(featureName) || string.IsNullOrEmpty(value))
            {
                return(GenerateResponse());
            }

            var newValue = Boolean.Parse(value);

            if (newValue)
            {
                FeatureContext.Enable(featureName);
            }
            else
            {
                FeatureContext.Disable(featureName);
            }

            return(GenerateResponse());
        }