diff --git a/mayan/apps/document_states/tests/test_links.py b/mayan/apps/document_states/tests/test_links.py new file mode 100644 index 0000000000..9de4b7a390 --- /dev/null +++ b/mayan/apps/document_states/tests/test_links.py @@ -0,0 +1,142 @@ +from __future__ import unicode_literals + +from django.urls import reverse + +from mayan.apps.documents.tests.base import GenericDocumentViewTestCase + +from ..links import ( + link_workflow_runtime_proxy_document_list, + link_workflow_runtime_proxy_list, + link_workflow_runtime_proxy_state_document_list, + link_workflow_runtime_proxy_state_list, +) +from ..permissions import permission_workflow_view + +from .mixins import WorkflowTestMixin + + +class WorkflowRuntimeProxyLinkTestCase( + WorkflowTestMixin, GenericDocumentViewTestCase +): + def _resolve_test_link(self, test_object=None): + self.add_test_view(test_object=test_object) + context = self.get_test_view() + self.resolved_test_link = self.test_link.resolve(context=context) + + def test_workflow_runtime_proxy_document_list_link_no_permission(self): + self.test_link = link_workflow_runtime_proxy_document_list + + self._create_test_workflow(add_document_type=True) + + self._resolve_test_link(test_object=self.test_workflow) + + self.assertEqual(self.resolved_test_link, None) + + def test_workflow_runtime_proxy_document_list_link_with_access(self): + self.test_link = link_workflow_runtime_proxy_document_list + + self._create_test_workflow(add_document_type=True) + + self.grant_access( + obj=self.test_workflow, permission=permission_workflow_view + ) + + self._resolve_test_link(test_object=self.test_workflow) + + self.assertNotEqual(self.resolved_test_link, None) + self.assertEqual( + self.resolved_test_link.url, + reverse( + viewname=self.test_link.view, kwargs={ + 'pk': self.test_workflow.pk + } + ) + ) + + def test_workflow_runtime_proxy_link_no_permission(self): + self.test_link = link_workflow_runtime_proxy_list + + self._create_test_workflow(add_document_type=True) + + self._resolve_test_link() + self.assertEqual(self.resolved_test_link, None) + + def test_workflow_runtime_proxy_link_with_access(self): + self.test_link = link_workflow_runtime_proxy_list + + self._create_test_workflow(add_document_type=True) + + self.grant_access( + obj=self.test_workflow, permission=permission_workflow_view + ) + + self._resolve_test_link() + + self.assertNotEqual(self.resolved_test_link, None) + self.assertEqual( + self.resolved_test_link.url, + reverse( + viewname=self.test_link.view, + ) + ) + + def test_workflow_runtime_proxy_state_document_list_link_no_permission(self): + self.test_link = link_workflow_runtime_proxy_state_document_list + + self._create_test_workflow(add_document_type=True) + self._create_test_workflow_state() + + self._resolve_test_link(test_object=self.test_workflow_state) + + self.assertEqual(self.resolved_test_link, None) + + def test_workflow_runtime_proxy_state_document_list_link_with_access(self): + self.test_link = link_workflow_runtime_proxy_state_document_list + + self._create_test_workflow(add_document_type=True) + self._create_test_workflow_state() + + self.grant_access( + obj=self.test_workflow, permission=permission_workflow_view + ) + + self._resolve_test_link(test_object=self.test_workflow_state) + + self.assertNotEqual(self.resolved_test_link, None) + self.assertEqual( + self.resolved_test_link.url, + reverse( + viewname=self.test_link.view, kwargs={ + 'pk': self.test_workflow_state.pk + } + ) + ) + + def test_workflow_runtime_proxy_state_list_link_no_permission(self): + self.test_link = link_workflow_runtime_proxy_state_list + + self._create_test_workflow(add_document_type=True) + + self._resolve_test_link(test_object=self.test_workflow) + self.assertEqual(self.resolved_test_link, None) + + def test_workflow_runtime_proxy_state_list_link_with_access(self): + self.test_link = link_workflow_runtime_proxy_state_list + + self._create_test_workflow(add_document_type=True) + + self.grant_access( + obj=self.test_workflow, permission=permission_workflow_view + ) + + self._resolve_test_link(test_object=self.test_workflow) + + self.assertNotEqual(self.resolved_test_link, None) + self.assertEqual( + self.resolved_test_link.url, + reverse( + viewname=self.test_link.view, kwargs={ + 'pk': self.test_workflow.pk + } + ) + )