@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 getStatePoweredResponseDecision_enabled_returnsEnabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); getApiValue(rules); Feature feature = new Feature("video", Toggle.ENABLED, null, featureMetadata, rules); ResponseDecisionMeta responseDecisionMeta = toggle.getStatePoweredResponseDecision(feature); assertThat(responseDecisionMeta.state).isEqualTo(Toggle.ENABLED); }
@Test public void getStatePoweredResponseDecision_null_returnsUndecided() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); getApiValue(rules); Feature feature = new Feature("video", null, null, featureMetadata, rules); ResponseDecisionMeta responseDecisionMeta = toggle.getStatePoweredResponseDecision(feature); assertThat(responseDecisionMeta.state).isEqualTo(Toggle.DEFAULT_STATE); }
@Test public void getStatePoweredResponseDecision_disabled_returnsDisabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); getApiValue(rules); Feature feature = new Feature("video", Toggle.DISABLED, null, featureMetadata, rules); ResponseDecisionMeta responseDecisionMeta = toggle.getStatePoweredResponseDecision(feature); assertThat(responseDecisionMeta.state).isEqualTo(Toggle.DISABLED); }
@Test public void handleFeature_stateNull_ruleMatched_enabledForRightAPILevel_returnsEnabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); getApiValue(rules); Feature feature = new Feature("video", null, Toggle.DISABLED, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, null, false, null); PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(16); ResponseDecisionMeta responseDecisionMeta = toggle.handleFeature(feature, checkRequest); // assert the state and ruleMetadata assertThat(responseDecisionMeta.state).isEqualTo(Toggle.ENABLED); assertThat(responseDecisionMeta.ruleMetadata).isEqualTo(ruleMetadata); }
@Test public void getDefaultResponseDecision_noFeatureCheckRequestDefault_disabled_returnsDisabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); getApiValue(rules); Feature feature = new Feature("video", null, Toggle.DISABLED, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, null, false, null); ResponseDecisionMeta responseDecisionMeta = toggle.getDefaultResponseDecision(feature, checkRequest); assertThat(responseDecisionMeta.state).isEqualTo(Toggle.DISABLED); }
@Test public void getDefaultResponseDecision_FeatureCheckRequestDefault_enabled_returnsEnabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); getApiValue(rules); Feature feature = new Feature("video", null, Toggle.DISABLED, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, Toggle.ENABLED, false, null); ResponseDecisionMeta responseDecisionMeta = toggle.getDefaultResponseDecision(feature, checkRequest); assertThat(responseDecisionMeta.state).isEqualTo(Toggle.ENABLED); }
@Test public void getDefaultResponseDecision_noFeatureCheckRequestDefault_enabled_returnsEnabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); getApiValue(rules); Feature feature = new Feature("video", null, Toggle.ENABLED, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, null, false, null); ResponseDecisionMeta responseDecisionMeta = toggle.getDefaultResponseDecision(feature, checkRequest); assertThat(responseDecisionMeta.state).isEqualTo(Toggle.ENABLED); }
@Test public void getDefaultResponseDecision_FeatureCheckRequestDefault_disabled_returnsDisabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); getApiValue(rules); Feature feature = new Feature("video", null, Toggle.ENABLED, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, Toggle.DISABLED, false, null); ResponseDecisionMeta responseDecisionMeta = toggle.getDefaultResponseDecision(feature, checkRequest); assertThat(responseDecisionMeta.state).isEqualTo(Toggle.DISABLED); }
@Test public void getDefaultResponseDecision_noFeatureCheckRequestDefault_null_returnsEnabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); getApiValue(rules); Feature feature = new Feature("video", null, null, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, null, false, null); ResponseDecisionMeta responseDecisionMeta = toggle.getDefaultResponseDecision(feature, checkRequest); assertThat(responseDecisionMeta.state).isEqualTo(Toggle.DEFAULT_STATE); }
@Test public void handleFeature_stateNotNull_disabled_returnsDisabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); getApiValue(rules); Feature feature = new Feature("video", Toggle.DISABLED, null, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, null, false, null); ResponseDecisionMeta responseDecisionMeta = toggle.handleFeature(feature, checkRequest); // assert the state assertThat(responseDecisionMeta.state).isEqualTo(Toggle.DISABLED); }
@Test public void handleFeature_stateNull_ruleMatched_disabledForRightAPILevel_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 feature = new Feature("video", null, Toggle.ENABLED, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, null, false, null); PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(16); ResponseDecisionMeta responseDecisionMeta = toggle.handleFeature(feature, checkRequest); // assert the state and ruleMetadata assertThat(responseDecisionMeta.state).isEqualTo(Toggle.DISABLED); assertThat(responseDecisionMeta.ruleMetadata).isEqualTo(ruleMetadata); }
@Test public void handleFeature_stateNull_ruleNotMatched_defaultNull_featureCheckRequestDefault_enabled_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 feature = new Feature("video", null, null, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, Toggle.ENABLED, false, null); PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(20); ResponseDecisionMeta responseDecisionMeta = toggle.handleFeature(feature, checkRequest); // assert the state and ruleMetadata assertThat(responseDecisionMeta.state).isEqualTo(Toggle.ENABLED); assertThat(responseDecisionMeta.ruleMetadata).isNull(); }
@Test public void handleFeature_stateNull_ruleNotMatched_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.ENABLED, ruleMetadata, value)); Feature feature = new Feature("video", null, Toggle.DISABLED, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, null, false, null); PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(20); ResponseDecisionMeta responseDecisionMeta = toggle.handleFeature(feature, checkRequest); // assert the state and ruleMetadata assertThat(responseDecisionMeta.state).isEqualTo(Toggle.DISABLED); assertThat(responseDecisionMeta.ruleMetadata).isNull(); }
@Test public void handleFeature_stateNull_ruleNotMatched_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 feature = new Feature("video", null, Toggle.ENABLED, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, null, false, null); PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(20); ResponseDecisionMeta responseDecisionMeta = toggle.handleFeature(feature, checkRequest); // assert the state and ruleMetadata assertThat(responseDecisionMeta.state).isEqualTo(Toggle.ENABLED); assertThat(responseDecisionMeta.ruleMetadata).isNull(); }
@Test public void handleFeature_stateNull_ruleNotMatched_defaultNull_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 feature = new Feature("video", null, null, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, null, false, null); PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(20); ResponseDecisionMeta responseDecisionMeta = toggle.handleFeature(feature, checkRequest); // assert the state and ruleMetadata assertThat(responseDecisionMeta.state).isEqualTo(Toggle.DEFAULT_STATE); assertThat(responseDecisionMeta.ruleMetadata).isNull(); }
@Test public void handleFeature_stateNull_ruleNotMatched_defaultNull_featureCheckRequestDefault_disabled_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 feature = new Feature("video", null, null, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, Toggle.DISABLED, false, null); PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(20); ResponseDecisionMeta responseDecisionMeta = toggle.handleFeature(feature, checkRequest); // assert the state and ruleMetadata assertThat(responseDecisionMeta.state).isEqualTo(Toggle.DISABLED); assertThat(responseDecisionMeta.ruleMetadata).isNull(); }
@Test(expected = IllegalStateException.class) public void handleFeature_stateNull_ruleMatched_nullForRightAPILevel_throwsException() { 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(null, ruleMetadata, value)); Feature feature = new Feature("video", null, Toggle.ENABLED, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, null, false, null); PowerMockito.spy(RuleMatcher.class); Mockito.when(RuleMatcher.getBuildVersion()).thenReturn(16); toggle.handleFeature(feature, checkRequest); }
/** * Handle Feature tests, a state to : couple of things can happen * - State variable is found * - No state variable, rule matched and the correct response (enabled/disabled) is propagated properly * - No state variable, rule matched but the state in the rule is null, exception is thrown * - No rule is matched, but there is a default value * - No rule is matched, and there is no default value and there is no featureCheckRequest default value * - No rule is matched, and there is no default value and there is a featureCheckRequest default value */ @Test public void handleFeature_stateNotNull_enabled_returnsEnabled() { Toggle toggle = new Toggle(context); List<Rule> rules = new ArrayList<>(); getApiValue(rules); Feature feature = new Feature("video", Toggle.ENABLED, null, featureMetadata, rules); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, null, false, null); ResponseDecisionMeta responseDecisionMeta = toggle.handleFeature(feature, checkRequest); // assert the state assertThat(responseDecisionMeta.state).isEqualTo(Toggle.ENABLED); }
@Test(expected = IllegalStateException.class) public void handleFeature_stateNull_ruleNull_defaultNull_returnsEnabled() { Toggle toggle = new Toggle(context); Feature feature = new Feature("video", null, null, featureMetadata, null); CheckRequest checkRequest = new CheckRequest(toggle, "video", null, null, false, null); toggle.handleFeature(feature, checkRequest); }