@NonNull private static Config getStandardConfig(String metadata) { List<Rule> rules = new ArrayList<>(); Value value1 = new Value(14, 18, null, null, null, null, null, null); Value value2 = new Value(null, null, null, null, 1453196880000L, null, null, null); rules.add(new Rule(Toggle.DISABLED, metadata, value1)); rules.add(new Rule(Toggle.DISABLED, metadata, value2)); Feature featureVideo = new Feature("video", null, Toggle.ENABLED, featureMetadata, rules); Feature featureAudio = new Feature("audio", Toggle.ENABLED, null, featureMetadata, rules); Feature featureSpeech = new Feature("speech", null, Toggle.DISABLED, featureMetadata, rules); List<Feature> features = new ArrayList<>(); features.add(featureVideo); features.add(featureAudio); features.add(featureSpeech); return new Config("myapp", features); }
@Test public void processConfig_featureNotPresent_null_returnsEnabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); Value value = new Value(14, 18, null, null, null, null, null, null); rules.add(new Rule(Toggle.DISABLED, ruleMetadata, value)); Feature featureVideo = new Feature("video", null, null, featureMetadata, rules); Feature featureAudio = new Feature("audio", Toggle.ENABLED, null, featureMetadata, rules); Feature featureSpeech = new Feature("speech", null, Toggle.DISABLED, featureMetadata, rules); List<Feature> features = new ArrayList<>(); features.add(featureVideo); features.add(featureAudio); features.add(featureSpeech); Config config = new Config("myapp", features); // check the feature map assertValidConfig(config); String featureToBeSearched = "share"; String defaultStateInRequest = null; CheckRequest checkRequest = new CheckRequest(toggle, featureToBeSearched, null, defaultStateInRequest, false, null); CheckResponse checkResponse = toggle.processConfig(config, checkRequest); assertThat(checkResponse.featureName).isEqualTo(featureToBeSearched); assertThat(checkResponse.ruleMetadata).isEqualTo(null); assertThat(checkResponse.cached).isFalse(); assertThat(checkResponse.state).isEqualTo(Toggle.DEFAULT_STATE); }
@Test public void processConfig_featurePresent_apiLevel_matchDisabled_returnsDisabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); Value value = new Value(14, 18, null, null, null, null, null, null); rules.add(new Rule(Toggle.DISABLED, ruleMetadata, value)); Feature featureVideo = new Feature("video", null, Toggle.ENABLED, featureMetadata, rules); Feature featureAudio = new Feature("audio", Toggle.ENABLED, null, featureMetadata, rules); Feature featureSpeech = new Feature("speech", null, Toggle.DISABLED, featureMetadata, rules); List<Feature> features = new ArrayList<>(); features.add(featureVideo); features.add(featureAudio); features.add(featureSpeech); Config config = new Config("myapp", features); // check the feature map assertValidConfig(config); String featureToBeSearched = "video"; String defaultStateInRequest = Toggle.ENABLED; PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(16); CheckRequest checkRequest = new CheckRequest(toggle, featureToBeSearched, null, defaultStateInRequest, false, null); CheckResponse checkResponse = toggle.processConfig(config, checkRequest); assertThat(checkResponse.featureName).isEqualTo(featureToBeSearched); assertThat(checkResponse.ruleMetadata).isEqualTo(ruleMetadata); assertThat(checkResponse.cached).isTrue(); assertThat(checkResponse.state).isEqualTo(Toggle.DISABLED); }
@Test public void processConfig_featureNotPresent_defaultEnabled_returnsEnabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); Value value = new Value(14, 18, null, null, null, null, null, null); rules.add(new Rule(Toggle.DISABLED, ruleMetadata, value)); Feature featureVideo = new Feature("video", null, null, featureMetadata, rules); Feature featureAudio = new Feature("audio", Toggle.ENABLED, null, featureMetadata, rules); Feature featureSpeech = new Feature("speech", null, Toggle.DISABLED, featureMetadata, rules); List<Feature> features = new ArrayList<>(); features.add(featureVideo); features.add(featureAudio); features.add(featureSpeech); Config config = new Config("myapp", features); // check the feature map assertValidConfig(config); String featureToBeSearched = "share"; String defaultStateInRequest = Toggle.ENABLED; CheckRequest checkRequest = new CheckRequest(toggle, featureToBeSearched, null, defaultStateInRequest, false, null); CheckResponse checkResponse = toggle.processConfig(config, checkRequest); assertThat(checkResponse.featureName).isEqualTo(featureToBeSearched); assertThat(checkResponse.ruleMetadata).isEqualTo(null); assertThat(checkResponse.cached).isFalse(); assertThat(checkResponse.state).isEqualTo(defaultStateInRequest); }
@Test public void processConfig_featurePresent_butNoDefaultOrMatchInConfig_defaultInRequestDisabled_returnsDisabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); Value value = new Value(14, 18, null, null, null, null, null, null); rules.add(new Rule(Toggle.DISABLED, ruleMetadata, value)); Feature featureVideo = new Feature("video", null, null, featureMetadata, rules); Feature featureAudio = new Feature("audio", Toggle.ENABLED, null, featureMetadata, rules); Feature featureSpeech = new Feature("speech", null, Toggle.DISABLED, featureMetadata, rules); List<Feature> features = new ArrayList<>(); features.add(featureVideo); features.add(featureAudio); features.add(featureSpeech); Config config = new Config("myapp", features); // check the feature map assertValidConfig(config); String featureToBeSearched = "video"; String defaultStateInRequest = Toggle.DISABLED; PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(20); CheckRequest checkRequest = new CheckRequest(toggle, featureToBeSearched, null, defaultStateInRequest, false, null); CheckResponse checkResponse = toggle.processConfig(config, checkRequest); assertThat(checkResponse.featureName).isEqualTo(featureToBeSearched); assertThat(checkResponse.ruleMetadata).isEqualTo(null); assertThat(checkResponse.cached).isTrue(); assertThat(checkResponse.state).isEqualTo(defaultStateInRequest); }
@Test public void processConfig_featurePresent_defaultPresentMatchInConfigEnabled_defaultInRequestAbsent_returnsEnabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); Value value = new Value(14, 18, null, null, null, null, null, null); rules.add(new Rule(Toggle.DISABLED, ruleMetadata, value)); Feature featureVideo = new Feature("video", null, Toggle.ENABLED, featureMetadata, rules); Feature featureAudio = new Feature("audio", Toggle.ENABLED, null, featureMetadata, rules); Feature featureSpeech = new Feature("speech", null, Toggle.DISABLED, featureMetadata, rules); List<Feature> features = new ArrayList<>(); features.add(featureVideo); features.add(featureAudio); features.add(featureSpeech); Config config = new Config("myapp", features); // check the feature map assertValidConfig(config); String featureToBeSearched = "video"; String defaultStateInRequest = null; PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(20); CheckRequest checkRequest = new CheckRequest(toggle, featureToBeSearched, null, defaultStateInRequest, false, null); CheckResponse checkResponse = toggle.processConfig(config, checkRequest); assertThat(checkResponse.featureName).isEqualTo(featureToBeSearched); assertThat(checkResponse.ruleMetadata).isEqualTo(null); assertThat(checkResponse.cached).isTrue(); assertThat(checkResponse.state).isEqualTo(Toggle.ENABLED); }
@Test public void processConfig_featurePresent_apiLevel_matchEnabled_returnsEnabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); Value value = new Value(14, 18, null, null, null, null, null, null); rules.add(new Rule(Toggle.ENABLED, ruleMetadata, value)); Feature featureVideo = new Feature("video", null, Toggle.DISABLED, featureMetadata, rules); Feature featureAudio = new Feature("audio", Toggle.ENABLED, null, featureMetadata, rules); Feature featureSpeech = new Feature("speech", null, Toggle.DISABLED, featureMetadata, rules); List<Feature> features = new ArrayList<>(); features.add(featureVideo); features.add(featureAudio); features.add(featureSpeech); Config config = new Config("myapp", features); // check the feature map assertValidConfig(config); String featureToBeSearched = "video"; String defaultStateInRequest = Toggle.DISABLED; PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(16); CheckRequest checkRequest = new CheckRequest(toggle, featureToBeSearched, null, defaultStateInRequest, false, null); CheckResponse checkResponse = toggle.processConfig(config, checkRequest); assertThat(checkResponse.featureName).isEqualTo(featureToBeSearched); assertThat(checkResponse.ruleMetadata).isEqualTo(ruleMetadata); assertThat(checkResponse.cached).isTrue(); assertThat(checkResponse.state).isEqualTo(Toggle.ENABLED); }
@Test public void processConfig_featurePresent_defaultPresentInConfigDisabled_defaultInRequestEnabled_returnsEnabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); Value value = new Value(14, 18, null, null, null, null, null, null); rules.add(new Rule(Toggle.DISABLED, ruleMetadata, value)); Feature featureVideo = new Feature("video", null, Toggle.DISABLED, featureMetadata, rules); Feature featureAudio = new Feature("audio", Toggle.ENABLED, null, featureMetadata, rules); Feature featureSpeech = new Feature("speech", null, Toggle.DISABLED, featureMetadata, rules); List<Feature> features = new ArrayList<>(); features.add(featureVideo); features.add(featureAudio); features.add(featureSpeech); Config config = new Config("myapp", features); // check the feature map assertValidConfig(config); String featureToBeSearched = "video"; String defaultStateInRequest = Toggle.ENABLED; PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(20); CheckRequest checkRequest = new CheckRequest(toggle, featureToBeSearched, null, defaultStateInRequest, false, null); CheckResponse checkResponse = toggle.processConfig(config, checkRequest); assertThat(checkResponse.featureName).isEqualTo(featureToBeSearched); assertThat(checkResponse.ruleMetadata).isEqualTo(null); assertThat(checkResponse.cached).isTrue(); assertThat(checkResponse.state).isEqualTo(defaultStateInRequest); }
/** * Process config tests */ // set 1: feature not present @Test public void processConfig_featureNotPresent_defaultDisabled_returnsDisabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); Value value = new Value(14, 18, null, null, null, null, null, null); rules.add(new Rule(Toggle.DISABLED, ruleMetadata, value)); Feature featureVideo = new Feature("video", null, null, featureMetadata, rules); Feature featureAudio = new Feature("audio", Toggle.ENABLED, null, featureMetadata, rules); Feature featureSpeech = new Feature("speech", null, Toggle.DISABLED, featureMetadata, rules); List<Feature> features = new ArrayList<>(); features.add(featureVideo); features.add(featureAudio); features.add(featureSpeech); Config config = new Config("myapp", features); // check the feature map assertValidConfig(config); String featureToBeSearched = "share"; String defaultStateInRequest = Toggle.DISABLED; CheckRequest checkRequest = new CheckRequest(toggle, featureToBeSearched, null, defaultStateInRequest, false, null); CheckResponse checkResponse = toggle.processConfig(config, checkRequest); assertThat(checkResponse.featureName).isEqualTo(featureToBeSearched); assertThat(checkResponse.ruleMetadata).isEqualTo(null); assertThat(checkResponse.cached).isFalse(); assertThat(checkResponse.state).isEqualTo(defaultStateInRequest); }
@Test public void processConfig_featurePresent_butNoDefaultOrMatchInConfig_defaultInRequestEnabled_returnsEnabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); Value value = new Value(14, 18, null, null, null, null, null, null); rules.add(new Rule(Toggle.DISABLED, ruleMetadata, value)); Feature featureVideo = new Feature("video", null, null, featureMetadata, rules); Feature featureAudio = new Feature("audio", Toggle.ENABLED, null, featureMetadata, rules); Feature featureSpeech = new Feature("speech", null, Toggle.DISABLED, featureMetadata, rules); List<Feature> features = new ArrayList<>(); features.add(featureVideo); features.add(featureAudio); features.add(featureSpeech); Config config = new Config("myapp", features); // check the feature map assertValidConfig(config); String featureToBeSearched = "video"; String defaultStateInRequest = Toggle.ENABLED; PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(20); CheckRequest checkRequest = new CheckRequest(toggle, featureToBeSearched, null, defaultStateInRequest, false, null); CheckResponse checkResponse = toggle.processConfig(config, checkRequest); assertThat(checkResponse.featureName).isEqualTo(featureToBeSearched); assertThat(checkResponse.ruleMetadata).isEqualTo(null); assertThat(checkResponse.cached).isTrue(); assertThat(checkResponse.state).isEqualTo(defaultStateInRequest); }
@Test public void processConfig_featurePresent_butNoDefaultOrMatchInConfig_defaultInRequestAbsent_returnsEnabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); Value value = new Value(14, 18, null, null, null, null, null, null); rules.add(new Rule(Toggle.DISABLED, ruleMetadata, value)); Feature featureVideo = new Feature("video", null, null, featureMetadata, rules); Feature featureAudio = new Feature("audio", Toggle.ENABLED, null, featureMetadata, rules); Feature featureSpeech = new Feature("speech", null, Toggle.DISABLED, featureMetadata, rules); List<Feature> features = new ArrayList<>(); features.add(featureVideo); features.add(featureAudio); features.add(featureSpeech); Config config = new Config("myapp", features); // check the feature map assertValidConfig(config); String featureToBeSearched = "video"; String defaultStateInRequest = null; PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(20); CheckRequest checkRequest = new CheckRequest(toggle, featureToBeSearched, null, defaultStateInRequest, false, null); CheckResponse checkResponse = toggle.processConfig(config, checkRequest); assertThat(checkResponse.featureName).isEqualTo(featureToBeSearched); assertThat(checkResponse.ruleMetadata).isEqualTo(null); assertThat(checkResponse.cached).isTrue(); assertThat(checkResponse.state).isEqualTo(Toggle.DEFAULT_STATE); }
@Test public void processConfig_featurePresent_defaultPresentMatchInConfigEnabled_defaultInRequestDisabled_returnsDisabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); Value value = new Value(14, 18, null, null, null, null, null, null); rules.add(new Rule(Toggle.DISABLED, ruleMetadata, value)); Feature featureVideo = new Feature("video", null, Toggle.ENABLED, featureMetadata, rules); Feature featureAudio = new Feature("audio", Toggle.ENABLED, null, featureMetadata, rules); Feature featureSpeech = new Feature("speech", null, Toggle.DISABLED, featureMetadata, rules); List<Feature> features = new ArrayList<>(); features.add(featureVideo); features.add(featureAudio); features.add(featureSpeech); Config config = new Config("myapp", features); // check the feature map assertValidConfig(config); String featureToBeSearched = "video"; String defaultStateInRequest = Toggle.DISABLED; PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(20); CheckRequest checkRequest = new CheckRequest(toggle, featureToBeSearched, null, defaultStateInRequest, false, null); CheckResponse checkResponse = toggle.processConfig(config, checkRequest); assertThat(checkResponse.featureName).isEqualTo(featureToBeSearched); assertThat(checkResponse.ruleMetadata).isEqualTo(null); assertThat(checkResponse.cached).isTrue(); assertThat(checkResponse.state).isEqualTo(defaultStateInRequest); }
@Test public void processConfig_featurePresent_defaultPresentMatchInConfigDisabled_defaultInRequestAbsent_returnsDisabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); Value value = new Value(14, 18, null, null, null, null, null, null); rules.add(new Rule(Toggle.DISABLED, ruleMetadata, value)); Feature featureVideo = new Feature("video", null, Toggle.DISABLED, featureMetadata, rules); Feature featureAudio = new Feature("audio", Toggle.ENABLED, null, featureMetadata, rules); Feature featureSpeech = new Feature("speech", null, Toggle.DISABLED, featureMetadata, rules); List<Feature> features = new ArrayList<>(); features.add(featureVideo); features.add(featureAudio); features.add(featureSpeech); Config config = new Config("myapp", features); // check the feature map assertValidConfig(config); String featureToBeSearched = "video"; String defaultStateInRequest = null; PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(20); CheckRequest checkRequest = new CheckRequest(toggle, featureToBeSearched, null, defaultStateInRequest, false, null); CheckResponse checkResponse = toggle.processConfig(config, checkRequest); assertThat(checkResponse.featureName).isEqualTo(featureToBeSearched); assertThat(checkResponse.ruleMetadata).isEqualTo(null); assertThat(checkResponse.cached).isTrue(); assertThat(checkResponse.state).isEqualTo(Toggle.DISABLED); }
@Test public void processConfig_featurePresent_apiLevel_stateEnabled_returnsEnabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); Value value = new Value(14, 18, null, null, null, null, null, null); rules.add(new Rule(Toggle.DISABLED, ruleMetadata, value)); Feature featureVideo = new Feature("video", Toggle.ENABLED, null, featureMetadata, null); Feature featureAudio = new Feature("audio", Toggle.ENABLED, null, featureMetadata, rules); Feature featureSpeech = new Feature("speech", null, Toggle.DISABLED, featureMetadata, rules); List<Feature> features = new ArrayList<>(); features.add(featureVideo); features.add(featureAudio); features.add(featureSpeech); Config config = new Config("myapp", features); // check the feature map assertValidConfig(config); String featureToBeSearched = "video"; String defaultStateInRequest = Toggle.DISABLED; PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(16); CheckRequest checkRequest = new CheckRequest(toggle, featureToBeSearched, null, defaultStateInRequest, false, null); CheckResponse checkResponse = toggle.processConfig(config, checkRequest); assertThat(checkResponse.featureName).isEqualTo(featureToBeSearched); assertThat(checkResponse.ruleMetadata).isNull(); assertThat(checkResponse.cached).isTrue(); assertThat(checkResponse.state).isEqualTo(Toggle.ENABLED); }