From a78b284bee634347544acb9b02225d998ad1ef8c Mon Sep 17 00:00:00 2001 From: Matthew Elwell Date: Wed, 24 Jul 2024 15:17:44 +0100 Subject: [PATCH] fix: add logic to set segment to lowest priority if not set (#4381) --- api/features/feature_segments/serializers.py | 2 ++ .../test_unit_feature_segments_serializers.py | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/api/features/feature_segments/serializers.py b/api/features/feature_segments/serializers.py index a4a2739cd304..e7aa85afe5ce 100644 --- a/api/features/feature_segments/serializers.py +++ b/api/features/feature_segments/serializers.py @@ -56,6 +56,8 @@ def save(self, **kwargs: typing.Any) -> FeatureSegment: if priority: feature_segment.to(priority) + else: + feature_segment.bottom(priority) return feature_segment diff --git a/api/tests/unit/features/feature_segments/test_unit_feature_segments_serializers.py b/api/tests/unit/features/feature_segments/test_unit_feature_segments_serializers.py index 45d8653e4c5b..e710a70197af 100644 --- a/api/tests/unit/features/feature_segments/test_unit_feature_segments_serializers.py +++ b/api/tests/unit/features/feature_segments/test_unit_feature_segments_serializers.py @@ -2,6 +2,7 @@ from environments.models import Environment from features.feature_segments.serializers import ( + CustomCreateSegmentOverrideFeatureSegmentSerializer, FeatureSegmentChangePrioritiesSerializer, ) from features.models import Feature, FeatureSegment, FeatureState @@ -58,3 +59,24 @@ def test_feature_segment_change_priorities_serializer_validate_fails_if_non_uniq # Then assert is_valid is False assert serializer.errors + + +def test_feature_segment_serializer_save_sets_lowest_priority_if_none_given( + feature: Feature, + segment_featurestate: FeatureState, + feature_segment: FeatureSegment, + another_segment: Segment, + environment: Environment, +) -> None: + # Given + serializer = CustomCreateSegmentOverrideFeatureSegmentSerializer( + data={"segment": another_segment.id} + ) + serializer.is_valid(raise_exception=True) + + # When + new_feature_segment = serializer.save(feature=feature, environment=environment) + + # Then + assert feature_segment.priority == 0 + assert new_feature_segment.priority == 1