Improve source tests layout
Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
34
mayan/apps/sources/tests/mixins.py
Normal file
34
mayan/apps/sources/tests/mixins.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from ..literals import SOURCE_CHOICE_WEB_FORM
|
||||
from ..models import WebFormSource
|
||||
|
||||
from .literals import TEST_SOURCE_LABEL, TEST_SOURCE_UNCOMPRESS_N
|
||||
|
||||
|
||||
class SourceTestMixin(object):
|
||||
def _create_test_source(self):
|
||||
self.test_source = WebFormSource.objects.create(
|
||||
enabled=True, label=TEST_SOURCE_LABEL,
|
||||
uncompress=TEST_SOURCE_UNCOMPRESS_N
|
||||
)
|
||||
|
||||
|
||||
class SourceViewTestMixin(object):
|
||||
def _request_setup_source_list_view(self):
|
||||
return self.get(viewname='sources:setup_source_list')
|
||||
|
||||
def _request_setup_source_create_view(self):
|
||||
return self.post(
|
||||
kwargs={'source_type': SOURCE_CHOICE_WEB_FORM},
|
||||
viewname='sources:setup_source_create', data={
|
||||
'enabled': True, 'label': TEST_SOURCE_LABEL,
|
||||
'uncompress': TEST_SOURCE_UNCOMPRESS_N
|
||||
}
|
||||
)
|
||||
|
||||
def _request_setup_source_delete_view(self):
|
||||
return self.post(
|
||||
viewname='sources:setup_source_delete',
|
||||
kwargs={'pk': self.test_source.pk}
|
||||
)
|
||||
@@ -28,7 +28,6 @@ from mayan.apps.storage.utils import mkdtemp
|
||||
from ..literals import SOURCE_UNCOMPRESS_CHOICE_Y
|
||||
from ..models.email_sources import EmailBaseModel, IMAPEmail, POP3Email
|
||||
from ..models.watch_folder_sources import WatchFolderSource
|
||||
from ..models.webform_sources import WebFormSource
|
||||
|
||||
from .literals import (
|
||||
TEST_EMAIL_ATTACHMENT_AND_INLINE, TEST_EMAIL_BASE64_FILENAME,
|
||||
@@ -37,21 +36,24 @@ from .literals import (
|
||||
TEST_EMAIL_NO_CONTENT_TYPE_STRING, TEST_EMAIL_ZERO_LENGTH_ATTACHMENT,
|
||||
TEST_WATCHFOLDER_SUBFOLDER
|
||||
)
|
||||
from .mixins import SourceTestMixin
|
||||
|
||||
|
||||
class CompressedUploadsTestCase(GenericDocumentTestCase):
|
||||
class CompressedUploadsTestCase(SourceTestMixin, GenericDocumentTestCase):
|
||||
auto_upload_document = False
|
||||
|
||||
def test_upload_compressed_file(self):
|
||||
source = WebFormSource(
|
||||
label='test source', uncompress=SOURCE_UNCOMPRESS_CHOICE_Y
|
||||
)
|
||||
self._create_test_source()
|
||||
self.test_source.uncompress = SOURCE_UNCOMPRESS_CHOICE_Y
|
||||
self.test_source.save()
|
||||
|
||||
with open(TEST_COMPRESSED_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
source.handle_upload(
|
||||
self.test_source.handle_upload(
|
||||
document_type=self.test_document_type,
|
||||
file_object=file_object,
|
||||
expand=(source.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y)
|
||||
expand=(
|
||||
self.test_source.uncompress == SOURCE_UNCOMPRESS_CHOICE_Y
|
||||
)
|
||||
)
|
||||
|
||||
self.assertEqual(Document.objects.count(), 2)
|
||||
|
||||
@@ -25,32 +25,42 @@ from ..permissions import (
|
||||
from .literals import (
|
||||
TEST_SOURCE_LABEL, TEST_SOURCE_UNCOMPRESS_N, TEST_STAGING_PREVIEW_WIDTH
|
||||
)
|
||||
from .mixins import SourceTestMixin, SourceViewTestMixin
|
||||
|
||||
|
||||
class DocumentUploadTestCase(GenericDocumentViewTestCase):
|
||||
auto_upload_document = False
|
||||
|
||||
def setUp(self):
|
||||
super(DocumentUploadTestCase, self).setUp()
|
||||
self.source = WebFormSource.objects.create(
|
||||
enabled=True, label=TEST_SOURCE_LABEL,
|
||||
uncompress=TEST_SOURCE_UNCOMPRESS_N
|
||||
)
|
||||
|
||||
class DocumentUploadWizardViewTestMixin(object):
|
||||
def _request_upload_wizard_view(self, document_path=TEST_SMALL_DOCUMENT_PATH):
|
||||
with open(document_path, mode='rb') as file_object:
|
||||
return self.post(
|
||||
viewname='sources:upload_interactive', kwargs={
|
||||
'source_id': self.source.pk
|
||||
'source_id': self.test_source.pk
|
||||
}, data={
|
||||
'source-file': file_object,
|
||||
'document_type_id': self.test_document_type.pk,
|
||||
}
|
||||
)
|
||||
|
||||
def _request_upload_interactive_view(self):
|
||||
return self.get(
|
||||
viewname='sources:upload_interactive', data={
|
||||
'document_type_id': self.test_document_type.pk,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
class DocumentUploadWizardViewTestCase(
|
||||
SourceTestMixin, DocumentUploadWizardViewTestMixin,
|
||||
GenericDocumentViewTestCase
|
||||
):
|
||||
auto_upload_document = False
|
||||
|
||||
def setUp(self):
|
||||
super(DocumentUploadWizardViewTestCase, self).setUp()
|
||||
self._create_test_source()
|
||||
|
||||
def test_upload_compressed_file(self):
|
||||
self.source.uncompress = SOURCE_UNCOMPRESS_CHOICE_Y
|
||||
self.source.save()
|
||||
self.test_source.uncompress = SOURCE_UNCOMPRESS_CHOICE_Y
|
||||
self.test_source.save()
|
||||
|
||||
self.grant_access(
|
||||
obj=self.test_document_type, permission=permission_document_create
|
||||
@@ -104,7 +114,7 @@ class DocumentUploadTestCase(GenericDocumentViewTestCase):
|
||||
with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
|
||||
response = self.post(
|
||||
viewname='sources:upload_interactive', kwargs={
|
||||
'source_id': self.source.pk
|
||||
'source_id': self.test_source.pk
|
||||
}, data={
|
||||
'source-file': file_object,
|
||||
'document_type_id': self.test_document_type.pk,
|
||||
@@ -114,13 +124,6 @@ class DocumentUploadTestCase(GenericDocumentViewTestCase):
|
||||
|
||||
self.assertEqual(Document.objects.count(), 1)
|
||||
|
||||
def _request_upload_interactive_view(self):
|
||||
return self.get(
|
||||
viewname='sources:upload_interactive', data={
|
||||
'document_type_id': self.test_document_type.pk,
|
||||
}
|
||||
)
|
||||
|
||||
def test_upload_interactive_view_no_permission(self):
|
||||
response = self._request_upload_interactive_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
@@ -131,7 +134,7 @@ class DocumentUploadTestCase(GenericDocumentViewTestCase):
|
||||
)
|
||||
response = self._request_upload_interactive_view()
|
||||
self.assertContains(
|
||||
response=response, text=self.source.label, status_code=200
|
||||
response=response, text=self.test_source.label, status_code=200
|
||||
)
|
||||
|
||||
|
||||
@@ -229,7 +232,19 @@ class NewDocumentVersionViewTestCase(GenericDocumentViewTestCase):
|
||||
self.assertEqual(resolved_link, None)
|
||||
|
||||
|
||||
class StagingFolderViewTestCase(GenericViewTestCase):
|
||||
class StagingFolderViewTestMixin(object):
|
||||
def _request_staging_file_delete_view(self, staging_folder, staging_file):
|
||||
return self.post(
|
||||
viewname='sources:staging_file_delete', kwargs={
|
||||
'pk': staging_folder.pk,
|
||||
'encoded_filename': staging_file.encoded_filename
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
class StagingFolderViewTestCase(
|
||||
StagingFolderViewTestMixin, GenericViewTestCase
|
||||
):
|
||||
def setUp(self):
|
||||
super(StagingFolderViewTestCase, self).setUp()
|
||||
self.temporary_directory = mkdtemp()
|
||||
@@ -241,14 +256,6 @@ class StagingFolderViewTestCase(GenericViewTestCase):
|
||||
fs_cleanup(self.temporary_directory)
|
||||
super(StagingFolderViewTestCase, self).tearDown()
|
||||
|
||||
def _request_staging_file_delete_view(self, staging_folder, staging_file):
|
||||
return self.post(
|
||||
viewname='sources:staging_file_delete', kwargs={
|
||||
'pk': staging_folder.pk,
|
||||
'encoded_filename': staging_file.encoded_filename
|
||||
}
|
||||
)
|
||||
|
||||
def test_staging_file_delete_no_permission(self):
|
||||
staging_folder = StagingFolderSource.objects.create(
|
||||
label=TEST_SOURCE_LABEL,
|
||||
@@ -290,44 +297,10 @@ class StagingFolderViewTestCase(GenericViewTestCase):
|
||||
self.assertEqual(len(list(staging_folder.get_files())), 0)
|
||||
|
||||
|
||||
class SourcesTestCase(GenericDocumentViewTestCase):
|
||||
def _create_web_source(self):
|
||||
self.source = WebFormSource.objects.create(
|
||||
enabled=True, label=TEST_SOURCE_LABEL,
|
||||
uncompress=TEST_SOURCE_UNCOMPRESS_N
|
||||
)
|
||||
|
||||
def _request_setup_source_list_view(self):
|
||||
return self.get(viewname='sources:setup_source_list')
|
||||
|
||||
def test_source_list_view_no_permission(self):
|
||||
self._create_web_source()
|
||||
|
||||
response = self._request_setup_source_list_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_source_list_view_with_permission(self):
|
||||
self._create_web_source()
|
||||
|
||||
self.grant_permission(permission=permission_sources_setup_view)
|
||||
|
||||
response = self._request_setup_source_list_view()
|
||||
self.assertContains(
|
||||
response=response, text=self.source.label, status_code=200
|
||||
)
|
||||
|
||||
def _request_setup_source_create_view(self):
|
||||
return self.post(
|
||||
kwargs={'source_type': SOURCE_CHOICE_WEB_FORM},
|
||||
viewname='sources:setup_source_create', data={
|
||||
'enabled': True, 'label': TEST_SOURCE_LABEL,
|
||||
'uncompress': TEST_SOURCE_UNCOMPRESS_N
|
||||
}
|
||||
)
|
||||
|
||||
class SourcesViewTestCase(
|
||||
SourceTestMixin, SourceViewTestMixin, GenericViewTestCase
|
||||
):
|
||||
def test_source_create_view_no_permission(self):
|
||||
self.grant_permission(permission=permission_sources_setup_view)
|
||||
|
||||
response = self._request_setup_source_create_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
@@ -335,7 +308,6 @@ class SourcesTestCase(GenericDocumentViewTestCase):
|
||||
|
||||
def test_source_create_view_with_permission(self):
|
||||
self.grant_permission(permission=permission_sources_setup_create)
|
||||
self.grant_permission(permission=permission_sources_setup_view)
|
||||
|
||||
response = self._request_setup_source_create_view()
|
||||
self.assertEqual(response.status_code, 302)
|
||||
@@ -344,17 +316,10 @@ class SourcesTestCase(GenericDocumentViewTestCase):
|
||||
self.assertEqual(webform_source.label, TEST_SOURCE_LABEL)
|
||||
self.assertEqual(webform_source.uncompress, TEST_SOURCE_UNCOMPRESS_N)
|
||||
|
||||
def _request_setup_source_delete_view(self):
|
||||
return self.post(
|
||||
viewname='sources:setup_source_delete',
|
||||
kwargs={'pk': self.source.pk}
|
||||
)
|
||||
|
||||
def test_source_delete_view_with_permission(self):
|
||||
self._create_web_source()
|
||||
self._create_test_source()
|
||||
|
||||
self.grant_permission(permission=permission_sources_setup_delete)
|
||||
self.grant_permission(permission=permission_sources_setup_view)
|
||||
|
||||
response = self._request_setup_source_delete_view()
|
||||
self.assertEqual(response.status_code, 302)
|
||||
@@ -362,11 +327,25 @@ class SourcesTestCase(GenericDocumentViewTestCase):
|
||||
self.assertEqual(WebFormSource.objects.count(), 0)
|
||||
|
||||
def test_source_delete_view_no_permission(self):
|
||||
self._create_web_source()
|
||||
|
||||
self.grant_permission(permission=permission_sources_setup_view)
|
||||
self._create_test_source()
|
||||
|
||||
response = self._request_setup_source_delete_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
self.assertEqual(WebFormSource.objects.count(), 1)
|
||||
|
||||
def test_source_list_view_no_permission(self):
|
||||
self._create_test_source()
|
||||
|
||||
response = self._request_setup_source_list_view()
|
||||
self.assertEqual(response.status_code, 403)
|
||||
|
||||
def test_source_list_view_with_permission(self):
|
||||
self._create_test_source()
|
||||
|
||||
self.grant_permission(permission=permission_sources_setup_view)
|
||||
|
||||
response = self._request_setup_source_list_view()
|
||||
self.assertContains(
|
||||
response=response, text=self.test_source.label, status_code=200
|
||||
)
|
||||
|
||||
@@ -215,6 +215,7 @@ class UploadInteractiveView(UploadBaseView):
|
||||
UploadInteractiveView, self
|
||||
).dispatch(request, *args, **kwargs)
|
||||
except Exception as exception:
|
||||
raise
|
||||
if request.is_ajax():
|
||||
return JsonResponse(
|
||||
data={'error': force_text(exception)}, status=500
|
||||
|
||||
Reference in New Issue
Block a user