Reorganize common's base test class.
Signed-off-by: Michael Price <loneviking72@gmail.com>
This commit is contained in:
committed by
Roberto Rosario
parent
4f5cf81212
commit
0a480066df
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
)
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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
|
||||||
)
|
)
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user