public void AllowAccessToWrappedToggle()
        {
            var wrappedToggle = new FeatureToggleThatDoesNotThrowAnException();

            var sut = new DefaultToDisabledOnErrorDecorator(wrappedToggle);

            Assert.Same(wrappedToggle, sut.Toggle);
        }
        public void CallLoggingActionOnErrorIfSet()
        {
            var wrappedToggle = new FeatureToggleThatThrowsAnException();

            string log = "";

            var sut = new DefaultToDisabledOnErrorDecorator(wrappedToggle, ex => log += ex.Message);



            try
            {
                var isEnabled = sut.FeatureEnabled;
            }
            catch
            {
                // ignore exception so we can assert that the specified action was called
            }



            Assert.Equal("Exception for testing purposes", log);
        }
        public void ReturnFalseWhenError()
        {
            var sut = new DefaultToDisabledOnErrorDecorator(new FeatureToggleThatThrowsAnException());

            Assert.False(sut.FeatureEnabled);
        }
        public void ReturnConfiguredValueWhenNoError()
        {
            var sut = new DefaultToDisabledOnErrorDecorator(new FeatureToggleThatDoesNotThrowAnException());

            Assert.False(sut.FeatureEnabled);
        }