static void ConfigureToggle(ToggleConfiguration configuration, VisualElement projectSettingsHeaderVisualElement)
        {
            var serviceToggle = projectSettingsHeaderVisualElement.Q <Toggle>(UxmlNodeName.serviceToggle);

            if (serviceToggle != null)
            {
                if (configuration == null)
                {
                    serviceToggle.visible = false;
                }
                else
                {
                    serviceToggle.visible = configuration.Visible;
                    serviceToggle.SetEnabled(configuration.Enabled);
                    serviceToggle.SetValueWithoutNotify(configuration.Value);
                    if (!string.IsNullOrWhiteSpace(configuration.Tooltip))
                    {
                        serviceToggle.tooltip = configuration.Tooltip;
                        var toggleContainer = projectSettingsHeaderVisualElement.Q <VisualElement>(UxmlNodeName.toggleContainer);
                        if (toggleContainer != null)
                        {
                            toggleContainer.tooltip = configuration.Tooltip;
                        }
                    }
                    if (configuration.ValueChangedAction != null)
                    {
                        serviceToggle.RegisterValueChangedCallback(evt => {
                            configuration.ValueChangedAction.Invoke(evt);
                        });
                    }
                }
                SliderToggleUiHelper.ConvertToggleToSliderToggle(serviceToggle);
            }
        }
Beispiel #2
0
        public void ShouldDefaultToFalse()
        {
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(new string[0]), new DefaultSpecificationMappings())).Create();

            toggleChecker.IsEnabled("sometoggle")
            .Should().Be.False();
        }
        public void ShouldFindUntrimmedSpecification()
        {
            var content       = new[] { "someflag=         true		  "};
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(content), new DefaultSpecificationMappings())).Create();

            toggleChecker.IsEnabled("someflag")
            .Should().Be.True();
        }
        public void ShouldBeAbleToChangeDefaultSpecification()
        {
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(new string[0]), new DefaultSpecificationMappings()))
                                .SetDefaultSpecification(new BoolSpecification(true))
                                .Create();

            toggleChecker.IsEnabled("sometoggle")
            .Should().Be.True();
        }
Beispiel #5
0
        public void ToggleConfigurationCachedThrowsOnNullToggleProperty()
        {
            // Arrange
            var toggle = new ToggleConfiguration();

            // Act
            Func <Task <CachedToggle> > action = () => Task.Run(() => Toggle.Cached(toggle));

            // Assert
            action.ShouldThrow <ToggleCannotBeNullException>();
        }
Beispiel #6
0
        public void ShouldAllowCommentingInsideARow()
        {
            var content = new[]
            {
                "someflag=true #this should be possible"
            };
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(content), new DefaultSpecificationMappings())).Create();

            toggleChecker.IsEnabled("someflag")
            .Should().Be.True();
        }
        public void ShouldBeEnabled()
        {
            var content = new[] { "someflag=true" };

            tempPath = Path.GetTempFileName();
            File.WriteAllLines(tempPath, content);
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReader(tempPath), new DefaultSpecificationMappings())).Create();

            toggleChecker.IsEnabled("someflag")
            .Should().Be.True();
        }
        public void AllMustBeEnabledByDefault()
        {
            var content = new[]
            {
                "someflag=false",
                "someflag=true"
            };
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(content), new DefaultSpecificationMappings())).Create();

            toggleChecker.IsEnabled("someflag")
            .Should().Be.False();
        }
Beispiel #9
0
        public void ShouldBeAbleToWriteRemarks()
        {
            var content = new[]
            {
                "#this should not throw",
                "someflag=true",
                " # and neither should this"
            };
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(content), new DefaultSpecificationMappings())).Create();

            toggleChecker.IsEnabled("someflag")
            .Should().Be.True();
        }
        internal static VisualElement GenerateCommonHeader(string title, string description,
                                                           ToggleConfiguration toggleConfiguration = null, Action dashboardButtonClick = null)
        {
            var projectSettingsHeaderTreeAsset     = AssetDatabase.LoadAssetAtPath <VisualTreeAsset>(UxmlPath.servicesProjectSettingsCommonHeader);
            var projectSettingsHeaderVisualElement = projectSettingsHeaderTreeAsset.CloneTree().contentContainer;

            ConfigureTitle(title, projectSettingsHeaderVisualElement);
            ConfigureDescription(description, projectSettingsHeaderVisualElement);
            ConfigureDashboardButton(dashboardButtonClick, projectSettingsHeaderVisualElement);
            ConfigureToggle(toggleConfiguration, projectSettingsHeaderVisualElement);

            return(projectSettingsHeaderVisualElement);
        }
