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

@@ -13,10 +13,6 @@ from mayan.apps.common.html_widgets import TwoStateWidget
from mayan.apps.common.menus import (
menu_list_facet, menu_object, menu_secondary, menu_setup
)
from mayan.apps.events.classes import ModelEventType
from mayan.apps.events.links import (
link_events_for_object, link_object_event_types_user_subcriptions_list
)
from mayan.apps.navigation.classes import SourceColumn
from .control_codes import *
@@ -70,6 +66,7 @@ class ControlCodesApp(MayanAppConfig):
ModelPermission.register(
model=ControlSheet, permissions=(
permission_acl_edit, permission_acl_view,
permission_control_sheet_delete,
permission_control_sheet_edit,
permission_control_sheet_view

View File

@@ -6,10 +6,8 @@ from PIL import Image
from pyzbar.pyzbar import decode
import qrcode
from django.apps import apps
from django.db import transaction
from django.utils.encoding import force_text, python_2_unicode_compatible
from django.utils.translation import string_concat, ugettext_lazy as _
from django.utils.translation import string_concat
from mayan.apps.common.serialization import yaml_dump, yaml_load
from mayan.apps.documents.literals import DOCUMENT_IMAGE_TASK_TIMEOUT

View File

@@ -7,7 +7,7 @@ icon_control_sheet = Icon(
{'class': 'far fa-file ', 'transform': 'grow-4'},
{'class': 'fas fa-barcode', 'transform': 'shrink-6'},
],
# shadow_class='far fa-file',
#shadow_class='far fa-file',
)
icon_control_sheet_create = Icon(
driver_name='fontawesome-layers', data=[

View File

@@ -2,16 +2,12 @@ from __future__ import unicode_literals
from rest_framework import serializers
from mayan.apps.documents.serializers import DocumentTypeSerializer
from mayan.apps.rest_api.relations import (
FilteredPrimaryKeyRelatedField, MultiKwargHyperlinkedIdentityField
)
from mayan.apps.rest_api.relations import MultiKwargHyperlinkedIdentityField
from .models import ControlSheet, ControlSheetCode
class ControlSheetSerializer(serializers.HyperlinkedModelSerializer):
#codes = ControlSheetCodeSerializer(many=True, required=False)
code_list_url = serializers.HyperlinkedIdentityField(
lookup_url_kwarg='control_sheet_id',
view_name='rest_api:controlsheet-code-list'

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
)

View File

@@ -163,7 +163,7 @@ class ControlSheetCodeCreate(ExternalObjectMixin, SingleObjectCreateView):
class ControlSheetCodeDeleteView(ExternalObjectMixin, SingleObjectDeleteView):
form_class = ControlSheetCodeForm
external_object_class = ControlSheet
external_object_permission = permission_control_sheet_delete
external_object_permission = permission_control_sheet_edit
external_object_pk_url_kwarg = 'control_sheet_id'
pk_url_kwarg = 'control_sheet_code_id'