Split document.tests.test_views.

Signed-off-by: Michael Price <loneviking72@gmail.com>
This commit is contained in:
Michael Price
2018-03-13 03:03:33 -04:00
committed by Roberto Rosario
parent 77777deec5
commit 96836065a8
30 changed files with 622 additions and 559 deletions

View File

@@ -41,6 +41,10 @@ Next (2018-XX-XX)
- Update to Fancybox 3.
- Update to jQuery 3.3.1
- Move transfomations to their own module.
- Split documents.tests.test_views into base.py, test_deleted_document_views.py,
test_document_page_views.py, test_document_type_views.py, test_document_version_views.py,
test_document_views.py, test_duplicated_document_views.py
2.8 (2018-02-27)
================

View File

@@ -49,7 +49,7 @@ Caching
Converter
~~~~~~~~~
- Move converter transformations to their own module.
- Move converter transformations to their own module. [DONE]
Documents
@@ -172,7 +172,7 @@ Testing
- Update all API tests using self.client to just self. and the HTTP method.
- Add test for searches for each app that uses search.
- Split documents.tests.test_views into test_document_views test_pages_views, etc.
The module is too big.
The module is too big. [DONE]
UI - Frontend
~~~~~~~~~~~~~

View File

@@ -3,7 +3,7 @@ from __future__ import unicode_literals
from django.contrib.contenttypes.models import ContentType
from django.urls import reverse
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import GenericDocumentViewTestCase
from ..links import (
link_acl_delete, link_acl_list, link_acl_create, link_acl_permissions

View File

@@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals
from django.contrib.contenttypes.models import ContentType
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import GenericDocumentViewTestCase
from ..models import AccessControlList
from ..permissions import permission_acl_edit, permission_acl_view

View File

@@ -1,6 +1,6 @@
from __future__ import absolute_import, unicode_literals
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import GenericDocumentViewTestCase
from ..models import Cabinet
from ..permissions import (

View File

@@ -6,7 +6,7 @@ import logging
from django.utils.timezone import now
from common.literals import TIME_DELTA_UNIT_DAYS
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import GenericDocumentViewTestCase
from sources.links import link_upload_version
from user_management.tests import (
TEST_USER_PASSWORD, TEST_USER_USERNAME, TEST_ADMIN_PASSWORD,

View File

@@ -2,7 +2,7 @@ from __future__ import unicode_literals
from django.contrib.contenttypes.models import ContentType
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import GenericDocumentViewTestCase
from ..models import Transformation
from ..permissions import (

View File

@@ -1,6 +1,6 @@
from __future__ import absolute_import, unicode_literals
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import GenericDocumentViewTestCase
from ..models import Index
from ..permissions import (

View File

@@ -1,7 +1,8 @@
from __future__ import unicode_literals
from documents.tests.literals import TEST_DOCUMENT_FILENAME
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import (
GenericDocumentViewTestCase, TEST_DOCUMENT_FILENAME
)
from ..permissions import permission_content_view
from ..utils import get_document_content

View File

@@ -3,8 +3,9 @@ from __future__ import unicode_literals
from django.core.files import File
from django.urls import reverse
from documents.tests.literals import TEST_DOCUMENT_PATH
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import (
GenericDocumentViewTestCase, TEST_DOCUMENT_PATH
)
from ..links import (
link_document_version_signature_delete,

View File

@@ -8,8 +8,9 @@ from django_downloadview.test import assert_download_response
from django_gpg.models import Key
from documents.models import DocumentVersion
from documents.tests.literals import TEST_DOCUMENT_PATH
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import (
GenericDocumentViewTestCase, TEST_DOCUMENT_PATH
)
from ..models import DetachedSignature, EmbeddedSignature
from ..permissions import (

View File

@@ -1,8 +1,9 @@
from __future__ import unicode_literals
from common.tests.test_views import GenericViewTestCase
from documents.tests.literals import TEST_SMALL_DOCUMENT_PATH
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import (
GenericDocumentViewTestCase, TEST_SMALL_DOCUMENT_PATH
)
from ..models import Workflow, WorkflowState, WorkflowTransition
from ..permissions import (

View File

@@ -1 +1,2 @@
from .base import GenericDocumentViewTestCase # NOQA
from .literals import * # NOQA

View File

@@ -0,0 +1,35 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.test import override_settings
from common.tests.test_views import GenericViewTestCase
from ..models import DocumentType
from .literals import (
TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_FILENAME,
TEST_SMALL_DOCUMENT_PATH,
)
@override_settings(OCR_AUTO_OCR=False)
class GenericDocumentViewTestCase(GenericViewTestCase):
test_document_filename = TEST_SMALL_DOCUMENT_FILENAME
def setUp(self):
super(GenericDocumentViewTestCase, self).setUp()
self.document_type = DocumentType.objects.create(
label=TEST_DOCUMENT_TYPE_LABEL
)
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
self.document = self.document_type.new_document(
file_object=file_object, label=self.test_document_filename
)
def tearDown(self):
if self.document_type.pk:
self.document_type.delete()
super(GenericDocumentViewTestCase, self).tearDown()

View File

@@ -0,0 +1,109 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from ..models import DeletedDocument, Document
from ..permissions import (
permission_document_delete, permission_document_restore,
permission_document_trash, permission_document_view
)
from .base import GenericDocumentViewTestCase
class DeletedDocumentTestCase(GenericDocumentViewTestCase):
def setUp(self):
super(DeletedDocumentTestCase, self).setUp()
self.login_user()
def test_document_restore_view_no_permission(self):
self.document.delete()
self.assertEqual(Document.objects.count(), 0)
response = self.post(
'documents:document_restore', args=(self.document.pk,)
)
self.assertEqual(response.status_code, 403)
self.assertEqual(DeletedDocument.objects.count(), 1)
self.assertEqual(Document.objects.count(), 0)
def test_document_restore_view_with_access(self):
self.document.delete()
self.assertEqual(Document.objects.count(), 0)
self.grant_access(
obj=self.document, permission=permission_document_restore
)
response = self.post(
'documents:document_restore', args=(self.document.pk,),
)
self.assertEqual(response.status_code, 302)
self.assertEqual(DeletedDocument.objects.count(), 0)
self.assertEqual(Document.objects.count(), 1)
def test_document_trash_no_permissions(self):
response = self.post(
'documents:document_trash', args=(self.document.pk,)
)
self.assertEqual(response.status_code, 403)
self.assertEqual(DeletedDocument.objects.count(), 0)
self.assertEqual(Document.objects.count(), 1)
def test_document_trash_with_access(self):
self.grant_access(
obj=self.document, permission=permission_document_trash
)
response = self.post(
'documents:document_trash', args=(self.document.pk,),
)
self.assertEqual(response.status_code, 302)
self.assertEqual(DeletedDocument.objects.count(), 1)
self.assertEqual(Document.objects.count(), 0)
def test_document_delete_no_permissions(self):
self.document.delete()
self.assertEqual(Document.objects.count(), 0)
self.assertEqual(DeletedDocument.objects.count(), 1)
response = self.post(
'documents:document_delete', args=(self.document.pk,),
)
self.assertEqual(response.status_code, 403)
self.assertEqual(Document.objects.count(), 0)
self.assertEqual(DeletedDocument.objects.count(), 1)
def test_document_delete_with_access(self):
self.document.delete()
self.assertEqual(Document.objects.count(), 0)
self.assertEqual(DeletedDocument.objects.count(), 1)
self.grant_access(
obj=self.document, permission=permission_document_delete
)
response = self.post(
'documents:document_delete', args=(self.document.pk,),
)
self.assertEqual(response.status_code, 302)
self.assertEqual(DeletedDocument.objects.count(), 0)
self.assertEqual(Document.objects.count(), 0)
def test_deleted_document_list_view_no_permissions(self):
self.document.delete()
response = self.get('documents:document_list_deleted')
self.assertNotContains(response, self.document.label, status_code=200)
def test_deleted_document_list_view_with_access(self):
self.document.delete()
self.grant_access(
obj=self.document, permission=permission_document_view
)
response = self.get('documents:document_list_deleted')
self.assertContains(response, self.document.label, status_code=200)

View File

@@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from ..permissions import permission_document_view
from .base import GenericDocumentViewTestCase
class DocumentPageViewTestCase(GenericDocumentViewTestCase):
def setUp(self):
super(DocumentPageViewTestCase, self).setUp()
self.login_user()
def _document_page_list_view(self):
return self.get(
'documents:document_pages', args=(self.document.pk,)
)
def test_document_page_list_view_no_permission(self):
response = self._document_page_list_view()
self.assertEqual(response.status_code, 403)
def test_document_page_list_view_with_access(self):
self.grant_access(
obj=self.document, permission=permission_document_view
)
response = self._document_page_list_view()
self.assertContains(
response, text=self.document.label, status_code=200
)

View File

@@ -0,0 +1,244 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from ..literals import (
DEFAULT_DELETE_PERIOD, DEFAULT_DELETE_TIME_UNIT
)
from ..models import Document, DocumentType
from ..permissions import (
permission_document_type_create, permission_document_type_delete,
permission_document_type_edit, permission_document_type_view,
)
from .base import GenericDocumentViewTestCase
from .literals import (
TEST_DOCUMENT_TYPE_LABEL, TEST_DOCUMENT_TYPE_LABEL_EDITED,
TEST_DOCUMENT_TYPE_QUICK_LABEL, TEST_DOCUMENT_TYPE_QUICK_LABEL_EDITED
)
class DocumentTypeViewsTestCase(GenericDocumentViewTestCase):
def setUp(self):
super(DocumentTypeViewsTestCase, self).setUp()
self.login_user()
def _request_document_type_create(self):
return self.post(
'documents:document_type_create',
data={
'label': TEST_DOCUMENT_TYPE_LABEL,
'delete_time_period': DEFAULT_DELETE_PERIOD,
'delete_time_unit': DEFAULT_DELETE_TIME_UNIT
}, follow=True
)
def test_document_type_create_view_no_permission(self):
self.document_type.delete()
self.assertEqual(Document.objects.count(), 0)
# Grant the document type view permission so that the post create
# redirect works
self.grant_permission(permission=permission_document_type_view)
self._request_document_type_create()
self.assertEqual(DocumentType.objects.count(), 0)
def test_document_type_create_view_with_permission(self):
self.document_type.delete()
self.assertEqual(Document.objects.count(), 0)
self.grant_permission(permission=permission_document_type_create)
# Grant the document type view permission so that the post create
# redirect works
self.grant_permission(permission=permission_document_type_view)
response = self._request_document_type_create()
self.assertContains(response, text='successfully', status_code=200)
self.assertEqual(DocumentType.objects.count(), 1)
self.assertEqual(
DocumentType.objects.first().label, TEST_DOCUMENT_TYPE_LABEL
)
def _request_document_type_delete(self):
return self.post(
'documents:document_type_delete',
args=(self.document_type.pk,), follow=True
)
def test_document_type_delete_view_no_permission(self):
# Grant the document type view permission so that the post delete
# redirect works
self.grant_permission(permission=permission_document_type_view)
self._request_document_type_delete()
self.assertEqual(DocumentType.objects.count(), 1)
def test_document_type_delete_view_with_access(self):
self.grant_access(
obj=self.document_type, permission=permission_document_type_delete
)
# Grant the document type view permission so that the post delete
# redirect works
self.grant_permission(permission=permission_document_type_view)
response = self._request_document_type_delete()
self.assertContains(response, 'successfully', status_code=200)
self.assertEqual(DocumentType.objects.count(), 0)
def _request_document_type_edit(self):
return self.post(
'documents:document_type_edit',
args=(self.document_type.pk,),
data={
'label': TEST_DOCUMENT_TYPE_LABEL_EDITED,
'delete_time_period': DEFAULT_DELETE_PERIOD,
'delete_time_unit': DEFAULT_DELETE_TIME_UNIT
}, follow=True
)
def test_document_type_edit_view_no_permission(self):
self._request_document_type_edit()
self.assertEqual(
DocumentType.objects.get(pk=self.document_type.pk).label,
TEST_DOCUMENT_TYPE_LABEL
)
def test_document_type_edit_view_with_access(self):
self.grant_access(
obj=self.document_type, permission=permission_document_type_edit
)
# Grant the document type view permission so that the post delete
# redirect works
self.grant_permission(permission=permission_document_type_view)
response = self._request_document_type_edit()
self.assertContains(response, 'successfully', status_code=200)
self.assertEqual(
DocumentType.objects.get(pk=self.document_type.pk).label,
TEST_DOCUMENT_TYPE_LABEL_EDITED
)
def _request_quick_label_create(self):
return self.post(
'documents:document_type_filename_create',
args=(self.document_type.pk,),
data={
'filename': TEST_DOCUMENT_TYPE_QUICK_LABEL,
}
)
def test_document_type_quick_label_create_no_permission(self):
self.grant_access(
obj=self.document_type, permission=permission_document_type_view
)
response = self._request_quick_label_create()
self.assertEqual(response.status_code, 403)
self.assertEqual(self.document_type.filenames.count(), 0)
def test_document_type_quick_label_create_with_access(self):
self.grant_access(
obj=self.document_type, permission=permission_document_type_view
)
self.grant_access(
obj=self.document_type, permission=permission_document_type_edit
)
response = self._request_quick_label_create()
self.assertEqual(response.status_code, 302)
self.assertEqual(self.document_type.filenames.count(), 1)
def _create_quick_label(self):
self.document_type_filename = self.document_type.filenames.create(
filename=TEST_DOCUMENT_TYPE_QUICK_LABEL
)
def _request_quick_label_edit(self):
return self.post(
'documents:document_type_filename_edit',
args=(self.document_type_filename.pk,),
data={
'filename': TEST_DOCUMENT_TYPE_QUICK_LABEL_EDITED,
}, follow=True
)
def test_document_type_quick_label_edit_no_permission(self):
self._create_quick_label()
self.grant_access(
obj=self.document_type, permission=permission_document_type_view
)
response = self._request_quick_label_edit()
self.assertEqual(response.status_code, 403)
self.assertEqual(
self.document_type_filename.filename,
TEST_DOCUMENT_TYPE_QUICK_LABEL
)
def test_document_type_quick_label_edit_with_access(self):
self.grant_access(
obj=self.document_type, permission=permission_document_type_edit
)
self.grant_access(
obj=self.document_type, permission=permission_document_type_view
)
self._create_quick_label()
response = self._request_quick_label_edit()
self.assertEqual(response.status_code, 200)
self.document_type_filename.refresh_from_db()
self.assertEqual(
self.document_type_filename.filename,
TEST_DOCUMENT_TYPE_QUICK_LABEL_EDITED
)
def _request_quick_label_delete(self):
return self.post(
'documents:document_type_filename_delete',
args=(self.document_type_filename.pk,),
follow=True
)
def test_document_type_quick_label_delete_no_permission(self):
self._create_quick_label()
self.grant_access(
obj=self.document_type, permission=permission_document_type_view
)
self._request_quick_label_delete()
self.assertEqual(
self.document_type.filenames.count(), 1
)
self.assertEqual(
self.document_type.filenames.first().filename,
TEST_DOCUMENT_TYPE_QUICK_LABEL
)
def test_document_type_quick_label_delete_with_access(self):
self.grant_access(
obj=self.document_type, permission=permission_document_type_edit
)
self.grant_access(
obj=self.document_type, permission=permission_document_type_view
)
self._create_quick_label()
response = self._request_quick_label_delete()
self.assertEqual(response.status_code, 200)
self.assertEqual(
self.document_type.filenames.count(), 0
)

View File

@@ -0,0 +1,80 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from ..permissions import (
permission_document_version_revert, permission_document_version_view,
)
from .base import GenericDocumentViewTestCase
from .literals import (
TEST_SMALL_DOCUMENT_PATH, TEST_VERSION_COMMENT
)
class DocumentVersionTestCase(GenericDocumentViewTestCase):
def setUp(self):
super(DocumentVersionTestCase, self).setUp()
self.login_user()
def test_document_version_list_no_permission(self):
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
self.document.new_version(
comment=TEST_VERSION_COMMENT, file_object=file_object
)
response = self.get(
'documents:document_version_list', args=(self.document.pk,)
)
self.assertEqual(response.status_code, 403)
def test_document_version_list_with_access(self):
self.grant_access(
obj=self.document, permission=permission_document_version_view
)
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
self.document.new_version(
comment=TEST_VERSION_COMMENT, file_object=file_object
)
response = self.get(
'documents:document_version_list', args=(self.document.pk,)
)
self.assertContains(response, TEST_VERSION_COMMENT, status_code=200)
def test_document_version_revert_no_permission(self):
first_version = self.document.latest_version
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
self.document.new_version(
file_object=file_object
)
response = self.post(
'documents:document_version_revert', args=(first_version.pk,)
)
self.assertEqual(response.status_code, 403)
self.assertEqual(self.document.versions.count(), 2)
def test_document_version_revert_with_access(self):
first_version = self.document.latest_version
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
self.document.new_version(
file_object=file_object
)
self.grant_access(
obj=self.document, permission=permission_document_version_revert
)
response = self.post(
'documents:document_version_revert', args=(first_version.pk,),
)
self.assertEqual(response.status_code, 302)
self.assertEqual(self.document.versions.count(), 1)

View File

@@ -0,0 +1,74 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from ..permissions import permission_document_view
from .base import GenericDocumentViewTestCase
from .literals import (
TEST_SMALL_DOCUMENT_FILENAME, TEST_SMALL_DOCUMENT_PATH,
)
class DuplicatedDocumentsViewsTestCase(GenericDocumentViewTestCase):
def setUp(self):
super(DuplicatedDocumentsViewsTestCase, self).setUp()
self.login_user()
def _upload_duplicate_document(self):
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
self.document_duplicate = self.document_type.new_document(
file_object=file_object, label=TEST_SMALL_DOCUMENT_FILENAME
)
def _request_duplicated_document_list(self):
return self.get('documents:duplicated_document_list')
def _request_document_duplicates_list(self):
return self.get(
'documents:document_duplicates_list', args=(self.document.pk,)
)
def test_duplicated_document_list_no_permissions(self):
self._upload_duplicate_document()
response = self._request_duplicated_document_list()
self.assertNotContains(
response, text=self.document.label, status_code=200
)
def test_duplicated_document_list_with_access(self):
self._upload_duplicate_document()
self.grant_access(
obj=self.document, permission=permission_document_view
)
self.grant_access(
obj=self.document_duplicate,
permission=permission_document_view
)
response = self._request_duplicated_document_list()
self.assertContains(
response, text=self.document.label, status_code=200
)
def test_document_duplicates_list_no_permissions(self):
self._upload_duplicate_document()
response = self._request_document_duplicates_list()
self.assertEqual(response.status_code, 403)
def test_document_duplicates_list_with_access(self):
self._upload_duplicate_document()
self.grant_access(
obj=self.document, permission=permission_document_view
)
self.grant_access(
obj=self.document_duplicate,
permission=permission_document_view
)
response = self._request_document_duplicates_list()
self.assertContains(
response, text=self.document.label, status_code=200
)

View File

@@ -14,7 +14,7 @@ from ..permissions import (
permission_document_download, permission_document_view
)
from .test_views import GenericDocumentViewTestCase
from .base import GenericDocumentViewTestCase
TEST_DOCUMENT_TYPE_EDITED_LABEL = 'test document type edited label'

View File

@@ -17,8 +17,8 @@ from ..permissions import (
permission_document_version_revert
)
from .base import GenericDocumentViewTestCase
from .literals import TEST_SMALL_DOCUMENT_PATH
from .test_views import GenericDocumentViewTestCase
class DocumentsLinksTestCase(GenericDocumentViewTestCase):

View File

@@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals
from django.contrib.contenttypes.models import ContentType
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import GenericDocumentViewTestCase
from ..permissions import permission_events_view

View File

@@ -1,7 +1,7 @@
from __future__ import absolute_import, unicode_literals
from documents.permissions import permission_document_view
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import GenericDocumentViewTestCase
from ..models import SmartLink
from ..permissions import (

View File

@@ -2,7 +2,7 @@ from __future__ import unicode_literals
from django.core import mail
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import GenericDocumentViewTestCase
from ..models import UserMailer
from ..permissions import (

View File

@@ -7,10 +7,10 @@ from documents.models import DocumentType
from documents.permissions import (
permission_document_properties_edit, permission_document_view
)
from documents.tests.literals import (
TEST_DOCUMENT_TYPE_2_LABEL, TEST_SMALL_DOCUMENT_PATH
from documents.tests import (
GenericDocumentViewTestCase, TEST_DOCUMENT_TYPE_2_LABEL,
TEST_SMALL_DOCUMENT_PATH,
)
from documents.tests.test_views import GenericDocumentViewTestCase
from ..models import MetadataType
from ..permissions import (

View File

@@ -2,7 +2,7 @@ from __future__ import unicode_literals
from django.test import override_settings
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import GenericDocumentViewTestCase
from ..permissions import permission_ocr_content_view
from ..utils import get_document_ocr_content

View File

@@ -14,10 +14,10 @@ from common.utils import fs_cleanup, mkdtemp
from documents.models import Document, DocumentType
from documents.permissions import permission_document_create
from documents.tests import (
TEST_DOCUMENT_DESCRIPTION, TEST_DOCUMENT_TYPE_LABEL,
TEST_SMALL_DOCUMENT_CHECKSUM, TEST_SMALL_DOCUMENT_PATH
GenericDocumentViewTestCase, TEST_DOCUMENT_DESCRIPTION,
TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_CHECKSUM,
TEST_SMALL_DOCUMENT_PATH,
)
from documents.tests.test_views import GenericDocumentViewTestCase
from metadata.tests.literals import TEST_METADATA_VALUE_UNICODE
from metadata.tests.mixins import MetadataTypeMixin

View File

@@ -1,7 +1,7 @@
from __future__ import unicode_literals
from documents.permissions import permission_document_view
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import GenericDocumentViewTestCase
from ..models import Tag
from ..permissions import (

View File

@@ -4,7 +4,7 @@ from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from common.tests.test_views import GenericViewTestCase
from documents.tests.test_views import GenericDocumentViewTestCase
from documents.tests import GenericDocumentViewTestCase
from metadata.models import MetadataType
from metadata.permissions import permission_metadata_document_edit