Beispiel #11
0
        public void ShouldBeDisabled()
        {
            var content = new[]
            {
                "someflag=user",
                "someflag.user.ids=nope"
            };
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(content), new DefaultSpecificationMappings()))
                                .SetUserProvider(new UserProviderStub("10"))
                                .Create();

            toggleChecker.IsEnabled("someflag")
            .Should().Be.False();
        }
Beispiel #12
0
        public void ShouldAllowBlankLines()
        {
            var content = new[]
            {
                "				 ",
                "someflag=true",
                "",
                string.Empty
            };
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(content), new DefaultSpecificationMappings())).Create();

            toggleChecker.IsEnabled("someflag")
            .Should().Be.True();
        }
Beispiel #13
0
        public void ShouldAlwaysBeDisabledIf0Percent()
        {
            var content = new[]
            {
                "someflag=random",
                "someflag.random.percent=0"
            };
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(content), new DefaultSpecificationMappings()))
                                .SetUserProvider(new UserProviderStub("something"))
                                .Create();

            toggleChecker.IsEnabled("someflag")
            .Should().Be.False();
        }
        public void AlwaysFalseToggleSetsEvaluationPropertyOfToggle()
        {
            // Arrange
            var sut = new ToggleConfiguration
            {
                Toggle = typeof(AlwaysFalseToggle)
            };

            // Act
            sut.AlwaysFalse();

            // Assert
            Toggle.GetToggle(typeof(AlwaysFalseToggle)).Evaluation.Should().NotBeNull();
        }
Beispiel #15
0
        public void ShouldTreatIdsAsOneIfCurrentUserContainsComma_Enabled()
        {
            var content = new[]
            {
                "someflag=user",
                "someflag.user.ids=  1,2,3,4  "
            };
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(content), new DefaultSpecificationMappings()))
                                .SetUserProvider(new UserProviderStub("1,2,3,4"))
                                .Create();

            toggleChecker.IsEnabled("someflag")
            .Should().Be.True();
        }
Beispiel #16
0
        public void ShouldBeEnabledIfExistsInParameterListWithSpaces()
        {
            var content = new[]
            {
                "someflag=user",
                "someflag.user.ids =   1, 2	,  3 ,4  "
            };
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(content), new DefaultSpecificationMappings()))
                                .SetUserProvider(new UserProviderStub("2"))
                                .Create();

            toggleChecker.IsEnabled("someflag")
            .Should().Be.True();
        }
Beispiel #17
0
        public void ShouldNotBeCaseSensitiveWhenCurrentUserContainsComma()
        {
            var content = new[]
            {
                "someflag=user",
                "someflag.user.ids=roger,"
            };
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(content), new DefaultSpecificationMappings()))
                                .SetUserProvider(new UserProviderStub("ROGER,"))
                                .Create();

            toggleChecker.IsEnabled("someflag")
            .Should().Be.True();
        }
Beispiel #18
0
        public void ToggleConfigurationCachedReturnsNonNullCachedToggle()
        {
            // Arrange
            var toggle = new ToggleConfiguration
            {
                Toggle = typeof(Toggles.AlwaysTrueToggle)
            };

            // Act
            var result = Toggle.Cached(toggle);

            // Assert
            result.Should().NotBeNull();
        }
