From 612f3363fc4ebfaa01b8dc7b4252ddd1b26e6cd0 Mon Sep 17 00:00:00 2001 From: wadii Date: Tue, 25 Nov 2025 16:51:30 +0100 Subject: [PATCH] fix: check-context-values-exists-or-return-false --- src/engine_eval/segment_evaluator.rs | 17 +++++++++-------- tests/engine_tests/engine-test-data | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/engine_eval/segment_evaluator.rs b/src/engine_eval/segment_evaluator.rs index 5e4d982..46c4449 100644 --- a/src/engine_eval/segment_evaluator.rs +++ b/src/engine_eval/segment_evaluator.rs @@ -182,7 +182,6 @@ fn get_value_from_jsonpath(ec: &EngineEvaluationContext, path: &str) -> Option return false, }; - // Build object IDs based on context - let context_str = context_value.map(|v| v.value.clone()); - let object_ids: Vec<&str> = if let Some(ref ctx_str) = context_str { - vec![segment_key, ctx_str.as_str()] - } else if let Some(ref identity) = ec.identity { - vec![segment_key, &identity.key] + let split_key: Option = if condition.property.is_empty() { + ec.identity.as_ref().map(|id| id.key.clone()) } else { - return false; + context_value.map(|v| v.value.clone()) + }; + + let split_key = match split_key { + Some(key) => key, + None => return false, }; + let object_ids: Vec<&str> = vec![segment_key, &split_key]; let hash_percentage = hashing::get_hashed_percentage_for_object_ids(object_ids, 1); (hash_percentage as f64) <= float_value } diff --git a/tests/engine_tests/engine-test-data b/tests/engine_tests/engine-test-data index 0d9040a..7840a13 160000 --- a/tests/engine_tests/engine-test-data +++ b/tests/engine_tests/engine-test-data @@ -1 +1 @@ -Subproject commit 0d9040a76ec3d11f5524ca98b19ec66f8ba7daac +Subproject commit 7840a1349b601df3b6b4a089f40864f659801afb