diff --git a/mayan/apps/document_states/tests/mixins.py b/mayan/apps/document_states/tests/mixins.py index ff09844425..84f5759780 100644 --- a/mayan/apps/document_states/tests/mixins.py +++ b/mayan/apps/document_states/tests/mixins.py @@ -17,6 +17,33 @@ class TestWorkflowAction(WorkflowAction): label = 'test workflow state action' +class WorkflowRuntimeProxyStateViewTestMixin(object): + def _request_test_workflow_runtime_proxy_state_list_view(self): + return self.get( + viewname='document_states:workflow_runtime_proxy_state_list', + kwargs={'pk': self.test_workflow.pk} + ) + + def _request_test_workflow_runtime_proxy_state_document_list_view(self): + return self.get( + viewname='document_states:workflow_runtime_proxy_state_document_list', + kwargs={'pk': self.test_workflow_state_1.pk} + ) + + +class WorkflowRuntimeProxyViewTestMixin(object): + def _request_test_workflow_runtime_proxy_list_view(self): + return self.get( + viewname='document_states:workflow_runtime_proxy_list' + ) + + def _request_test_workflow_runtime_proxy_document_list_view(self): + return self.get( + viewname='document_states:workflow_runtime_proxy_document_list', + kwargs={'pk': self.test_workflow.pk} + ) + + class WorkflowStateActionTestMixin(object): TestWorkflowAction = TestWorkflowAction test_workflow_state_action_path = 'mayan.apps.document_states.tests.mixins.TestWorkflowAction' diff --git a/mayan/apps/document_states/tests/test_workflow_runtime_proxy_views.py b/mayan/apps/document_states/tests/test_workflow_runtime_proxy_views.py new file mode 100644 index 0000000000..f9e6b05b1b --- /dev/null +++ b/mayan/apps/document_states/tests/test_workflow_runtime_proxy_views.py @@ -0,0 +1,96 @@ +from __future__ import unicode_literals + +from mayan.apps.common.tests.base import GenericViewTestCase + +from ..permissions import permission_workflow_view + +from .mixins import ( + WorkflowRuntimeProxyStateViewTestMixin, + WorkflowRuntimeProxyViewTestMixin, WorkflowTestMixin +) + + +class WorkflowRuntimeProxyViewTestCase( + WorkflowRuntimeProxyViewTestMixin, WorkflowTestMixin, GenericViewTestCase +): + def setUp(self): + super(WorkflowRuntimeProxyViewTestCase, self).setUp() + self._create_test_workflow() + + def test_workflow_runtime_proxy_document_list_view_no_permission(self): + response = self._request_test_workflow_runtime_proxy_document_list_view() + self.assertNotContains( + response=response, text=self.test_workflow.label, status_code=404 + ) + + def test_workflow_runtime_proxy_document_list_view_with_access(self): + self.grant_access( + obj=self.test_workflow, permission=permission_workflow_view + ) + + response = self._request_test_workflow_runtime_proxy_document_list_view() + self.assertContains( + response=response, text=self.test_workflow.label, status_code=200 + ) + + def test_workflow_runtime_proxy_list_view_no_permission(self): + response = self._request_test_workflow_runtime_proxy_list_view() + self.assertNotContains( + response=response, text=self.test_workflow.label, status_code=200 + ) + + def test_workflow_runtime_proxy_list_view_with_access(self): + self.grant_access( + obj=self.test_workflow, permission=permission_workflow_view + ) + + response = self._request_test_workflow_runtime_proxy_list_view() + self.assertContains( + response=response, text=self.test_workflow.label, status_code=200 + ) + + +class WorkflowRuntimeProxyStateViewTestCase( + WorkflowRuntimeProxyStateViewTestMixin, WorkflowTestMixin, + GenericViewTestCase +): + def setUp(self): + super(WorkflowRuntimeProxyStateViewTestCase, self).setUp() + self._create_test_workflow() + self._create_test_workflow_states() + + def test_workflow_runtime_proxy_state_document_list_view_no_permission(self): + response = self._request_test_workflow_runtime_proxy_state_document_list_view() + self.assertNotContains( + response=response, text=self.test_workflow_state_1.label, + status_code=404 + ) + + def test_workflow_runtime_proxy_state_document_list_view_with_access(self): + self.grant_access( + obj=self.test_workflow, permission=permission_workflow_view + ) + + response = self._request_test_workflow_runtime_proxy_state_document_list_view() + self.assertContains( + response=response, text=self.test_workflow_state_1.label, + status_code=200 + ) + + def test_workflow_runtime_proxy_state_list_view_no_permission(self): + response = self._request_test_workflow_runtime_proxy_state_list_view() + self.assertNotContains( + response=response, text=self.test_workflow_state_1.label, + status_code=404 + ) + + def test_workflow_runtime_proxy_state_list_view_with_access(self): + self.grant_access( + obj=self.test_workflow, permission=permission_workflow_view + ) + + response = self._request_test_workflow_runtime_proxy_state_list_view() + self.assertContains( + response=response, text=self.test_workflow_state_1.label, + status_code=200 + )