Beispiel #19
0
        public void ToggleConfigurationCachedReturnsCachedToggleWithTogglePropertySet()
        {
            // Arrange
            var toggle = new ToggleConfiguration
            {
                Toggle = typeof(Toggles.AlwaysTrueToggle)
            };

            // Act
            var result = Toggle.Cached(toggle);

            // Assert
            result.Toggle.ShouldBeEquivalentTo(toggle.Toggle);
        }
        public void ShouldBeAbleToRunSingleParameterSpecificationUsingOneLine()
        {
            var content = new[]
            {
                "someflag.ParameterSpecification." + SpecificationWithParameter.ParameterName + "=true"
            };
            var mappings = new DefaultSpecificationMappings();

            mappings.AddMapping("parameterspecification", new SpecificationWithParameter());
            var fileProvider  = new FileParser(new FileReaderStub(content), mappings);
            var toggleChecker = new ToggleConfiguration(fileProvider).Create();

            toggleChecker.IsEnabled("someflag")
            .Should().Be.True();
        }
        public void ConfiguredReturnsConfigurableToggleWithTogglePropertySet()
        {
            // Arrange
            var toggleType = typeof(ConfigurationFileToggle);
            var sut        = new ToggleConfiguration
            {
                Toggle = toggleType
            };

            // Act
            var result = sut.Configured();

            // Assert
            result.Toggle.Should().Be(toggleType);
        }
        public void AlwaysTrueSetsEvaluationThatReturnsTrue()
        {
            // Arrange
            var toggleType = typeof(AlwaysTrueToggle);
            var sut        = new ToggleConfiguration
            {
                Toggle = toggleType
            };

            // Act
            sut.AlwaysTrue();

            // Assert
            Toggle.GetToggle(toggleType).Evaluation().Should().BeTrue();
        }
        public void AlwaysTrueSetsEvaluationPropertyOfToggle()
        {
            // Arrange
            var toggleType = typeof(AlwaysTrueToggle);
            var sut        = new ToggleConfiguration
            {
                Toggle = toggleType
            };

            // Act
            sut.AlwaysTrue();

            // Assert
            Toggle.GetToggle(toggleType).Evaluation.Should().NotBeNull();
        }
Beispiel #24
0
        public void ShouldReturnSameValueForOneSpecificUser()
        {
            var content = new[]
            {
                "someflag=random",
                "someflag.random.percent=50"
            };
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(content), new DefaultSpecificationMappings()))
                                .SetUserProvider(new UserProviderStub("something"))
                                .Create();

            var firstResult = toggleChecker.IsEnabled("someflag");

            toggleChecker.IsEnabled("someflag").Should().Be.EqualTo(firstResult);
            toggleChecker.IsEnabled("someflag").Should().Be.EqualTo(firstResult);
            toggleChecker.IsEnabled("someflag").Should().Be.EqualTo(firstResult);
            toggleChecker.IsEnabled("someflag").Should().Be.EqualTo(firstResult);
        }
        public void ShouldBeDisabled()
        {
            var content = new[]
            {
                "someflag=ParametersSpecification",
                "someflag.ParametersSpecification." + SpecificationWithMultipleParameters.ParameterName1 + "=true",
                "someflag.ParametersSpecification." + SpecificationWithMultipleParameters.ParameterName2 + "=false",
                "someflag.ParametersSpecification." + SpecificationWithMultipleParameters.ParameterName3 + "=true"
            };
            var mappings = new DefaultSpecificationMappings();

            mappings.AddMapping("parametersSpecification", new SpecificationWithMultipleParameters());
            var fileProvider  = new FileParser(new FileReaderStub(content), mappings);
            var toggleChecker = new ToggleConfiguration(fileProvider).Create();

            toggleChecker.IsEnabled("someflag")
            .Should().Be.False();
        }
Beispiel #26
0
        public void ShouldHandleMiss()
        {
            const string wordToMatch = "the toggle";

            var content = new[]
            {
                "sometoggle=myRegex",
                "sometoggle.myRegex.pattern=" + wordToMatch
            };
            var mappings = new DefaultSpecificationMappings();

            mappings.AddMapping("myRegex", new RegExSpecification(new Regex("^somethingelse$")));

            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(content), mappings))
                                .Create();

            toggleChecker.IsEnabled("sometoggle")
            .Should().Be.False();
        }
Beispiel #27
0
        public void ShouldRandomize()
        {
            var content = new[]
            {
                "someflag=random",
                "someflag.random.percent=50"
            };
            var toggleChecker = new ToggleConfiguration(new FileParser(new FileReaderStub(content), new DefaultSpecificationMappings()))
                                .SetUserProvider(new UserProviderRandom())
                                .Create();

            const int numberOfQueries = 10000;
            var       numberOfEnabled = 0;

            for (var x = 0; x < numberOfQueries; x++)
            {
                if (toggleChecker.IsEnabled("someflag"))
                {
                    numberOfEnabled++;
                }
            }

            numberOfEnabled.Should().Be.IncludedIn(3000, 7000);
        }
Beispiel #28
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();

            ToggleConfiguration.ConfigureServices(services, Configuration);
        }