|
46 | 46 | from creme.creme_core.utils.queries import QSerializer
|
47 | 47 | from creme.creme_core.utils.xlrd_utils import XlrdReader
|
48 | 48 |
|
| 49 | +from ...backends import export_backend_registry |
| 50 | +from ...backends.base import ExportBackend |
| 51 | +from ...core.exceptions import ConflictError |
49 | 52 | from .base import ViewsTestCase
|
50 | 53 |
|
51 | 54 |
|
| 55 | +class TestExportBackend(ExportBackend): |
| 56 | + id: str = 'test_backend_validator' |
| 57 | + verbose_name: str = 'test_backend_validator' |
| 58 | + help_text: str = 'test_backend_validator' |
| 59 | + |
| 60 | + def writerow(self, row): |
| 61 | + pass |
| 62 | + |
| 63 | + def validate(self, **kwargs): |
| 64 | + raise ConflictError("TestExportBackend.validate fail") |
| 65 | + |
| 66 | + |
52 | 67 | class MassExportViewsTestCase(ViewsTestCase):
|
53 | 68 | @classmethod
|
54 | 69 | def setUpClass(cls):
|
@@ -529,6 +544,14 @@ def test_extra_filter(self):
|
529 | 544 | # Error
|
530 | 545 | self.assertGET(400, self._build_contact_dl_url(extra_q='[123]'))
|
531 | 546 |
|
| 547 | + def test_backend_validator(self): |
| 548 | + self.login_as_root() |
| 549 | + self.assertIsNone(export_backend_registry.get_backend_class(TestExportBackend.id)) |
| 550 | + export_backend_registry._backend_classes[TestExportBackend.id] = TestExportBackend |
| 551 | + response = self.assertGET409(self._build_contact_dl_url(doc_type=TestExportBackend.id)) |
| 552 | + self.assertContains(response, 'TestExportBackend.validate fail', status_code=409) |
| 553 | + export_backend_registry._backend_classes = None |
| 554 | + |
532 | 555 | def test_list_view_export_with_filter01(self):
|
533 | 556 | # user = self.login()
|
534 | 557 | user = self.login_as_root_and_get()
|
|
0 commit comments