@@ -391,6 +391,65 @@ def test_update_flag_segment_override_creates_feature_segment_if_not_exists(
391391 ][0 ]
392392 assert segment_override .enabled is True
393393 assert segment_override .get_feature_state_value () == "premium_feature"
394+ assert segment_override .feature_segment is not None
395+ assert segment_override .feature_segment .priority == 10
396+
397+
398+ def test_create_new_segment_override_reorders_priorities_v1 (
399+ staff_client : APIClient ,
400+ feature : Feature ,
401+ environment : Environment ,
402+ project : Project ,
403+ with_environment_permissions : WithEnvironmentPermissionsCallable ,
404+ ) -> None :
405+ # Given
406+ with_environment_permissions ([UPDATE_FEATURE_STATE ]) # type: ignore[call-arg]
407+
408+ segment1 = Segment .objects .create (name = "segment1" , project = project )
409+ segment2 = Segment .objects .create (name = "segment2" , project = project )
410+
411+ # Create existing segment override at priority 0
412+ feature_segment1 = FeatureSegment .objects .create (
413+ feature = feature ,
414+ segment = segment1 ,
415+ environment = environment ,
416+ priority = 0 ,
417+ )
418+ FeatureState .objects .create (
419+ feature = feature ,
420+ environment = environment ,
421+ feature_segment = feature_segment1 ,
422+ enabled = True ,
423+ )
424+
425+ url = reverse (
426+ "api-experiments:update-flag-v1" ,
427+ kwargs = {"environment_key" : environment .api_key },
428+ )
429+
430+ # When - Create new segment override at priority 0 (should push segment1 to priority 1)
431+ data = {
432+ "feature" : {"name" : feature .name },
433+ "segment" : {"id" : segment2 .id , "priority" : 0 },
434+ "enabled" : True ,
435+ "value" : {"type" : "string" , "string_value" : "new_segment_value" },
436+ }
437+ response = staff_client .post (
438+ url , data = json .dumps (data ), content_type = "application/json"
439+ )
440+
441+ # Then
442+ assert response .status_code == status .HTTP_204_NO_CONTENT
443+
444+ # Refresh from DB
445+ feature_segment1 .refresh_from_db ()
446+ feature_segment2 = FeatureSegment .objects .get (
447+ feature = feature , segment = segment2 , environment = environment
448+ )
449+
450+ # segment2 should be at priority 0, segment1 should have been pushed to priority 1
451+ assert feature_segment2 .priority == 0
452+ assert feature_segment1 .priority == 1
394453
395454
396455# Update Multiple Feature States Tests
0 commit comments