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