11import typing
22
33import pytest
4+ from rest_framework import serializers
45
56from environments .models import Environment
67from features .feature_states .serializers import (
1617def test_get_feature_raises_error_when_environment_not_in_context (
1718 feature : Feature ,
1819) -> None :
20+ # Given
1921 serializer = UpdateFlagSerializer (
2022 data = {
2123 "feature" : {"name" : feature .name },
@@ -26,32 +28,48 @@ def test_get_feature_raises_error_when_environment_not_in_context(
2628 )
2729 serializer .is_valid ()
2830
29- with pytest .raises (Exception ) as exc_info :
31+ # When
32+ with pytest .raises (serializers .ValidationError ) as exc_info :
3033 serializer .get_feature ()
3134
35+ # Then
3236 assert "Environment context is required" in str (exc_info .value )
3337
3438
3539def test_validate_segment_overrides_returns_empty_list () -> None :
40+ # Given
3641 serializer = UpdateFlagV2Serializer ()
42+
43+ # When
3744 result = serializer .validate_segment_overrides ([])
3845
46+ # Then
3947 assert result == []
4048
4149
4250def test_feature_value_serializer_rejects_invalid_integer () -> None :
51+ # Given
4352 serializer = FeatureValueSerializer (
4453 data = {"type" : "integer" , "string_value" : "not_a_number" }
4554 )
4655
47- assert serializer .is_valid () is False
56+ # When
57+ is_valid = serializer .is_valid ()
58+
59+ # Then
60+ assert is_valid is False
4861 assert "not a valid integer" in str (serializer .errors )
4962
5063
5164def test_feature_value_serializer_rejects_invalid_boolean () -> None :
65+ # Given
5266 serializer = FeatureValueSerializer (data = {"type" : "boolean" , "string_value" : "yes" })
5367
54- assert serializer .is_valid () is False
68+ # When
69+ is_valid = serializer .is_valid ()
70+
71+ # Then
72+ assert is_valid is False
5573 assert "not a valid boolean" in str (serializer .errors )
5674
5775
@@ -92,12 +110,17 @@ def test_serializer_rejects_nonexistent_segment(
92110 serializer_class : type ,
93111 data_factory : typing .Callable [[Feature , int ], dict ], # type: ignore[type-arg]
94112) -> None :
113+ # Given
95114 serializer = serializer_class (
96115 data = data_factory (feature , 999999 ),
97116 context = {"environment" : environment },
98117 )
99118
100- assert serializer .is_valid () is False
119+ # When
120+ is_valid = serializer .is_valid ()
121+
122+ # Then
123+ assert is_valid is False
101124 assert "not found in project" in str (serializer .errors )
102125
103126
@@ -139,16 +162,20 @@ def test_serializer_rejects_cross_project_segment(
139162 serializer_class : type ,
140163 data_factory : typing .Callable [[Feature , int ], dict ], # type: ignore[type-arg]
141164) -> None :
165+ # Given
142166 other_project = Project .objects .create (
143167 name = "Other Project" ,
144168 organisation = organisation ,
145169 )
146170 other_segment = Segment .objects .create (name = "other_segment" , project = other_project )
147-
148171 serializer = serializer_class (
149172 data = data_factory (feature , other_segment .id ),
150173 context = {"environment" : environment },
151174 )
152175
153- assert serializer .is_valid () is False
176+ # When
177+ is_valid = serializer .is_valid ()
178+
179+ # Then
180+ assert is_valid is False
154181 assert "not found in project" in str (serializer .errors )
0 commit comments