Reorganize common's base test class.

Signed-off-by: Michael Price <loneviking72@gmail.com>
This commit is contained in:
Michael Price
2018-03-13 15:21:24 -04:00
committed by Roberto Rosario
parent 4f5cf81212
commit 0a480066df
16 changed files with 109 additions and 105 deletions

View File

@@ -1,2 +1,2 @@
from .base import BaseTestCase # NOQA from .base import BaseTestCase, GenericViewTestCase # NOQA
from .decorators import skip_file_descriptor_check # NOQA from .decorators import skip_file_descriptor_check # NOQA

View File

@@ -1,12 +1,23 @@
from __future__ import absolute_import, unicode_literals from __future__ import absolute_import, unicode_literals
from django.conf.urls import url
from django.contrib.auth import get_user_model
from django.http import HttpResponse
from django.template import Context, Template
from django.test import TestCase from django.test import TestCase
from django.test.utils import ContextList
from django.urls import clear_url_caches, reverse
from django_downloadview import assert_download_response from django_downloadview import assert_download_response
from permissions.classes import Permission from permissions.classes import Permission
from smart_settings.classes import Namespace from smart_settings.classes import Namespace
from user_management.tests import (
TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, TEST_USER_USERNAME,
TEST_USER_PASSWORD
)
from .literals import TEST_VIEW_NAME, TEST_VIEW_URL
from .mixins import ( from .mixins import (
ContentTypeCheckMixin, OpenFileCheckMixin, TempfileCheckMixin, UserMixin ContentTypeCheckMixin, OpenFileCheckMixin, TempfileCheckMixin, UserMixin
) )
@@ -22,3 +33,83 @@ class BaseTestCase(UserMixin, ContentTypeCheckMixin, OpenFileCheckMixin, Tempfil
super(BaseTestCase, self).setUp() super(BaseTestCase, self).setUp()
Namespace.invalidate_cache_all() Namespace.invalidate_cache_all()
Permission.invalidate_cache() Permission.invalidate_cache()
class GenericViewTestCase(BaseTestCase):
def setUp(self):
super(GenericViewTestCase, self).setUp()
self.has_test_view = False
def tearDown(self):
from mayan.urls import urlpatterns
self.client.logout()
if self.has_test_view:
urlpatterns.pop(0)
super(GenericViewTestCase, self).tearDown()
def add_test_view(self, test_object):
from mayan.urls import urlpatterns
def test_view(request):
template = Template('{{ object }}')
context = Context(
{'object': test_object, 'resolved_object': test_object}
)
return HttpResponse(template.render(context=context))
urlpatterns.insert(0, url(TEST_VIEW_URL, test_view, name=TEST_VIEW_NAME))
clear_url_caches()
self.has_test_view = True
def get_test_view(self):
response = self.get(TEST_VIEW_NAME)
if isinstance(response.context, ContextList):
# template widget rendering causes test client response to be
# ContextList rather than RequestContext. Typecast to dictionary
# before updating.
result = dict(response.context).copy()
result.update({'request': response.wsgi_request})
return Context(result)
else:
response.context.update({'request': response.wsgi_request})
return Context(response.context)
def get(self, viewname=None, path=None, *args, **kwargs):
data = kwargs.pop('data', {})
follow = kwargs.pop('follow', False)
if viewname:
path = reverse(viewname=viewname, *args, **kwargs)
return self.client.get(
path=path, data=data, follow=follow
)
def login(self, username, password):
logged_in = self.client.login(username=username, password=password)
user = get_user_model().objects.get(username=username)
self.assertTrue(logged_in)
self.assertTrue(user.is_authenticated)
def login_user(self):
self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
def login_admin_user(self):
self.login(username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD)
def logout(self):
self.client.logout()
def post(self, viewname=None, path=None, *args, **kwargs):
data = kwargs.pop('data', {})
follow = kwargs.pop('follow', False)
if viewname:
path = reverse(viewname=viewname, *args, **kwargs)
return self.client.post(
path=path, data=data, follow=follow
)

View File

@@ -1,4 +1,5 @@
from __future__ import unicode_literals from __future__ import unicode_literals
TEST_ERROR_LOG_ENTRY_RESULT = 'test_error_log_entry_result_text'
TEST_VIEW_NAME = 'test view name' TEST_VIEW_NAME = 'test view name'
TEST_VIEW_URL = 'test-view-url' TEST_VIEW_URL = 'test-view-url'

View File

@@ -1,106 +1,15 @@
from __future__ import absolute_import, unicode_literals from __future__ import absolute_import, unicode_literals
from django.conf.urls import url
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.http import HttpResponse
from django.template import Context, Template
from django.test.utils import ContextList
from django.urls import clear_url_caches, reverse
from acls import ModelPermission from acls import ModelPermission
from user_management.tests import (
TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME, TEST_USER_USERNAME,
TEST_USER_PASSWORD
)
from ..models import ErrorLogEntry from ..models import ErrorLogEntry
from ..permissions_runtime import permission_error_log_view from ..permissions_runtime import permission_error_log_view
from .base import BaseTestCase from .base import GenericViewTestCase
from .literals import TEST_VIEW_NAME, TEST_VIEW_URL from .literals import TEST_ERROR_LOG_ENTRY_RESULT
TEST_ERROR_LOG_ENTRY_RESULT = 'test_error_log_entry_result_text'
class GenericViewTestCase(BaseTestCase):
def setUp(self):
super(GenericViewTestCase, self).setUp()
self.has_test_view = False
def tearDown(self):
from mayan.urls import urlpatterns
self.client.logout()
if self.has_test_view:
urlpatterns.pop(0)
super(GenericViewTestCase, self).tearDown()
def add_test_view(self, test_object):
from mayan.urls import urlpatterns
def test_view(request):
template = Template('{{ object }}')
context = Context(
{'object': test_object, 'resolved_object': test_object}
)
return HttpResponse(template.render(context=context))
urlpatterns.insert(0, url(TEST_VIEW_URL, test_view, name=TEST_VIEW_NAME))
clear_url_caches()
self.has_test_view = True
def get_test_view(self):
response = self.get(TEST_VIEW_NAME)
if isinstance(response.context, ContextList):
# template widget rendering causes test client response to be
# ContextList rather than RequestContext. Typecast to dictionary
# before updating.
result = dict(response.context).copy()
result.update({'request': response.wsgi_request})
return Context(result)
else:
response.context.update({'request': response.wsgi_request})
return Context(response.context)
def get(self, viewname=None, path=None, *args, **kwargs):
data = kwargs.pop('data', {})
follow = kwargs.pop('follow', False)
if viewname:
path = reverse(viewname=viewname, *args, **kwargs)
return self.client.get(
path=path, data=data, follow=follow
)
def login(self, username, password):
logged_in = self.client.login(username=username, password=password)
user = get_user_model().objects.get(username=username)
self.assertTrue(logged_in)
self.assertTrue(user.is_authenticated)
def login_user(self):
self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
def login_admin_user(self):
self.login(username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD)
def logout(self):
self.client.logout()
def post(self, viewname=None, path=None, *args, **kwargs):
data = kwargs.pop('data', {})
follow = kwargs.pop('follow', False)
if viewname:
path = reverse(viewname=viewname, *args, **kwargs)
return self.client.post(
path=path, data=data, follow=follow
)
class CommonViewTestCase(GenericViewTestCase): class CommonViewTestCase(GenericViewTestCase):

View File

@@ -2,7 +2,7 @@ from __future__ import unicode_literals
from django.test import TestCase from django.test import TestCase
from ..classes import ( from ..transformations import (
BaseTransformation, TransformationResize, TransformationRotate, BaseTransformation, TransformationResize, TransformationRotate,
TransformationZoom TransformationZoom
) )

View File

@@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals
from django_downloadview.test import assert_download_response from django_downloadview.test import assert_download_response
from common.tests.test_views import GenericViewTestCase from common.tests import GenericViewTestCase
from ..models import Key from ..models import Key
from ..permissions import permission_key_download, permission_key_upload from ..permissions import permission_key_download, permission_key_upload

View File

@@ -1,5 +1,7 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from django.test import override_settings
from documents.tests import ( from documents.tests import (
GenericDocumentViewTestCase, TEST_DOCUMENT_FILENAME GenericDocumentViewTestCase, TEST_DOCUMENT_FILENAME
) )
@@ -8,6 +10,7 @@ from ..permissions import permission_content_view
from ..utils import get_document_content from ..utils import get_document_content
@override_settings(OCR_AUTO_OCR=True)
class DocumentContentViewsTestCase(GenericDocumentViewTestCase): class DocumentContentViewsTestCase(GenericDocumentViewTestCase):
_skip_file_descriptor_test = True _skip_file_descriptor_test = True

View File

@@ -1,6 +1,6 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from common.tests.test_views import GenericViewTestCase from common.tests import GenericViewTestCase
from documents.tests import ( from documents.tests import (
GenericDocumentViewTestCase, TEST_SMALL_DOCUMENT_PATH GenericDocumentViewTestCase, TEST_SMALL_DOCUMENT_PATH
) )

View File

@@ -4,7 +4,7 @@ from __future__ import unicode_literals
from django.test import override_settings from django.test import override_settings
from common.tests.test_views import GenericViewTestCase from common.tests import GenericViewTestCase
from ..models import DocumentType from ..models import DocumentType

View File

@@ -2,7 +2,7 @@ from __future__ import unicode_literals
from django.test import override_settings from django.test import override_settings
from common.tests.test_views import GenericViewTestCase from common.tests import GenericViewTestCase
from documents.models import DocumentType from documents.models import DocumentType
from documents.search import document_search from documents.search import document_search
from documents.tests import TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_PATH from documents.tests import TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_PATH

View File

@@ -1,6 +1,6 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from common.tests.test_views import GenericViewTestCase from common.tests import GenericViewTestCase
from ..classes import Statistic from ..classes import Statistic
from ..permissions import permission_statistics_view from ..permissions import permission_statistics_view

View File

@@ -6,8 +6,8 @@ from django.urls import reverse
from furl import furl from furl import furl
from acls.models import AccessControlList from acls.models import AccessControlList
from common.tests import GenericViewTestCase
from common.tests.literals import TEST_VIEW_NAME from common.tests.literals import TEST_VIEW_NAME
from common.tests.test_views import GenericViewTestCase
from permissions import Permission, PermissionNamespace from permissions import Permission, PermissionNamespace
from ..classes import Link, Menu from ..classes import Link, Menu

View File

@@ -1,6 +1,6 @@
from __future__ import absolute_import, unicode_literals from __future__ import absolute_import, unicode_literals
from common.tests.test_views import GenericViewTestCase from common.tests import GenericViewTestCase
from ..permissions import permission_settings_view from ..permissions import permission_settings_view

View File

@@ -9,7 +9,7 @@ from django.test import override_settings
from django.urls import reverse from django.urls import reverse
from checkouts.models import NewVersionBlock from checkouts.models import NewVersionBlock
from common.tests.test_views import GenericViewTestCase from common.tests import GenericViewTestCase
from common.utils import fs_cleanup, mkdtemp from common.utils import fs_cleanup, mkdtemp
from documents.models import Document, DocumentType from documents.models import Document, DocumentType
from documents.permissions import permission_document_create from documents.permissions import permission_document_create

View File

@@ -1,6 +1,6 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from common.tests.test_views import GenericViewTestCase from common.tests import GenericViewTestCase
from ..classes import CeleryQueue from ..classes import CeleryQueue
from ..permissions import permission_task_view from ..permissions import permission_task_view

View File

@@ -3,7 +3,7 @@ from __future__ import unicode_literals
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group from django.contrib.auth.models import Group
from common.tests.test_views import GenericViewTestCase from common.tests import GenericViewTestCase
from documents.tests import GenericDocumentViewTestCase from documents.tests import GenericDocumentViewTestCase
from metadata.models import MetadataType from metadata.models import MetadataType