@@ -94,6 +94,41 @@ def test_get_environment_flags_uses_local_environment_when_available(
9494 assert all_flags [0 ].value == "some-value"
9595
9696
97+ def test_get_environment_flags_omits_segments_from_evaluation_context (
98+ mocker : MockerFixture ,
99+ flagsmith : Flagsmith ,
100+ evaluation_context : SDKEvaluationContext ,
101+ ) -> None :
102+ # Given
103+ flagsmith ._evaluation_context = evaluation_context
104+ flagsmith .enable_local_evaluation = True
105+ mock_engine = mocker .patch ("flagsmith.flagsmith.engine" )
106+
107+ expected_evaluation_result = {
108+ "flags" : {
109+ "some_feature" : {
110+ "name" : "some_feature" ,
111+ "enabled" : True ,
112+ "value" : "some-feature-state-value" ,
113+ "metadata" : {"id" : 1 },
114+ }
115+ },
116+ "segments" : [],
117+ }
118+
119+ mock_engine .get_evaluation_result .return_value = expected_evaluation_result
120+
121+ # When
122+ flagsmith .get_environment_flags ()
123+
124+ # Then
125+ mock_engine .get_evaluation_result .assert_called_once ()
126+ call_args = mock_engine .get_evaluation_result .call_args
127+ context = call_args [0 ][0 ] # First positional argument
128+ # Segments should not be present in the context passed to the engine
129+ assert "segments" not in context
130+
131+
97132@responses .activate ()
98133def test_get_identity_flags_calls_api_when_no_local_environment_no_traits (
99134 flagsmith : Flagsmith , identities_json : str
@@ -191,6 +226,46 @@ def test_get_identity_flags_uses_local_environment_when_available(
191226 assert identity_flags [0 ].value == "some-feature-state-value"
192227
193228
229+ def test_get_identity_flags_includes_segments_in_evaluation_context (
230+ mocker : MockerFixture ,
231+ flagsmith : Flagsmith ,
232+ evaluation_context : SDKEvaluationContext ,
233+ ) -> None :
234+ # Given
235+ flagsmith ._evaluation_context = evaluation_context
236+ flagsmith .enable_local_evaluation = True
237+ mock_engine = mocker .patch ("flagsmith.flagsmith.engine" )
238+
239+ expected_evaluation_result = {
240+ "flags" : {
241+ "some_feature" : {
242+ "name" : "some_feature" ,
243+ "enabled" : True ,
244+ "value" : "some-feature-state-value" ,
245+ "metadata" : {"id" : 1 },
246+ }
247+ },
248+ "segments" : [],
249+ }
250+
251+ identifier = "identifier"
252+ traits = {"some_trait" : "some_value" }
253+
254+ mock_engine .get_evaluation_result .return_value = expected_evaluation_result
255+
256+ # When
257+ flagsmith .get_identity_flags (identifier , traits )
258+
259+ # Then
260+ mock_engine .get_evaluation_result .assert_called_once ()
261+ call_args = mock_engine .get_evaluation_result .call_args
262+ context = call_args [1 ]["context" ]
263+ # Segments should be present in the context passed to the engine for identity flags
264+ assert "segments" in context
265+ # Verify segments from evaluation_context are preserved
266+ assert context ["segments" ] == evaluation_context ["segments" ]
267+
268+
194269@responses .activate ()
195270def test_get_identity_flags__transient_identity__calls_expected (
196271 flagsmith : Flagsmith ,
0 commit comments