Reorganize reusable test code
Extract test views and user code into their own separate test case mixins. Append TestCase to test case mixins with base test code to differentiate them from test mixins with reusable view calls. Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
@@ -1,18 +1,22 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
__all__ = (
|
||||
'TEST_ADMIN_EMAIL', 'TEST_ADMIN_PASSWORD', 'TEST_ADMIN_USERNAME',
|
||||
'TEST_GROUP_NAME', 'TEST_GROUP_NAME_EDITED', 'TEST_USER_EMAIL',
|
||||
'TEST_USER_PASSWORD', 'TEST_USER_PASSWORD_EDITED', 'TEST_USER_USERNAME'
|
||||
)
|
||||
|
||||
TEST_ADMIN_EMAIL = 'admin@example.com'
|
||||
TEST_ADMIN_PASSWORD = 'test admin password'
|
||||
TEST_ADMIN_USERNAME = 'test_admin'
|
||||
TEST_CASE_ADMIN_EMAIL = 'admin@example.com'
|
||||
TEST_CASE_ADMIN_PASSWORD = 'test admin password'
|
||||
TEST_CASE_ADMIN_USERNAME = 'test_admin'
|
||||
|
||||
TEST_CASE_GROUP_NAME = 'test group'
|
||||
TEST_CASE_USER_EMAIL = 'user@example.com'
|
||||
TEST_CASE_USER_PASSWORD = 'test user password'
|
||||
TEST_CASE_USER_USERNAME = 'test_user'
|
||||
|
||||
TEST_GROUP_NAME = 'test group'
|
||||
TEST_GROUP_2_NAME = 'test group 2'
|
||||
TEST_GROUP_NAME_EDITED = 'test group edited'
|
||||
TEST_GROUP_2_NAME = 'test group 2'
|
||||
TEST_GROUP_2_NAME_EDITED = 'test group 2 edited'
|
||||
TEST_USER_EMAIL = 'user@example.com'
|
||||
TEST_USER_PASSWORD = 'test user password'
|
||||
|
||||
@@ -4,11 +4,60 @@ from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import Group
|
||||
|
||||
from .literals import (
|
||||
TEST_GROUP_2_NAME, TEST_GROUP_2_NAME_EDITED, TEST_USER_2_EMAIL,
|
||||
TEST_USER_2_PASSWORD, TEST_USER_2_USERNAME, TEST_USER_2_USERNAME_EDITED
|
||||
TEST_CASE_ADMIN_EMAIL, TEST_CASE_ADMIN_PASSWORD, TEST_CASE_ADMIN_USERNAME,
|
||||
TEST_CASE_GROUP_NAME, TEST_CASE_USER_EMAIL, TEST_CASE_USER_PASSWORD,
|
||||
TEST_CASE_USER_USERNAME, TEST_GROUP_NAME, TEST_GROUP_2_NAME,
|
||||
TEST_GROUP_2_NAME_EDITED, TEST_USER_2_EMAIL, TEST_USER_2_PASSWORD,
|
||||
TEST_USER_EMAIL, TEST_USER_USERNAME, TEST_USER_PASSWORD,
|
||||
TEST_USER_2_USERNAME, TEST_USER_2_USERNAME_EDITED
|
||||
)
|
||||
|
||||
|
||||
class UserTestCaseMixin(object):
|
||||
auto_login_admin = False
|
||||
auto_login_user = True
|
||||
|
||||
def setUp(self):
|
||||
super(UserTestCaseMixin, self).setUp()
|
||||
if self.auto_login_user:
|
||||
self._test_case_user = get_user_model().objects.create_user(
|
||||
username=TEST_CASE_USER_USERNAME, email=TEST_CASE_USER_EMAIL,
|
||||
password=TEST_CASE_USER_PASSWORD
|
||||
)
|
||||
self.login_user()
|
||||
self._test_case_group = Group.objects.create(name=TEST_GROUP_NAME)
|
||||
self._test_case_group.user_set.add(self._test_case_user)
|
||||
elif self.auto_login_admin:
|
||||
self._test_case_admin_user = get_user_model().objects.create_superuser(
|
||||
username=TEST_CASE_ADMIN_USERNAME, email=TEST_CASE_ADMIN_EMAIL,
|
||||
password=TEST_CASE_ADMIN_PASSWORD
|
||||
)
|
||||
self.login_admin_user()
|
||||
|
||||
def tearDown(self):
|
||||
self.client.logout()
|
||||
super(UserTestCaseMixin, self).tearDown()
|
||||
|
||||
def login(self, *args, **kwargs):
|
||||
logged_in = self.client.login(*args, **kwargs)
|
||||
|
||||
return logged_in
|
||||
|
||||
def login_user(self):
|
||||
self.login(
|
||||
username=TEST_CASE_USER_USERNAME, password=TEST_CASE_USER_PASSWORD
|
||||
)
|
||||
|
||||
def login_admin_user(self):
|
||||
self.login(
|
||||
username=TEST_CASE_ADMIN_USERNAME,
|
||||
password=TEST_CASE_ADMIN_PASSWORD
|
||||
)
|
||||
|
||||
def logout(self):
|
||||
self.client.logout()
|
||||
|
||||
|
||||
class UserTestMixin(object):
|
||||
def _create_test_group(self):
|
||||
self.test_group = Group.objects.create(name=TEST_GROUP_2_NAME)
|
||||
@@ -23,6 +72,8 @@ class UserTestMixin(object):
|
||||
password=TEST_USER_2_PASSWORD
|
||||
)
|
||||
|
||||
# Group views
|
||||
|
||||
def _request_test_group_create_view(self):
|
||||
reponse = self.post(
|
||||
viewname='user_management:group_create', data={
|
||||
@@ -32,19 +83,38 @@ class UserTestMixin(object):
|
||||
self.test_group = Group.objects.filter(name=TEST_GROUP_2_NAME).first()
|
||||
return reponse
|
||||
|
||||
def _request_test_group_delete_view(self):
|
||||
return self.post(
|
||||
viewname='user_management:group_delete', kwargs={
|
||||
'group_pk': self.test_group.pk
|
||||
}
|
||||
)
|
||||
|
||||
def _request_test_group_edit_view(self):
|
||||
return self.post(
|
||||
viewname='user_management:group_edit', kwargs={
|
||||
'pk': self.test_group.pk
|
||||
'group_pk': self.test_group.pk
|
||||
}, data={
|
||||
'name': TEST_GROUP_2_NAME_EDITED
|
||||
}
|
||||
)
|
||||
|
||||
def _request_test_group_list_view(self):
|
||||
return self.get(viewname='user_management:group_list')
|
||||
|
||||
def _request_test_group_members_view(self):
|
||||
return self.get(
|
||||
viewname='user_management:group_members',
|
||||
kwargs={'group_pk': self.test_group.pk}
|
||||
)
|
||||
|
||||
# User views
|
||||
|
||||
def _request_test_user_create_view(self):
|
||||
reponse = self.post(
|
||||
viewname='user_management:user_create', data={
|
||||
'username': TEST_USER_2_USERNAME
|
||||
'username': TEST_USER_2_USERNAME,
|
||||
'password': TEST_USER_2_PASSWORD
|
||||
}
|
||||
)
|
||||
|
||||
@@ -53,11 +123,23 @@ class UserTestMixin(object):
|
||||
).first()
|
||||
return reponse
|
||||
|
||||
def _request_test_user_delete_view(self):
|
||||
return self.post(
|
||||
viewname='user_management:user_delete',
|
||||
kwargs={'user_pk': self.test_user.pk}
|
||||
)
|
||||
|
||||
def _request_test_user_edit_view(self):
|
||||
return self.post(
|
||||
viewname='user_management:user_edit', kwargs={
|
||||
'pk': self.test_user.pk
|
||||
'user_pk': self.test_user.pk
|
||||
}, data={
|
||||
'username': TEST_USER_2_USERNAME_EDITED
|
||||
}
|
||||
)
|
||||
|
||||
def _request_test_user_groups_view(self):
|
||||
return self.get(
|
||||
viewname='user_management:user_groups',
|
||||
kwargs={'user_pk': self.test_user.pk}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user