Skip to content

Commit ca37cb6

Browse files
committed
include new fields on teacher/school serializer
then update tests to handle those new fields
1 parent e8ec56d commit ca37cb6

File tree

2 files changed

+21
-13
lines changed

2 files changed

+21
-13
lines changed

tests/serializers.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,15 @@ class TeacherSerializer(DynamicFieldsMixin, serializers.ModelSerializer):
1818

1919
class Meta:
2020
model = Teacher
21-
fields = ('id', 'request_info')
21+
fields = ("id", "request_info", "age", "name")
2222

2323
def get_request_info(self, teacher):
2424
"""
2525
a meaningless method that attempts
2626
to access the request object.
2727
"""
28-
request = self.context['request']
29-
return request.build_absolute_uri(
30-
'/api/v1/teacher/{}'.format(teacher.pk)
31-
)
28+
request = self.context["request"]
29+
return request.build_absolute_uri("/api/v1/teacher/{}".format(teacher.pk))
3230

3331

3432
class SchoolSerializer(DynamicFieldsMixin, serializers.ModelSerializer):
@@ -41,4 +39,4 @@ class SchoolSerializer(DynamicFieldsMixin, serializers.ModelSerializer):
4139

4240
class Meta:
4341
model = School
44-
fields = ('id', 'teachers')
42+
fields = ("id", "teachers", "name")

tests/test_mixins.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ def test_fields_left_alone(self):
3838
request = rf.get("/api/v1/schools/1/")
3939
serializer = TeacherSerializer(context={"request": request})
4040

41-
self.assertEqual(set(serializer.fields.keys()), set(("id", "request_info")))
41+
self.assertEqual(
42+
set(serializer.fields.keys()), set(("id", "request_info", "age", "name"))
43+
)
4244

4345
def test_fields_all_gone(self):
4446
"""
@@ -55,12 +57,12 @@ def test_ordinary_serializer(self):
5557
Check the full JSON output of the serializer.
5658
"""
5759
rf = RequestFactory()
58-
request = rf.get("/api/v1/schools/1/?fields=id")
60+
request = rf.get("/api/v1/schools/1/?fields=id,age")
5961
teacher = Teacher.objects.create(name="Susan", age=34)
6062

6163
serializer = TeacherSerializer(teacher, context={"request": request})
6264

63-
self.assertEqual(serializer.data, {"id": teacher.id})
65+
self.assertEqual(serializer.data, {"id": teacher.id, "age": teacher.age})
6466

6567
def test_omit(self):
6668
"""
@@ -70,7 +72,7 @@ def test_omit(self):
7072
request = rf.get("/api/v1/schools/1/?omit=request_info")
7173
serializer = TeacherSerializer(context={"request": request})
7274

73-
self.assertEqual(set(serializer.fields.keys()), set(("id",)))
75+
self.assertEqual(set(serializer.fields.keys()), set(("id", "name", "age")))
7476

7577
def test_omit_and_fields_used(self):
7678
"""
@@ -87,7 +89,7 @@ def test_omit_everything(self):
8789
Can remove it all tediously.
8890
"""
8991
rf = RequestFactory()
90-
request = rf.get("/api/v1/schools/1/?omit=id,request_info")
92+
request = rf.get("/api/v1/schools/1/?omit=id,request_info,age,name")
9193
serializer = TeacherSerializer(context={"request": request})
9294

9395
self.assertEqual(set(serializer.fields.keys()), set())
@@ -100,14 +102,18 @@ def test_omit_nothing(self):
100102
request = rf.get("/api/v1/schools/1/?omit")
101103
serializer = TeacherSerializer(context={"request": request})
102104

103-
self.assertEqual(set(serializer.fields.keys()), set(("id", "request_info")))
105+
self.assertEqual(
106+
set(serializer.fields.keys()), set(("id", "request_info", "name", "age"))
107+
)
104108

105109
def test_omit_non_existant_field(self):
106110
rf = RequestFactory()
107111
request = rf.get("/api/v1/schools/1/?omit=pretend")
108112
serializer = TeacherSerializer(context={"request": request})
109113

110-
self.assertEqual(set(serializer.fields.keys()), set(("id", "request_info")))
114+
self.assertEqual(
115+
set(serializer.fields.keys()), set(("id", "request_info", "name", "age"))
116+
)
111117

112118
def test_as_nested_serializer(self):
113119
"""
@@ -135,12 +141,16 @@ def test_as_nested_serializer(self):
135141
[
136142
("id", teachers[0].id),
137143
("request_info", request_info.format(teachers[0].id)),
144+
("age", teachers[0].age),
145+
("name", teachers[0].name),
138146
]
139147
),
140148
OrderedDict(
141149
[
142150
("id", teachers[1].id),
143151
("request_info", request_info.format(teachers[1].id)),
152+
("age", teachers[1].age),
153+
("name", teachers[1].name),
144154
]
145155
),
146156
],

0 commit comments

Comments
 (0)