Implement repeatable way to add test views.

This commit is contained in:
Roberto Rosario
2015-10-27 15:23:26 -04:00
parent b1fa66b78c
commit 124c6dab5e
3 changed files with 30 additions and 17 deletions

View File

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

View File

@@ -1,10 +1,13 @@
from __future__ import absolute_import, unicode_literals
from django.conf.urls import include, url
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from django.core.urlresolvers import reverse
from django.test.client import Client
from django.http import HttpResponse
from django.template import Context, Template
from django.test import TestCase
from django.test.client import Client
from permissions import Permission
from permissions.models import Role
@@ -14,9 +17,12 @@ from user_management.tests import (
TEST_USER_EMAIL, TEST_USER_USERNAME, TEST_USER_PASSWORD
)
from .literals import TEST_VIEW_NAME, TEST_VIEW_URL
class GenericViewTestCase(TestCase):
def setUp(self):
self.has_test_view = False
self.admin_user = get_user_model().objects.create_superuser(
username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL,
password=TEST_ADMIN_PASSWORD
@@ -34,11 +40,27 @@ class GenericViewTestCase(TestCase):
Permission.invalidate_cache()
def tearDown(self):
from mayan.urls import urlpatterns
self.admin_user.delete()
self.client.logout()
self.group.delete()
self.role.delete()
self.user.delete()
if self.has_test_view:
urlpatterns.pop(0)
def add_test_view(self, test_object):
from mayan.urls import urlpatterns
def test_view(request):
template = Template('{{ object }}')
context = Context({'object': test_object})
return HttpResponse(template.render(context=context))
urlpatterns.insert(0, url(TEST_VIEW_URL, test_view, name=TEST_VIEW_NAME))
self.has_test_view = True
def get(self, viewname, *args, **kwargs):
data = kwargs.pop('data', {})

View File

@@ -9,40 +9,27 @@ from django.core.urlresolvers import reverse
from django.http import HttpResponse
from django.template import Context, Template
from mayan.urls import urlpatterns
from acls.models import AccessControlList
from common.tests.literals import TEST_VIEW_NAME
from common.tests.test_views import GenericViewTestCase
from permissions import Permission, PermissionNamespace
from user_management.tests import TEST_USER_PASSWORD, TEST_USER_USERNAME
from ..classes import Link
TEST_OBJECT = None
TEST_PERMISSION_NAMESPACE_NAME = 'test namespace name'
TEST_PERMISSION_NAMESPACE_TEXT = 'test namespace text'
TEST_PERMISSION_NAME = 'test permission name'
TEST_PERMISSION_LABEL = 'test permission label'
TEST_LINK_TEXT = 'test link text'
TEST_VIEW_URL = 'test-view-url'
TEST_VIEW_NAME = 'test view name'
def test_view(request):
template = Template('{{ object }}')
context = Context({'object': TEST_OBJECT})
return HttpResponse(template.render(context=context))
urlpatterns += (url(TEST_VIEW_URL, test_view, name=TEST_VIEW_NAME),)
class LinkClassTestCase(GenericViewTestCase):
def setUp(self):
super(LinkClassTestCase, self).setUp()
global TEST_OBJECT
TEST_OBJECT = self.group
self.add_test_view(test_object=self.group)
self.namespace = PermissionNamespace(
TEST_PERMISSION_NAMESPACE_NAME, TEST_PERMISSION_NAMESPACE_TEXT
@@ -113,7 +100,7 @@ class LinkClassTestCase(GenericViewTestCase):
)
acl = AccessControlList.objects.create(
content_object=TEST_OBJECT, role=self.role
content_object=self.group, role=self.role
)
acl.permissions.add(self.permission.stored_permission)