@@ -61,6 +61,21 @@ def test_serializer_class_not_provided(self):
6161 ),
6262 )
6363
64+ def test_get_serializer_class_override_provided (self ):
65+ class GetSerializerClassView (generics .GenericAPIView ):
66+ def get_serializer_class (self ):
67+ return OrderedMealDetailsSerializer
68+
69+ self .assertEqual (
70+ GetSerializerClassView ().get_serializer_class (), OrderedMealDetailsSerializer
71+ )
72+ self .assertEqual (
73+ GetSerializerClassView ().get_read_serializer_class (), OrderedMealDetailsSerializer
74+ )
75+ self .assertEqual (
76+ GetSerializerClassView ().get_write_serializer_class (), OrderedMealDetailsSerializer
77+ )
78+
6479 def test_no_request_provided (self ):
6580 # Return serializer_class over read_serializer_class and write_serializer_class
6681 self .assertEqual (
@@ -108,18 +123,37 @@ def test_non_read_write_request_method_provided(self):
108123 self .FullSerializerView ().get_serializer_class (), OrderedMealDetailsSerializer
109124 )
110125
126+ def test_all_get_serializer_class_override_provided (self ):
127+ class GetSerializerClassView (generics .GenericAPIView ):
128+ def get_serializer_class (self ):
129+ return OrderedMealDetailsSerializer
130+
131+ def get_read_serializer_class (self , default_to_serializer_class : bool = False ):
132+ return OrderListSerializer
133+
134+ def get_write_serializer_class (self , default_to_serializer_class : bool = False ):
135+ return OrderCreateSerializer
136+
137+ self .assertEqual (
138+ GetSerializerClassView ().get_serializer_class (), OrderedMealDetailsSerializer
139+ )
140+ self .assertEqual (GetSerializerClassView ().get_read_serializer_class (), OrderListSerializer )
141+ self .assertEqual (
142+ GetSerializerClassView ().get_write_serializer_class (), OrderCreateSerializer
143+ )
144+
111145
112146class GenericAPIViewGetReadSerializerClassTests (BaseTestCase ):
113147 def test_read_serializer_class_not_provided (self ):
114148 class NoReadSerializerView (generics .GenericAPIView ):
115149 pass
116150
117151 with mock .patch .object (
118- NoReadSerializerView , "_get_serializer_class "
119- ) as mock__get_serializer_class :
152+ NoReadSerializerView , "get_serializer_class "
153+ ) as mock_get_serializer_class :
120154 NoReadSerializerView ().get_read_serializer_class ()
121155
122- mock__get_serializer_class .assert_called_once ()
156+ mock_get_serializer_class .assert_called_once ()
123157
124158 def test_read_serializer_class_provided (self ):
125159 class ReadSerializerClassProvided (generics .GenericAPIView ):
@@ -130,18 +164,43 @@ class ReadSerializerClassProvided(generics.GenericAPIView):
130164 OrderListSerializer ,
131165 )
132166
167+ def test_use_serializer_class_fallback (self ):
168+ class SerializerClassView (generics .GenericAPIView ):
169+ serializer_class = OrderedMealDetailsSerializer
170+
171+ self .assertEqual (
172+ SerializerClassView ().get_read_serializer_class (default_to_serializer_class = True ),
173+ OrderedMealDetailsSerializer ,
174+ )
175+
176+ with mock .patch .object (
177+ SerializerClassView , "get_serializer_class"
178+ ) as mock_get_serializer_class :
179+ SerializerClassView ().get_read_serializer_class (default_to_serializer_class = False )
180+
181+ mock_get_serializer_class .assert_called_once ()
182+
183+ def test_get_read_serializer_class_override_provided (self ):
184+ class GetReadSerializerClassView (generics .GenericAPIView ):
185+ def get_read_serializer_class (self , default_to_serializer_class : bool = False ):
186+ return OrderListSerializer
187+
188+ self .assertEqual (
189+ GetReadSerializerClassView ().get_read_serializer_class (), OrderListSerializer
190+ )
191+
133192
134193class GenericAPIViewGetWriteSerializerClassTests (BaseTestCase ):
135194 def test_write_serializer_class_not_provided (self ):
136195 class NoWriteSerializerView (generics .GenericAPIView ):
137196 pass
138197
139198 with mock .patch .object (
140- NoWriteSerializerView , "_get_serializer_class "
141- ) as mock__get_serializer_class :
199+ NoWriteSerializerView , "get_serializer_class "
200+ ) as mock_get_serializer_class :
142201 NoWriteSerializerView ().get_write_serializer_class ()
143202
144- mock__get_serializer_class .assert_called_once ()
203+ mock_get_serializer_class .assert_called_once ()
145204
146205 def test_write_serializer_class_provided (self ):
147206 class WriteSerializerClassProvided (generics .GenericAPIView ):
@@ -152,6 +211,31 @@ class WriteSerializerClassProvided(generics.GenericAPIView):
152211 OrderCreateSerializer ,
153212 )
154213
214+ def test_use_serializer_class_fallback (self ):
215+ class SerializerClassView (generics .GenericAPIView ):
216+ serializer_class = OrderedMealDetailsSerializer
217+
218+ self .assertEqual (
219+ SerializerClassView ().get_write_serializer_class (default_to_serializer_class = True ),
220+ OrderedMealDetailsSerializer ,
221+ )
222+
223+ with mock .patch .object (
224+ SerializerClassView , "get_serializer_class"
225+ ) as mock_get_serializer_class :
226+ SerializerClassView ().get_write_serializer_class (default_to_serializer_class = False )
227+
228+ mock_get_serializer_class .assert_called_once ()
229+
230+ def test_get_write_serializer_class_override_provided (self ):
231+ class GetWriteSerializerClassView (generics .GenericAPIView ):
232+ def get_write_serializer_class (self , default_to_serializer_class : bool = False ):
233+ return OrderCreateSerializer
234+
235+ self .assertEqual (
236+ GetWriteSerializerClassView ().get_write_serializer_class (), OrderCreateSerializer
237+ )
238+
155239
156240class OrderListCreateEndpointTests (BaseTestCase , TestListRequestSuccess , TestCreateRequestSuccess ):
157241 def setUp (self ):
0 commit comments