Skip to content

Commit 2b78c5e

Browse files
committed
chore: review fixes
1 parent b8eeb6d commit 2b78c5e

File tree

2 files changed

+36
-6
lines changed

2 files changed

+36
-6
lines changed

api/features/versioning/versioning_service.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ def _update_flag_for_versioning_v1(
202202
enabled=change_set.enabled,
203203
)
204204
else:
205+
assert len(latest_feature_states) == 1
205206
target_feature_state = list(latest_feature_states.values())[0]
206207
target_feature_state.enabled = change_set.enabled
207208
target_feature_state.save()
@@ -361,6 +362,8 @@ def _update_flag_v2_for_versioning_v1(
361362

362363
updated_segments = []
363364
for override in change_set.segment_overrides:
365+
# TODO: optimise this once this is out of the
366+
# experimentation stage
364367
segment_states = get_environment_flags_dict(
365368
environment=environment,
366369
feature_name=feature.name,

api/tests/unit/features/feature_states/test_serializers.py

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import typing
22

33
import pytest
4+
from rest_framework import serializers
45

56
from environments.models import Environment
67
from features.feature_states.serializers import (
@@ -16,6 +17,7 @@
1617
def 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

3539
def 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

4250
def 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

5164
def 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

Comments
 (0)