Skip to content

Commit 7fb2748

Browse files
committed
use segment name for identity overrides
1 parent f45e0a2 commit 7fb2748

File tree

3 files changed

+49
-4
lines changed

3 files changed

+49
-4
lines changed

flag_engine/context/mappers.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff 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",

flag_engine/segments/evaluator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff 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

tests/unit/segments/test_segments_evaluator.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
SegmentContext,
1414
)
1515
from flag_engine.environments.models import EnvironmentModel
16+
from flag_engine.features.models import FeatureModel, FeatureStateModel
1617
from flag_engine.identities.models import IdentityModel
1718
from flag_engine.result.types import FlagResult
1819
from 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
(

0 commit comments

Comments
 (0)