Skip to content

Commit

Permalink
chorus: using more semantic java interface (#177)
Browse files Browse the repository at this point in the history
Closes #176
  • Loading branch information
jeffque committed Nov 3, 2022
1 parent 8525a8f commit 3e4b525
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 25 deletions.
10 changes: 5 additions & 5 deletions src/main/java/io/getunleash/DefaultUnleash.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import io.getunleash.util.UnleashConfig;
import io.getunleash.variant.VariantUtil;
import java.util.*;
import java.util.function.BiFunction;
import java.util.function.BiPredicate;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -99,15 +99,15 @@ public boolean isEnabled(
@Override
public boolean isEnabled(
final String toggleName,
final BiFunction<String, UnleashContext, Boolean> fallbackAction) {
final BiPredicate<String, UnleashContext> fallbackAction) {
return isEnabled(toggleName, contextProvider.getContext(), fallbackAction);
}

@Override
public boolean isEnabled(
String toggleName,
UnleashContext context,
BiFunction<String, UnleashContext, Boolean> fallbackAction) {
BiPredicate<String, UnleashContext> fallbackAction) {
boolean enabled = checkEnabled(toggleName, context, fallbackAction);
count(toggleName, enabled);
eventDispatcher.dispatch(new ToggleEvaluated(toggleName, enabled));
Expand All @@ -117,14 +117,14 @@ public boolean isEnabled(
private boolean checkEnabled(
String toggleName,
UnleashContext context,
BiFunction<String, UnleashContext, Boolean> fallbackAction) {
BiPredicate<String, UnleashContext> fallbackAction) {
checkIfToggleMatchesNamePrefix(toggleName);
FeatureToggle featureToggle = featureRepository.getToggle(toggleName);
boolean enabled;
UnleashContext enhancedContext = context.applyStaticFields(config);

if (featureToggle == null) {
enabled = fallbackAction.apply(toggleName, enhancedContext);
enabled = fallbackAction.test(toggleName, enhancedContext);
} else if (!featureToggle.isEnabled()) {
enabled = false;
} else if (featureToggle.getStrategies().size() == 0) {
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/io/getunleash/FakeUnleash.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import io.getunleash.lang.Nullable;
import java.util.*;
import java.util.function.BiFunction;
import java.util.function.BiPredicate;
import java.util.stream.Collectors;

public class FakeUnleash implements Unleash {
Expand Down Expand Up @@ -35,15 +35,15 @@ public boolean isEnabled(String toggleName, boolean defaultSetting) {
public boolean isEnabled(
String toggleName,
UnleashContext context,
BiFunction<String, UnleashContext, Boolean> fallbackAction) {
BiPredicate<String, UnleashContext> fallbackAction) {
return isEnabled(toggleName, fallbackAction);
}

@Override
public boolean isEnabled(
String toggleName, BiFunction<String, UnleashContext, Boolean> fallbackAction) {
String toggleName, BiPredicate<String, UnleashContext> fallbackAction) {
if (!features.containsKey(toggleName)) {
return fallbackAction.apply(toggleName, UnleashContext.builder().build());
return fallbackAction.test(toggleName, UnleashContext.builder().build());
}
return isEnabled(toggleName);
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/io/getunleash/Unleash.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.getunleash;

import java.util.List;
import java.util.function.BiFunction;
import java.util.function.BiPredicate;

public interface Unleash {
boolean isEnabled(String toggleName);
Expand All @@ -17,14 +17,14 @@ default boolean isEnabled(String toggleName, UnleashContext context, boolean def
}

default boolean isEnabled(
String toggleName, BiFunction<String, UnleashContext, Boolean> fallbackAction) {
String toggleName, BiPredicate<String, UnleashContext> fallbackAction) {
return isEnabled(toggleName, false);
}

default boolean isEnabled(
String toggleName,
UnleashContext context,
BiFunction<String, UnleashContext, Boolean> fallbackAction) {
BiPredicate<String, UnleashContext> fallbackAction) {
return isEnabled(toggleName, context, false);
}

Expand Down
26 changes: 13 additions & 13 deletions src/test/java/io/getunleash/UnleashTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import io.getunleash.variant.Payload;
import io.getunleash.variant.VariantDefinition;
import java.util.*;
import java.util.function.BiFunction;
import java.util.function.BiPredicate;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -79,33 +79,33 @@ public void unknown_feature_should_use_default_setting() {
@Test
public void fallback_function_should_be_invoked_and_return_true() {
when(toggleRepository.getToggle("test")).thenReturn(null);
BiFunction<String, UnleashContext, Boolean> fallbackAction = mock(BiFunction.class);
when(fallbackAction.apply(eq("test"), any(UnleashContext.class))).thenReturn(true);
BiPredicate<String, UnleashContext> fallbackAction = mock(BiPredicate.class);
when(fallbackAction.test(eq("test"), any(UnleashContext.class))).thenReturn(true);

assertThat(unleash.isEnabled("test", fallbackAction)).isTrue();
verify(fallbackAction, times(1)).apply(anyString(), any(UnleashContext.class));
verify(fallbackAction, times(1)).test(anyString(), any(UnleashContext.class));
}

@Test
public void fallback_function_should_be_invoked_also_with_context() {
when(toggleRepository.getToggle("test")).thenReturn(null);
BiFunction<String, UnleashContext, Boolean> fallbackAction = mock(BiFunction.class);
when(fallbackAction.apply(eq("test"), any(UnleashContext.class))).thenReturn(true);
BiPredicate<String, UnleashContext> fallbackAction = mock(BiPredicate.class);
when(fallbackAction.test(eq("test"), any(UnleashContext.class))).thenReturn(true);

UnleashContext context = UnleashContext.builder().userId("123").build();

assertThat(unleash.isEnabled("test", context, fallbackAction)).isTrue();
verify(fallbackAction, times(1)).apply(anyString(), any(UnleashContext.class));
verify(fallbackAction, times(1)).test(anyString(), any(UnleashContext.class));
}

@Test
void fallback_function_should_be_invoked_and_return_false() {
when(toggleRepository.getToggle("test")).thenReturn(null);
BiFunction<String, UnleashContext, Boolean> fallbackAction = mock(BiFunction.class);
when(fallbackAction.apply(eq("test"), any(UnleashContext.class))).thenReturn(false);
BiPredicate<String, UnleashContext> fallbackAction = mock(BiPredicate.class);
when(fallbackAction.test(eq("test"), any(UnleashContext.class))).thenReturn(false);

assertThat(unleash.isEnabled("test", fallbackAction)).isFalse();
verify(fallbackAction, times(1)).apply(anyString(), any(UnleashContext.class));
verify(fallbackAction, times(1)).test(anyString(), any(UnleashContext.class));
}

@Test
Expand All @@ -115,11 +115,11 @@ void fallback_function_should_not_be_called_when_toggle_is_defined() {
new FeatureToggle(
"test", true, asList(new ActivationStrategy("default", null))));

BiFunction<String, UnleashContext, Boolean> fallbackAction = mock(BiFunction.class);
when(fallbackAction.apply(eq("test"), any(UnleashContext.class))).thenReturn(false);
BiPredicate<String, UnleashContext> fallbackAction = mock(BiPredicate.class);
when(fallbackAction.test(eq("test"), any(UnleashContext.class))).thenReturn(false);

assertThat(unleash.isEnabled("test", fallbackAction)).isTrue();
verify(fallbackAction, never()).apply(anyString(), any(UnleashContext.class));
verify(fallbackAction, never()).test(anyString(), any(UnleashContext.class));
}

@Test
Expand Down

0 comments on commit 3e4b525

Please sign in to comment.