1111
1212TEST_FLAG_KEY = "test_flag"
1313DISTINCT_ID = "user123"
14- USER_CONTEXT = {"distinct_id" : DISTINCT_ID }
1514
1615def create_test_flag (
1716 flag_key : str = TEST_FLAG_KEY ,
@@ -108,7 +107,7 @@ async def setup_flags_with_polling(self, flags_in_order: List[List[Experimentati
108107 @respx .mock
109108 async def test_get_variant_value_returns_fallback_when_no_flag_definitions (self ):
110109 await self .setup_flags ([])
111- result = self ._flags .get_variant_value ("nonexistent_flag" , "control" , USER_CONTEXT )
110+ result = self ._flags .get_variant_value ("nonexistent_flag" , "control" , { "distinct_id" : DISTINCT_ID } )
112111 assert result == "control"
113112
114113 @respx .mock
@@ -118,14 +117,14 @@ async def test_get_variant_value_returns_fallback_if_flag_definition_call_fails(
118117 )
119118
120119 await self ._flags .astart_polling_for_definitions ()
121- result = self ._flags .get_variant_value ("nonexistent_flag" , "control" , USER_CONTEXT )
120+ result = self ._flags .get_variant_value ("nonexistent_flag" , "control" , { "distinct_id" : DISTINCT_ID } )
122121 assert result == "control"
123122
124123 @respx .mock
125124 async def test_get_variant_value_returns_fallback_when_flag_does_not_exist (self ):
126125 other_flag = create_test_flag ("other_flag" )
127126 await self .setup_flags ([other_flag ])
128- result = self ._flags .get_variant_value ("nonexistent_flag" , "control" , USER_CONTEXT )
127+ result = self ._flags .get_variant_value ("nonexistent_flag" , "control" , { "distinct_id" : DISTINCT_ID } )
129128 assert result == "control"
130129
131130 @respx .mock
@@ -139,7 +138,7 @@ async def test_get_variant_value_returns_fallback_when_no_context(self):
139138 async def test_get_variant_value_returns_fallback_when_wrong_context_key (self ):
140139 flag = create_test_flag (context = "user_id" )
141140 await self .setup_flags ([flag ])
142- result = self ._flags .get_variant_value (TEST_FLAG_KEY , "fallback" , USER_CONTEXT )
141+ result = self ._flags .get_variant_value (TEST_FLAG_KEY , "fallback" , { "distinct_id" : DISTINCT_ID } )
143142 assert result == "fallback"
144143
145144 @respx .mock
@@ -177,14 +176,14 @@ async def test_get_variant_value_returns_fallback_when_test_user_variant_not_con
177176 async def test_get_variant_value_returns_fallback_when_rollout_percentage_zero (self ):
178177 flag = create_test_flag (rollout_percentage = 0.0 )
179178 await self .setup_flags ([flag ])
180- result = self ._flags .get_variant_value (TEST_FLAG_KEY , "fallback" , USER_CONTEXT )
179+ result = self ._flags .get_variant_value (TEST_FLAG_KEY , "fallback" , { "distinct_id" : DISTINCT_ID } )
181180 assert result == "fallback"
182181
183182 @respx .mock
184183 async def test_get_variant_value_returns_variant_when_rollout_percentage_hundred (self ):
185184 flag = create_test_flag (rollout_percentage = 100.0 )
186185 await self .setup_flags ([flag ])
187- result = self ._flags .get_variant_value (TEST_FLAG_KEY , "fallback" , USER_CONTEXT )
186+ result = self ._flags .get_variant_value (TEST_FLAG_KEY , "fallback" , { "distinct_id" : DISTINCT_ID } )
188187 assert result != "fallback"
189188
190189 # TODO Joshua start here
@@ -262,7 +261,7 @@ async def test_get_variant_value_picks_correct_variant_with_hundred_percent_spli
262261 ]
263262 flag = create_test_flag (variants = variants , rollout_percentage = 100.0 )
264263 await self .setup_flags ([flag ])
265- result = self ._flags .get_variant_value (TEST_FLAG_KEY , "fallback" , USER_CONTEXT )
264+ result = self ._flags .get_variant_value (TEST_FLAG_KEY , "fallback" , { "distinct_id" : DISTINCT_ID } )
266265 assert result == "variant_a"
267266
268267 @respx .mock
@@ -275,7 +274,7 @@ async def test_get_variant_value_picks_correct_variant_with_half_migrated_group_
275274 variant_splits = {"A" : 0.0 , "B" : 100.0 , "C" : 0.0 }
276275 flag = create_test_flag (variants = variants , rollout_percentage = 100.0 , variant_splits = variant_splits )
277276 await self .setup_flags ([flag ])
278- result = self ._flags .get_variant_value (TEST_FLAG_KEY , "fallback" , USER_CONTEXT )
277+ result = self ._flags .get_variant_value (TEST_FLAG_KEY , "fallback" , { "distinct_id" : DISTINCT_ID } )
279278 assert result == "variant_b"
280279
281280 @respx .mock
@@ -288,7 +287,7 @@ async def test_get_variant_value_picks_correct_variant_with_full_migrated_group_
288287 variant_splits = {"A" : 0.0 , "B" : 0.0 , "C" : 100.0 }
289288 flag = create_test_flag (variants = variants , rollout_percentage = 100.0 , variant_splits = variant_splits )
290289 await self .setup_flags ([flag ])
291- result = self ._flags .get_variant_value (TEST_FLAG_KEY , "fallback" , USER_CONTEXT )
290+ result = self ._flags .get_variant_value (TEST_FLAG_KEY , "fallback" , { "distinct_id" : DISTINCT_ID } )
292291 assert result == "variant_c"
293292
294293 @respx .mock
@@ -299,7 +298,7 @@ async def test_get_variant_value_picks_overriden_variant(self):
299298 ]
300299 flag = create_test_flag (variants = variants , variant_override = VariantOverride (key = "B" ))
301300 await self .setup_flags ([flag ])
302- result = self ._flags .get_variant_value (TEST_FLAG_KEY , "control" , USER_CONTEXT )
301+ result = self ._flags .get_variant_value (TEST_FLAG_KEY , "control" , { "distinct_id" : DISTINCT_ID } )
303302 assert result == "variant_b"
304303
305304 @respx .mock
@@ -308,7 +307,7 @@ async def test_get_variant_value_tracks_exposure_when_variant_selected(self):
308307 await self .setup_flags ([flag ])
309308 with patch ('mixpanel.flags.utils.normalized_hash' ) as mock_hash :
310309 mock_hash .return_value = 0.5
311- _ = self ._flags .get_variant_value (TEST_FLAG_KEY , "fallback" , USER_CONTEXT )
310+ _ = self ._flags .get_variant_value (TEST_FLAG_KEY , "fallback" , { "distinct_id" : DISTINCT_ID } )
312311 self ._mock_tracker .assert_called_once ()
313312
314313 @respx .mock
@@ -351,7 +350,7 @@ async def test_get_variant_value_tracks_exposure_with_correct_properties(self, e
351350 @respx .mock
352351 async def test_get_variant_value_does_not_track_exposure_on_fallback (self ):
353352 await self .setup_flags ([])
354- _ = self ._flags .get_variant_value ("nonexistent_flag" , "fallback" , USER_CONTEXT )
353+ _ = self ._flags .get_variant_value ("nonexistent_flag" , "fallback" , { "distinct_id" : DISTINCT_ID } )
355354 self ._mock_tracker .assert_not_called ()
356355
357356 @respx .mock
@@ -367,7 +366,7 @@ async def test_get_all_variants_returns_all_variants_when_user_in_rollout(self):
367366 flag2 = create_test_flag (flag_key = "flag2" , rollout_percentage = 100.0 )
368367 await self .setup_flags ([flag1 , flag2 ])
369368
370- result = self ._flags .get_all_variants (USER_CONTEXT )
369+ result = self ._flags .get_all_variants ({ "distinct_id" : DISTINCT_ID } )
371370
372371 assert len (result ) == 2 and "flag1" in result and "flag2" in result
373372
@@ -377,15 +376,15 @@ async def test_get_all_variants_returns_partial_variants_when_user_in_some_rollo
377376 flag2 = create_test_flag (flag_key = "flag2" , rollout_percentage = 0.0 )
378377 await self .setup_flags ([flag1 , flag2 ])
379378
380- result = self ._flags .get_all_variants (USER_CONTEXT )
379+ result = self ._flags .get_all_variants ({ "distinct_id" : DISTINCT_ID } )
381380
382381 assert len (result ) == 1 and "flag1" in result and "flag2" not in result
383382
384383 @respx .mock
385384 async def test_get_all_variants_returns_empty_dict_when_no_flags_configured (self ):
386385 await self .setup_flags ([])
387386
388- result = self ._flags .get_all_variants (USER_CONTEXT )
387+ result = self ._flags .get_all_variants ({ "distinct_id" : DISTINCT_ID } )
389388
390389 assert result == {}
391390
@@ -395,7 +394,7 @@ async def test_get_all_variants_does_not_track_exposure_events(self):
395394 flag2 = create_test_flag (flag_key = "flag2" , rollout_percentage = 100.0 )
396395 await self .setup_flags ([flag1 , flag2 ])
397396
398- _ = self ._flags .get_all_variants (USER_CONTEXT )
397+ _ = self ._flags .get_all_variants ({ "distinct_id" : DISTINCT_ID } )
399398
400399 self ._mock_tracker .assert_not_called ()
401400
@@ -405,7 +404,7 @@ async def test_track_exposure_event_successfully_tracks(self):
405404 await self .setup_flags ([flag ])
406405
407406 variant = SelectedVariant (key = "treatment" , variant_value = "treatment" )
408- self ._flags .track_exposure_event (TEST_FLAG_KEY , variant , USER_CONTEXT )
407+ self ._flags .track_exposure_event (TEST_FLAG_KEY , variant , { "distinct_id" : DISTINCT_ID } )
409408
410409 self ._mock_tracker .assert_called_once ()
411410
@@ -425,7 +424,7 @@ async def test_are_flags_ready_returns_true_when_empty_flags_loaded(self):
425424 @respx .mock
426425 async def test_is_enabled_returns_false_for_nonexistent_flag (self ):
427426 await self .setup_flags ([])
428- result = self ._flags .is_enabled ("nonexistent_flag" , USER_CONTEXT )
427+ result = self ._flags .is_enabled ("nonexistent_flag" , { "distinct_id" : DISTINCT_ID } )
429428 assert result == False
430429
431430 @respx .mock
@@ -435,7 +434,7 @@ async def test_is_enabled_returns_true_for_true_variant_value(self):
435434 ]
436435 flag = create_test_flag (variants = variants , rollout_percentage = 100.0 )
437436 await self .setup_flags ([flag ])
438- result = self ._flags .is_enabled (TEST_FLAG_KEY , USER_CONTEXT )
437+ result = self ._flags .is_enabled (TEST_FLAG_KEY , { "distinct_id" : DISTINCT_ID } )
439438 assert result == True
440439
441440 @respx .mock
@@ -460,7 +459,7 @@ async def track_fetch_calls(self):
460459 async with polling_limit_check :
461460 await polling_limit_check .wait_for (lambda : polling_iterations >= len (flags_in_order ))
462461
463- result2 = self ._flags_with_polling .get_variant_value (TEST_FLAG_KEY , "fallback" , USER_CONTEXT )
462+ result2 = self ._flags_with_polling .get_variant_value (TEST_FLAG_KEY , "fallback" , { "distinct_id" : DISTINCT_ID } )
464463 assert result2 != "fallback"
465464
466465class TestLocalFeatureFlagsProviderSync :
@@ -506,5 +505,5 @@ def track_fetch_calls(self):
506505 self .setup_flags_with_polling (flags_in_order )
507506 polling_event .wait (timeout = 5.0 )
508507 assert (polling_iterations >= 3 )
509- result2 = self ._flags_with_polling .get_variant_value (TEST_FLAG_KEY , "fallback" , USER_CONTEXT )
508+ result2 = self ._flags_with_polling .get_variant_value (TEST_FLAG_KEY , "fallback" , { "distinct_id" : DISTINCT_ID } )
510509 assert result2 != "fallback"
0 commit comments