@@ -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+ local_eval_flagsmith : Flagsmith ,
100+ evaluation_context : SDKEvaluationContext ,
101+ ) -> None :
102+ # Given
103+ mock_get_evaluation_result = mocker .patch (
104+ "flagsmith.flagsmith.engine.get_evaluation_result" ,
105+ autospec = True ,
106+ )
107+
108+ expected_evaluation_result = {
109+ "flags" : {
110+ "some_feature" : {
111+ "name" : "some_feature" ,
112+ "enabled" : True ,
113+ "value" : "some-feature-state-value" ,
114+ "metadata" : {"id" : 1 },
115+ }
116+ },
117+ "segments" : [],
118+ }
119+
120+ mock_get_evaluation_result .return_value = expected_evaluation_result
121+
122+ # When
123+ local_eval_flagsmith .get_environment_flags ()
124+
125+ # Then
126+ # Verify segments are not present in the context passed to the engine
127+ context_without_segments = evaluation_context .copy ()
128+ context_without_segments .pop ("segments" , None )
129+ mock_get_evaluation_result .assert_called_once_with (context = context_without_segments )
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,43 @@ 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+ local_eval_flagsmith : Flagsmith ,
232+ ) -> None :
233+ # Given
234+ mock_get_evaluation_result = mocker .patch (
235+ "flagsmith.flagsmith.engine.get_evaluation_result" ,
236+ autospec = True ,
237+ )
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_get_evaluation_result .return_value = expected_evaluation_result
255+
256+ # When
257+ local_eval_flagsmith .get_identity_flags (identifier , traits )
258+
259+ # Then
260+ # Verify segments are present in the context passed to the engine for identity flags
261+ call_args = mock_get_evaluation_result .call_args
262+ context = call_args [1 ]["context" ]
263+ assert "segments" in context
264+
265+
194266@responses .activate ()
195267def test_get_identity_flags__transient_identity__calls_expected (
196268 flagsmith : Flagsmith ,
0 commit comments