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); } }
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(); }
public void ToggleConfigurationCachedThrowsOnNullToggleProperty() { // Arrange var toggle = new ToggleConfiguration(); // Act Func <Task <CachedToggle> > action = () => Task.Run(() => Toggle.Cached(toggle)); // Assert action.ShouldThrow <ToggleCannotBeNullException>(); }
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(); }
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); }
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(); }
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(); }
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(); }
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(); }
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(); }
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(); }
public void ToggleConfigurationCachedReturnsNonNullCachedToggle() { // Arrange var toggle = new ToggleConfiguration { Toggle = typeof(Toggles.AlwaysTrueToggle) }; // Act var result = Toggle.Cached(toggle); // Assert result.Should().NotBeNull(); }
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(); }
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(); }
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(); }
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); }
// 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); }