Skip to content

Commit 07efd2b

Browse files
fix: unbreak red API + group serializer tests (#10467)
* test: group serializer tests * fix: Group.ads is a property * fix: no need for type in AreaSerializer
1 parent 18902ff commit 07efd2b

2 files changed

Lines changed: 92 additions & 2 deletions

File tree

ietf/group/serializers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,11 @@ class AreaSerializer(serializers.ModelSerializer):
3434

3535
class Meta:
3636
model = Group
37-
fields = ["acronym", "name", "type", "ads"]
37+
fields = ["acronym", "name", "ads"]
3838

3939
@extend_schema_field(AreaDirectorSerializer(many=True))
4040
def get_ads(self, area: Group):
4141
return AreaDirectorSerializer(
42-
area.ads() if area.is_active else Role.objects.none(),
42+
area.ads if area.is_active else Role.objects.none(),
4343
many=True,
4444
).data

ietf/group/tests_serializers.py

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# Copyright The IETF Trust 2026, All Rights Reserved
2+
from ietf.group.factories import RoleFactory, GroupFactory
3+
from ietf.group.serializers import (
4+
AreaDirectorSerializer,
5+
AreaSerializer,
6+
GroupSerializer,
7+
)
8+
from ietf.person.factories import EmailFactory
9+
from ietf.utils.test_utils import TestCase
10+
11+
12+
class GroupSerializerTests(TestCase):
13+
def test_serializes(self):
14+
wg = GroupFactory()
15+
serialized = GroupSerializer(wg).data
16+
self.assertEqual(
17+
serialized,
18+
{
19+
"acronym": wg.acronym,
20+
"name": wg.name,
21+
"type": "wg",
22+
"list_email": wg.list_email,
23+
},
24+
)
25+
26+
27+
class AreaDirectorSerializerTests(TestCase):
28+
def test_serializes_role(self):
29+
"""Should serialize a Role correctly"""
30+
role = RoleFactory(group__type_id="area", name_id="ad")
31+
serialized = AreaDirectorSerializer(role).data
32+
self.assertEqual(
33+
serialized,
34+
{"email": role.email.email_address()},
35+
)
36+
37+
def test_serializes_email(self):
38+
"""Should serialize an Email correctly"""
39+
email = EmailFactory()
40+
serialized = AreaDirectorSerializer(email).data
41+
self.assertEqual(
42+
serialized,
43+
{"email": email.email_address()},
44+
)
45+
46+
47+
class AreaSerializerTests(TestCase):
48+
def test_serializes_active_area(self):
49+
"""Should serialize an active area correctly"""
50+
area = GroupFactory(type_id="area", state_id="active")
51+
serialized = AreaSerializer(area).data
52+
self.assertEqual(
53+
serialized,
54+
{
55+
"acronym": area.acronym,
56+
"name": area.name,
57+
"ads": [],
58+
},
59+
)
60+
ad_roles = RoleFactory.create_batch(2, group=area, name_id="ad")
61+
serialized = AreaSerializer(area).data
62+
self.assertEqual(serialized["acronym"], area.acronym)
63+
self.assertEqual(serialized["name"], area.name)
64+
self.assertCountEqual(
65+
serialized["ads"],
66+
[{"email": ad.email.email_address()} for ad in ad_roles],
67+
)
68+
69+
def test_serializes_inactive_area(self):
70+
"""Should serialize an inactive area correctly"""
71+
area = GroupFactory(type_id="area", state_id="conclude")
72+
serialized = AreaSerializer(area).data
73+
self.assertEqual(
74+
serialized,
75+
{
76+
"acronym": area.acronym,
77+
"name": area.name,
78+
"ads": [],
79+
},
80+
)
81+
RoleFactory.create_batch(2, group=area, name_id="ad")
82+
serialized = AreaSerializer(area).data
83+
self.assertEqual(
84+
serialized,
85+
{
86+
"acronym": area.acronym,
87+
"name": area.name,
88+
"ads": [],
89+
},
90+
)

0 commit comments

Comments
 (0)