File tree Expand file tree Collapse file tree 3 files changed +49
-4
lines changed
Expand file tree Collapse file tree 3 files changed +49
-4
lines changed Original file line number Diff line number Diff line change @@ -112,10 +112,9 @@ def _map_identity_overrides_to_segment_contexts(
112112 features_to_identifiers [overrides_key ].append (identity_override .identifier )
113113 segment_contexts : typing .Dict [str , SegmentContext ] = {}
114114 for overrides_key , identifiers in features_to_identifiers .items ():
115- segment_name = f"overrides_{ abs (hash (overrides_key ))} "
116- segment_contexts [segment_name ] = SegmentContext (
115+ segment_contexts [str (hash (overrides_key ))] = SegmentContext (
117116 key = "" , # Identity override segments never use % Split operator
118- name = segment_name ,
117+ name = "identity_overrides" ,
119118 rules = [
120119 {
121120 "type" : "ALL" ,
Original file line number Diff line number Diff line change @@ -49,7 +49,7 @@ def get_identity_segments(
4949 override_traits = None ,
5050 )
5151 return [
52- SegmentModel (id = segment_context ["key" ], name = segment_context ["name" ])
52+ SegmentModel (id = segment_context ["key" ] or 0 , name = segment_context ["name" ])
5353 for segment_context in get_evaluation_result (context )["segments" ]
5454 ]
5555
Original file line number Diff line number Diff line change 1313 SegmentContext ,
1414)
1515from flag_engine .environments .models import EnvironmentModel
16+ from flag_engine .features .models import FeatureModel , FeatureStateModel
1617from flag_engine .identities .models import IdentityModel
1718from flag_engine .result .types import FlagResult
1819from flag_engine .segments import constants
@@ -791,6 +792,51 @@ def test_get_evaluation_result__two_segments_override_same_feature__returns_expe
791792 }
792793
793794
795+ def test_get_evaluation_result__identity_override__returns_expected (
796+ environment : EnvironmentModel ,
797+ feature_1 : FeatureModel ,
798+ identity : IdentityModel ,
799+ ) -> None :
800+ # Given
801+ identity .identity_features .append (
802+ FeatureStateModel (
803+ feature = feature_1 ,
804+ enabled = True ,
805+ value = "overridden_for_identity" ,
806+ )
807+ )
808+ context = map_environment_identity_to_context (
809+ environment = environment ,
810+ identity = identity ,
811+ override_traits = None ,
812+ )
813+
814+ # When
815+ result = get_evaluation_result (context )
816+
817+ # Then
818+ assert result == {
819+ "context" : context ,
820+ "flags" : [
821+ {
822+ "enabled" : True ,
823+ "feature_key" : "1" ,
824+ "name" : "feature_1" ,
825+ "reason" : "TARGETING_MATCH; segment=identity_overrides" ,
826+ "value" : None ,
827+ },
828+ {
829+ "enabled" : False ,
830+ "feature_key" : "2" ,
831+ "name" : "feature_2" ,
832+ "reason" : "DEFAULT" ,
833+ "value" : None ,
834+ },
835+ ],
836+ "segments" : [{"key" : "" , "name" : "identity_overrides" }],
837+ }
838+
839+
794840@pytest .mark .parametrize (
795841 "percentage_value, expected_result" ,
796842 (
You can’t perform that action at this time.
0 commit comments