diff --git a/pom.xml b/pom.xml index 1bb5a43..b231cd7 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.featureprobe server-sdk-java - 2.2.2 + 2.3.0 server-sdk-java FeatureProbe Server Side SDK for Java diff --git a/src/main/java/com/featureprobe/sdk/server/model/Toggle.java b/src/main/java/com/featureprobe/sdk/server/model/Toggle.java index 8f88fbf..6afdb59 100644 --- a/src/main/java/com/featureprobe/sdk/server/model/Toggle.java +++ b/src/main/java/com/featureprobe/sdk/server/model/Toggle.java @@ -27,7 +27,7 @@ import java.util.Objects; import java.util.Optional; -public final class Toggle { +public class Toggle { private String key; @@ -53,7 +53,7 @@ public final class Toggle { public EvaluationResult eval(FPUser user, Map toggles, Map segments, Object defaultValue, int deep) { - EvaluationResult result = createDefaultResult(user, key, defaultValue, ""); + EvaluationResult result = createDisabledResult(user, key, defaultValue); try { return doEval(user, toggles, segments, defaultValue, deep); } catch (PrerequisiteException e) { @@ -66,7 +66,7 @@ public EvaluationResult eval(FPUser user, Map toggles, Map toggles, Map segments, - Object defaultValue, int deep) { + Object defaultValue, int depth) { String warning = ""; @@ -74,15 +74,15 @@ public EvaluationResult doEval(FPUser user, Map toggles, Map 0) { + if (rules != null && !rules.isEmpty()) { for (int i = 0; i < rules.size(); i++) { Rule rule = rules.get(i); HitResult hitResult = rule.hit(user, segments, this.key); @@ -110,7 +110,8 @@ private EvaluationResult createDefaultResult(FPUser user, String toggleKey, Obje return defaultResult; } - private boolean prerequisite(FPUser user, Map toggles, Map segments, int deep) { + protected boolean meetPrerequisite(FPUser user, Map toggles, Map segments, + int depth) { if (Objects.isNull(prerequisites) || prerequisites.isEmpty()) { return true; } @@ -118,7 +119,7 @@ private boolean prerequisite(FPUser user, Map toggles, Map> false + + when: + def result = toggleSpy.doEval(user, null, null, null, 1) + + then: + DISABLED_VARIATION == result.variationIndex.get() + } + + def "When meetPrerequisite returns true should not act like disabled"() { + setup: + Toggle toggleSpy = Spy() + toggleSpy.enabled = true + final DEFAULT_VARIATION = 1 + final DISABLED_VARIATION = 0 + + toggleSpy.variations = [DEFAULT_VARIATION, DISABLED_VARIATION] + toggleSpy.defaultServe = new Serve(DEFAULT_VARIATION) + toggleSpy.disabledServe = new Serve(DISABLED_VARIATION) + + // Make meetPrerequisite return false + toggleSpy.meetPrerequisite(user, null, null, 1) >> true + + when: + def result = toggleSpy.doEval(user, null, null, null, 1) + + then: + DISABLED_VARIATION != result.variationIndex.get() + } + +} diff --git a/src/test/resources/test b/src/test/resources/test index 90d81ec..503eec9 160000 --- a/src/test/resources/test +++ b/src/test/resources/test @@ -1 +1 @@ -Subproject commit 90d81ec82259a9814e3436efbfe899969b5b17e3 +Subproject commit 503eec9218dc0d2af9439ceaf652316ed1e500fa