public void FeatureEnabled_ToggleExists_ToggleValueIsFalse()
        {
            // Arrange
            AutoCreateToggle <TestFeatureToggle>();
            var toggle = new TestFeatureToggle();
            // Act
            var toggleValue = toggle.FeatureEnabled;

            // Assert
            toggleValue.ShouldBeFalse();
        }
        public void FeatureEnabled_ToggleExists_ToggleValueIsTrue()
        {
            // Arrange
            SetToggleInConfig($"FeatureToggle.{nameof(TestFeatureToggle)}", bool.TrueString);
            var toggle = new TestFeatureToggle();
            // Act
            var toggleValue = toggle.FeatureEnabled;

            // Assert
            toggleValue.ShouldBeTrue();
        }
        public void FeatureEnabled_ToggleNameIsWithoutPrefixAndConfigured_ToggleValueIsTrue()
        {
            // Arrange
            ServiceFabricConfigProvider.Configure(usePrefix: false);
            SetToggleInConfig(nameof(TestFeatureToggle), bool.TrueString);
            var toggle = new TestFeatureToggle();
            // Act
            var toggleValue = toggle.FeatureEnabled;

            // Assert
            toggleValue.ShouldBeTrue();
        }
        public async Task FeatureEnabled_ToggleExists_ToggleValueIsTrue()
        {
            // Arrange
            AutoCreateToggle <TestFeatureToggle>();
            await UpdateToggleDocument(new BooleanFeatureToggleDocument(nameof(TestFeatureToggle)) { Enabled = true });

            var toggle = new TestFeatureToggle();
            // Act
            var toggleValue = toggle.FeatureEnabled;

            // Assert
            toggleValue.ShouldBeTrue();
        }
        public void FeatureEnabled_FeatureToggleSetToInvalidValue_ThrowsToggleConfigurationError()
        {
            // Arrange
            SetToggleInConfig($"FeatureToggle.{nameof(TestFeatureToggle)}", "not a bool value");
            var toggle = new TestFeatureToggle();
            // Assert
            var error = Should.Throw <ToggleConfigurationError>(() =>
            {
                // Act
                var toggleValue = toggle.FeatureEnabled;
            });

            error.Message.ShouldContain("cannot be converted to a boolean as defined in config key");
        }
        public void FeatureEnabled_ToggleNameIsWithoutPrefixAndNotConfigured_ThrowsToggleConfigurationError()
        {
            // Arrange
            SetToggleInConfig(nameof(TestFeatureToggle), bool.TrueString);
            var toggle = new TestFeatureToggle();
            // Assert
            var error = Should.Throw <ToggleConfigurationError>(() =>
            {
                // Act
                var toggleValue = toggle.FeatureEnabled;
            });

            error.Message.ShouldBe("The key 'FeatureToggle.TestFeatureToggle' was not found in settings.xml");
        }