Finish view tests

Signed-off-by: Roberto Rosario <roberto.rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-09-05 01:24:54 -04:00
parent cca08d8103
commit 968abe2cdb
9 changed files with 389 additions and 68 deletions

View File

@@ -1,3 +1,6 @@
from __future__ import unicode_literals
TEST_CONTROL_SHEET_CODE_ARGUMENTS = '{"argument_1": ""}'
TEST_CONTROL_SHEET_CODE_ARGUMENTS_EDITED = '{"argument_1": "edited"}'
TEST_CONTROL_SHEET_LABEL = 'test control sheet'
TEST_CONTROL_SHEET_LABEL_EDITED = 'test control sheet edited'

View File

@@ -1,25 +1,40 @@
from __future__ import unicode_literals
from ..classes import ControlCode
from ..models import ControlSheet
from .literals import TEST_CONTROL_SHEET_LABEL
from .literals import (
TEST_CONTROL_SHEET_CODE_ARGUMENTS,
TEST_CONTROL_SHEET_CODE_ARGUMENTS_EDITED, TEST_CONTROL_SHEET_LABEL,
TEST_CONTROL_SHEET_LABEL_EDITED
)
class ControlCodeTest(ControlCode):
arguments = ('argument_1',)
label = 'Test'
name = 'test'
def execute(self):
pass
class ControlSheetAPIViewTestMixin(object):
def _request_test_tag_create_api_view(self):
def _request_test_control_sheet_create_api_view(self):
return self.post(
viewname='rest_api:tag-list', data={
'label': TEST_CONTROL_SHEET_LABEL, 'color': TEST_CONTROL_SHEET_COLOR
viewname='rest_api:control_sheet-list', data={
'label': TEST_CONTROL_SHEET_LABEL,
}
)
def _request_test_control_sheet_delete_api_view(self):
return self.delete(
viewname='rest_api:control_sheet-detail', kwargs={'pk': self.test_control_sheet.pk}
viewname='rest_api:control_sheet-detail', kwargs={
'control_sheet_id': self.test_control_sheet.pk
}
)
def _request_control_sheet_edit_view(self, extra_data=None, verb='patch'):
def _request_test_control_sheet_edit_api_view(self, extra_data=None, verb='patch'):
data = {
'label': TEST_CONTROL_SHEET_LABEL_EDITED,
}
@@ -41,6 +56,17 @@ class ControlSheetTestMixin(object):
)
class ControlSheetCodeTestMixin(object):
_test_control_code_class = ControlCodeTest
def _create_test_control_sheet_code(self):
self.test_control_sheet_code = self.test_control_sheet.codes.create(
control_sheet=self.test_control_sheet,
name=self._test_control_code_class.name,
arguments=TEST_CONTROL_SHEET_CODE_ARGUMENTS
)
class ControlSheetViewTestMixin(object):
def _request_test_control_sheet_create_view(self):
return self.post(
@@ -51,23 +77,94 @@ class ControlSheetViewTestMixin(object):
def _request_test_control_sheet_delete_view(self):
return self.post(
viewname='control_codes:control_sheet_delete',
kwargs={'control_sheet_id': self.test_control_sheet.pk}
viewname='control_codes:control_sheet_delete', kwargs={
'control_sheet_id': self.test_control_sheet.pk
}
)
def _request_test_control_sheet_delete_multiple_view(self):
return self.post(
viewname='control_codes:control_sheet_multiple_delete',
data={'id_list': self.test_control_sheet.pk},
viewname='control_codes:control_sheet_multiple_delete', data={
'id_list': self.test_control_sheet.pk
},
)
def _request_test_control_sheet_edit_view(self):
return self.post(
viewname='control_codes:control_sheet_edit',
kwargs={'control_sheet_id': self.test_control_sheet.pk}, data={
viewname='control_codes:control_sheet_edit', kwargs={
'control_sheet_id': self.test_control_sheet.pk
}, data={
'label': TEST_CONTROL_SHEET_LABEL_EDITED,
}
)
def _request_test_control_sheet_list_view(self):
return self.get(viewname='control_sheets:control_sheet_list')
return self.get(viewname='control_codes:control_sheet_list')
def _request_test_control_sheet_preview_view(self):
return self.get(
viewname='control_codes:control_sheet_preview', kwargs={
'control_sheet_id': self.test_control_sheet.pk
}
)
def _request_test_control_sheet_print_view(self):
return self.get(
viewname='control_codes:control_sheet_print', kwargs={
'control_sheet_id': self.test_control_sheet.pk
}
)
class ControlSheetCodeViewTestMixin(object):
def _request_test_control_sheet_code_select_get_view(self):
return self.get(
viewname='control_codes:control_sheet_code_select', kwargs={
'control_sheet_id': self.test_control_sheet.pk,
}
)
def _request_test_control_sheet_code_select_post_view(self):
return self.post(
viewname='control_codes:control_sheet_code_select', kwargs={
'control_sheet_id': self.test_control_sheet.pk,
}, data={'control_code_class_name': self._test_control_code_class.name}
)
def _request_test_control_sheet_code_create_view(self):
return self.post(
viewname='control_codes:control_sheet_code_create', kwargs={
'control_sheet_id': self.test_control_sheet.pk,
'control_code_class_name': self._test_control_code_class.name
}
)
def _request_test_control_sheet_code_delete_view(self):
return self.post(
viewname='control_codes:control_sheet_code_delete',
kwargs={
'control_sheet_id': self.test_control_sheet_code.control_sheet.pk,
'control_sheet_code_id': self.test_control_sheet_code.pk
}
)
def _request_test_control_sheet_code_edit_view(self):
return self.post(
viewname='control_codes:control_sheet_code_edit', kwargs={
'control_sheet_id': self.test_control_sheet_code.control_sheet.pk,
'control_sheet_code_id': self.test_control_sheet_code.pk
}, data={
'arguments': TEST_CONTROL_SHEET_CODE_ARGUMENTS_EDITED,
}
)
def _request_test_control_sheet_code_list_view(self):
return self.get(
viewname='control_codes:control_sheet_code_list', kwargs={
'control_sheet_id': self.test_control_sheet.pk
}
)
ControlCode.register(control_code=ControlCodeTest)

View File

@@ -1,36 +1,22 @@
from __future__ import unicode_literals
from django.test import override_settings
from mayan.apps.common.tests.base import BaseTestCase
from mayan.apps.documents.tests.base import GenericDocumentTestCase
from mayan.apps.documents.tests.mixins import DocumentTestMixin
from ..classes import ControlCode
from ..models import ControlSheet
from .mixins import ControlSheetCodeTestMixin
TEST_CONTROL_CODE_DOCUMENT_PATH = '/tmp/test_control_code.png'
class ControlCodeTest(ControlCode):
arguments = ('argument_1',)
label = 'Test'
name = 'test'
def execute(self):
pass
ControlCode.register(control_code=ControlCodeTest)
class ControlCodeTestCase(GenericDocumentTestCase):
class ControlCodeTestCase(ControlSheetCodeTestMixin, GenericDocumentTestCase):
auto_upload_document = False
test_document_path = TEST_CONTROL_CODE_DOCUMENT_PATH
def test_control_code_detection(self):
with open(TEST_CONTROL_CODE_DOCUMENT_PATH, mode='wb') as file_object:
control_code = ControlCodeTest(argument_1='test argument value')
control_code = self._test_control_code_class(
argument_1='test argument value'
)
control_code.image.save(file_object)
self.upload_document()

View File

@@ -1,66 +1,310 @@
from __future__ import unicode_literals
from django.test import override_settings
from mayan.apps.common.tests.base import GenericViewTestCase
from mayan.apps.common.tests.base import BaseTestCase, GenericViewTestCase
from mayan.apps.documents.tests.base import GenericDocumentTestCase
from mayan.apps.documents.tests.mixins import DocumentTestMixin
from ..classes import ControlCode
from ..models import ControlSheet
from ..models import ControlSheet, ControlSheetCode
from ..permissions import (
permission_control_sheet_create, permission_control_sheet_delete,
permission_control_sheet_edit, permission_control_sheet_view
)
from .mixins import ControlSheetTestMixin, ControlSheetViewTestMixin
from .mixins import (
ControlSheetCodeTestMixin, ControlSheetCodeViewTestMixin,
ControlSheetTestMixin, ControlSheetViewTestMixin
)
class ControlSheetViewTestCase(
ControlSheetTestMixin, ControlSheetViewTestMixin, GenericViewTestCase
):
test_model = ControlSheet
test_permission_create = permission_control_sheet_create
test_permission_delete = permission_control_sheet_delete
_test_model = ControlSheet
_test_permission_create = permission_control_sheet_create
_test_permission_delete = permission_control_sheet_delete
_test_permission_edit = permission_control_sheet_edit
_test_permission_view = permission_control_sheet_view
def test_control_sheet_create_view_no_permissions(self):
object_count = self.test_model.objects.count()
object_count = self._test_model.objects.count()
response = self._request_test_control_sheet_create_view()
self.assertEqual(response.status_code, 403)
self.assertEqual(self.test_model.objects.count(), object_count)
self.assertEqual(self._test_model.objects.count(), object_count)
def test_control_sheet_create_view_with_permissions(self):
self.grant_permission(permission=self.test_permission_create)
self.grant_permission(permission=self._test_permission_create)
object_count = self.test_model.objects.count()
object_count = self._test_model.objects.count()
response = self._request_test_control_sheet_create_view()
self.assertEqual(response.status_code, 302)
self.assertEqual(self.test_model.objects.count(), object_count + 1)
self.assertEqual(self._test_model.objects.count(), object_count + 1)
def test_control_sheet_delete_view_no_permissions(self):
self._create_test_control_sheet()
object_count = self.test_model.objects.count()
object_count = self._test_model.objects.count()
response = self._request_test_control_sheet_delete_view()
self.assertEqual(response.status_code, 404)
self.assertEqual(self.test_model.objects.count(), object_count)
self.assertEqual(self._test_model.objects.count(), object_count)
def test_control_sheet_delete_view_with_access(self):
self._create_test_control_sheet()
self.grant_access(
obj=self.test_control_sheet, permission=self.test_permission_delete
obj=self.test_control_sheet, permission=self._test_permission_delete
)
object_count = self.test_model.objects.count()
object_count = self._test_model.objects.count()
response = self._request_test_control_sheet_delete_view()
self.assertEqual(response.status_code, 302)
self.assertEqual(self.test_model.objects.count(), object_count - 1)
self.assertEqual(self._test_model.objects.count(), object_count - 1)
def test_control_sheet_edit_view_no_permissions(self):
self._create_test_control_sheet()
control_sheet_label = self.test_control_sheet.label
response = self._request_test_control_sheet_edit_view()
self.assertEqual(response.status_code, 404)
self.test_control_sheet.refresh_from_db()
self.assertEqual(self.test_control_sheet.label, control_sheet_label)
def test_control_sheet_edit_view_with_access(self):
self._create_test_control_sheet()
self.grant_access(
obj=self.test_control_sheet, permission=self._test_permission_edit
)
control_sheet_label = self.test_control_sheet.label
response = self._request_test_control_sheet_edit_view()
self.assertEqual(response.status_code, 302)
self.test_control_sheet.refresh_from_db()
self.assertNotEqual(self.test_control_sheet.label, control_sheet_label)
def test_control_sheet_list_view_no_permission(self):
self._create_test_control_sheet()
response = self._request_test_control_sheet_list_view()
self.assertNotContains(
response, text=self.test_control_sheet.label, status_code=200
)
def test_control_sheet_list_view_with_access(self):
self._create_test_control_sheet()
self.grant_access(
obj=self.test_control_sheet,
permission=self._test_permission_view
)
response = self._request_test_control_sheet_list_view()
self.assertContains(
response, text=self.test_control_sheet.label, status_code=200
)
def test_control_sheet_preview_view_no_permissions(self):
self._create_test_control_sheet()
response = self._request_test_control_sheet_preview_view()
self.assertEqual(response.status_code, 404)
def test_control_sheet_preview_view_with_access(self):
self._create_test_control_sheet()
self.grant_access(
obj=self.test_control_sheet, permission=self._test_permission_view
)
response = self._request_test_control_sheet_preview_view()
self.assertContains(
response=response, text=self.test_control_sheet.label,
status_code=200
)
def test_control_sheet_print_view_no_permissions(self):
self._create_test_control_sheet()
response = self._request_test_control_sheet_print_view()
self.assertEqual(response.status_code, 404)
def test_control_sheet_print_view_with_access(self):
self._create_test_control_sheet()
self.grant_access(
obj=self.test_control_sheet, permission=self._test_permission_view
)
response = self._request_test_control_sheet_print_view()
self.assertContains(
response=response, text=self.test_control_sheet.label,
status_code=200
)
class ControlSheetCodeViewTestCase(
ControlSheetTestMixin, ControlSheetCodeTestMixin,
ControlSheetCodeViewTestMixin, GenericViewTestCase
):
_test_model = ControlSheetCode
_test_permission_create = permission_control_sheet_create
_test_permission_delete = permission_control_sheet_delete
_test_permission_edit = permission_control_sheet_edit
_test_permission_view = permission_control_sheet_view
def test_control_sheet_code_select_get_view_no_permissions(self):
self._create_test_control_sheet()
response = self._request_test_control_sheet_code_select_get_view()
self.assertEqual(response.status_code, 404)
def test_control_sheet_code_select_get_view_with_access(self):
self._create_test_control_sheet()
self.grant_access(
obj=self.test_control_sheet,
permission=self._test_permission_edit
)
response = self._request_test_control_sheet_code_select_get_view()
self.assertContains(
response=response, text=self._test_control_code_class.label,
status_code=200
)
def test_control_sheet_code_select_post_view_no_permissions(self):
self._create_test_control_sheet()
response = self._request_test_control_sheet_code_select_post_view()
self.assertEqual(response.status_code, 404)
def test_control_sheet_code_select_post_view_with_access(self):
self._create_test_control_sheet()
self.grant_access(
obj=self.test_control_sheet,
permission=self._test_permission_edit
)
response = self._request_test_control_sheet_code_select_post_view()
self.assertEqual(response.status_code, 302)
def test_control_sheet_code_create_view_no_permissions(self):
self._create_test_control_sheet()
object_count = self._test_model.objects.count()
response = self._request_test_control_sheet_code_create_view()
self.assertEqual(response.status_code, 404)
self.assertEqual(self._test_model.objects.count(), object_count)
def test_control_sheet_code_create_view_with_access(self):
self._create_test_control_sheet()
self.grant_access(
obj=self.test_control_sheet,
permission=self._test_permission_edit
)
object_count = self._test_model.objects.count()
response = self._request_test_control_sheet_code_create_view()
self.assertEqual(response.status_code, 302)
self.assertEqual(self._test_model.objects.count(), object_count + 1)
def test_control_sheet_code_delete_view_no_permissions(self):
self._create_test_control_sheet()
self._create_test_control_sheet_code()
object_count = self._test_model.objects.count()
response = self._request_test_control_sheet_code_delete_view()
self.assertEqual(response.status_code, 404)
self.assertEqual(self._test_model.objects.count(), object_count)
def test_control_sheet_code_delete_view_with_access(self):
self._create_test_control_sheet()
self._create_test_control_sheet_code()
self.grant_access(
obj=self.test_control_sheet,
permission=self._test_permission_edit
)
object_count = self._test_model.objects.count()
response = self._request_test_control_sheet_code_delete_view()
self.assertEqual(response.status_code, 302)
self.assertEqual(self._test_model.objects.count(), object_count - 1)
def test_control_sheet_code_edit_view_no_permissions(self):
self._create_test_control_sheet()
self._create_test_control_sheet_code()
control_sheet_code_arguments = self.test_control_sheet_code.arguments
response = self._request_test_control_sheet_code_edit_view()
self.assertEqual(response.status_code, 404)
self.test_control_sheet_code.refresh_from_db()
self.assertEqual(
self.test_control_sheet_code.arguments,
control_sheet_code_arguments
)
def test_control_sheet_code_edit_view_with_access(self):
self._create_test_control_sheet()
self._create_test_control_sheet_code()
self.grant_access(
obj=self.test_control_sheet,
permission=self._test_permission_edit
)
control_sheet_code_arguments = self.test_control_sheet_code.arguments
response = self._request_test_control_sheet_code_edit_view()
self.assertEqual(response.status_code, 302)
self.test_control_sheet_code.refresh_from_db()
self.assertNotEqual(
self.test_control_sheet_code.arguments,
control_sheet_code_arguments
)
def test_control_sheet_code_list_view_no_permission(self):
self._create_test_control_sheet()
self._create_test_control_sheet_code()
response = self._request_test_control_sheet_code_list_view()
self.assertNotContains(
response, text=self.test_control_sheet_code.get_label(),
status_code=404
)
def test_control_sheet_code_list_view_with_access(self):
self._create_test_control_sheet()
self._create_test_control_sheet_code()
self.grant_access(
obj=self.test_control_sheet,
permission=self._test_permission_view
)
response = self._request_test_control_sheet_code_list_view()
self.assertContains(
response, text=self.test_control_sheet_code.get_label(),
status_code=200
)