diff --git a/src/main/java/io/getunleash/FakeUnleash.java b/src/main/java/io/getunleash/FakeUnleash.java index 11b5bf42..0e88d135 100644 --- a/src/main/java/io/getunleash/FakeUnleash.java +++ b/src/main/java/io/getunleash/FakeUnleash.java @@ -38,7 +38,8 @@ public boolean isEnabled( @Override public boolean isEnabled( String toggleName, BiPredicate fallbackAction) { - if (!features.containsKey(toggleName)) { + if ((!enableAll && !disableAll || excludedFeatures.containsKey(toggleName)) + && !features.containsKey(toggleName)) { return fallbackAction.test(toggleName, UnleashContext.builder().build()); } return isEnabled(toggleName); diff --git a/src/test/java/io/getunleash/FakeUnleashTest.java b/src/test/java/io/getunleash/FakeUnleashTest.java index a4c00977..daaaf09c 100644 --- a/src/test/java/io/getunleash/FakeUnleashTest.java +++ b/src/test/java/io/getunleash/FakeUnleashTest.java @@ -179,4 +179,32 @@ public void should_countVariant_and_not_throw_an_error() { FakeUnleash fakeUnleash = new FakeUnleash(); fakeUnleash.more().countVariant("toggleName", "variantName"); } + + @Test + public void + if_all_is_enabled_should_return_true_even_if_feature_does_not_exist_and_fallback_returns_false() { + FakeUnleash fakeUnleash = new FakeUnleash(); + fakeUnleash.enableAll(); + assertThat(fakeUnleash.isEnabled("my.non.existing.feature", (name, context) -> false)) + .isTrue(); + } + + @Test + public void + if_all_is_disabled_should_return_false_even_if_feature_does_not_exist_and_fallback_returns_true() { + FakeUnleash fakeUnleash = new FakeUnleash(); + fakeUnleash.disableAll(); + assertThat(fakeUnleash.isEnabled("my.non.existing.feature", (name, context) -> true)) + .isFalse(); + } + + @Test + public void all_enabled_and_exclusion_toggle_returns_expected_result() { + FakeUnleash fakeUnleash = new FakeUnleash(); + fakeUnleash.enableAllExcept("my.feature.that.should.be.disabled"); + assertThat( + fakeUnleash.isEnabled( + "my.feature.that.should.be.disabled", (name, context) -> false)) + .isFalse(); + } }