@@ -182,6 +182,62 @@ def test_get_export_resource_kwargs_calls_self_get_resource_kwargs(self):
182
182
admin .get_export_resource_kwargs (self .request )
183
183
self .assertEqual (1 , admin .call_count )
184
184
185
+ class BaseModelResourceClassTest (mixins .BaseImportMixin , mixins .BaseExportMixin ):
186
+ resource_class = resources .Resource
187
+ export_call_count = 0
188
+ import_call_count = 0
189
+
190
+ def get_export_resource_class (self ):
191
+ self .export_call_count += 1
192
+
193
+ def get_import_resource_class (self ):
194
+ self .import_call_count += 1
195
+
196
+ def test_deprecated_resource_class_raises_warning (self ):
197
+ """Test that the mixin throws error if user didn't
198
+ migrate to resource_classes"""
199
+ admin = self .BaseModelResourceClassTest ()
200
+ with self .assertWarnsRegex (
201
+ DeprecationWarning ,
202
+ r"^The 'get_export_resource_class\(\)' method has been deprecated. "
203
+ r"Please implement the new 'get_export_resource_classes\(\)' method$" ,
204
+ ):
205
+ admin .get_export_resource_classes (self .request )
206
+
207
+ with self .assertWarnsRegex (
208
+ DeprecationWarning ,
209
+ r"^The 'get_import_resource_class\(\)' method has been deprecated. "
210
+ r"Please implement the new 'get_import_resource_classes\(\)' method$" ,
211
+ ):
212
+ admin .get_import_resource_classes (self .request )
213
+
214
+ with self .assertWarnsRegex (
215
+ DeprecationWarning ,
216
+ r"^The 'resource_class' field has been deprecated. "
217
+ r"Please implement the new 'resource_classes' field$" ,
218
+ ):
219
+ self .assertEqual (
220
+ admin .get_resource_classes (self .request ), [resources .Resource ]
221
+ )
222
+
223
+ self .assertEqual (1 , admin .export_call_count )
224
+ self .assertEqual (1 , admin .import_call_count )
225
+
226
+ class BaseModelGetExportResourceClassTest (mixins .BaseExportMixin ):
227
+ def get_resource_class (self ):
228
+ pass
229
+
230
+ def test_deprecated_get_resource_class_raises_warning (self ):
231
+ """Test that the mixin throws error if user
232
+ didn't migrate to resource_classes"""
233
+ admin = self .BaseModelGetExportResourceClassTest ()
234
+ with self .assertWarnsRegex (
235
+ DeprecationWarning ,
236
+ r"^The 'get_resource_class\(\)' method has been deprecated. "
237
+ r"Please implement the new 'get_resource_classes\(\)' method$" ,
238
+ ):
239
+ admin .get_resource_classes (self .request )
240
+
185
241
class BaseModelAdminFaultyResourceClassesTest (mixins .BaseExportMixin ):
186
242
resource_classes = resources .Resource
187
243
@@ -199,6 +255,14 @@ class BaseModelAdminBothResourceTest(mixins.BaseExportMixin):
199
255
resource_class = resources .Resource
200
256
resource_classes = [resources .Resource ]
201
257
258
+ def test_both_resource_class_raises_exception (self ):
259
+ """Test fallback mechanism to old get_export_resource_class() method"""
260
+ admin = self .BaseModelAdminBothResourceTest ()
261
+ with self .assertRaisesRegex (
262
+ Exception , "Only one of 'resource_class' and 'resource_classes' can be set"
263
+ ):
264
+ admin .get_export_resource_classes (self .request )
265
+
202
266
class BaseModelExportChooseTest (mixins .BaseExportMixin ):
203
267
resource_classes = [resources .Resource , FooResource ]
204
268
@@ -231,6 +295,34 @@ def test_choose_import_resource_class(self, form):
231
295
form .cleaned_data = {"resource" : 1 }
232
296
self .assertEqual (admin .choose_import_resource_class (form , request ), FooResource )
233
297
298
+ class BaseModelResourceClassOldTest (mixins .BaseImportMixin , mixins .BaseExportMixin ):
299
+ def get_resource_class (self ):
300
+ return FooResource
301
+
302
+ def test_get_resource_class_old (self ):
303
+ """
304
+ Test that if only the old get_resource_class() method is defined,
305
+ the get_export_resource_classes() and get_import_resource_classes()
306
+ still return list of resources.
307
+ """
308
+ admin = self .BaseModelResourceClassOldTest ()
309
+ with self .assertWarnsRegex (
310
+ DeprecationWarning ,
311
+ r"^The 'get_resource_class\(\)' method has been deprecated. "
312
+ r"Please implement the new 'get_resource_classes\(\)' method$" ,
313
+ ):
314
+ self .assertEqual (
315
+ admin .get_export_resource_classes (self .request ), [FooResource ]
316
+ )
317
+ with self .assertWarnsRegex (
318
+ DeprecationWarning ,
319
+ r"^The 'get_resource_class\(\)' method has been deprecated. "
320
+ r"Please implement the new 'get_resource_classes\(\)' method$" ,
321
+ ):
322
+ self .assertEqual (
323
+ admin .get_import_resource_classes (self .request ), [FooResource ]
324
+ )
325
+
234
326
235
327
class BaseExportMixinTest (TestCase ):
236
328
class TestBaseExportMixin (mixins .BaseExportMixin ):
0 commit comments