diff --git a/mayan/apps/documents/models/document_type_models.py b/mayan/apps/documents/models/document_type_models.py index 8177e37408..7b6a077283 100644 --- a/mayan/apps/documents/models/document_type_models.py +++ b/mayan/apps/documents/models/document_type_models.py @@ -86,7 +86,8 @@ class DocumentType(models.Model): def get_document_count(self, user): queryset = AccessControlList.objects.restrict_queryset( - permission_document_view, user, queryset=self.documents + permission=permission_document_view, queryset=self.documents, + user=user ) return queryset.count() diff --git a/mayan/apps/documents/tests/literals.py b/mayan/apps/documents/tests/literals.py index f6e15359e9..12e1b85686 100644 --- a/mayan/apps/documents/tests/literals.py +++ b/mayan/apps/documents/tests/literals.py @@ -5,6 +5,8 @@ import os from django.conf import settings +from mayan.apps.common.literals import TIME_DELTA_UNIT_DAYS + __all__ = ( 'TEST_COMPRESSED_DOCUMENTS_FILENAME', 'TEST_COMPRESSED_DOCUMENT_PATH', 'TEST_DEU_DOCUMENT_FILENAME', 'TEST_DEU_DOCUMENT_PATH', @@ -27,6 +29,8 @@ TEST_DEU_DOCUMENT_FILENAME = 'deu_website.png' TEST_DOCUMENT_DESCRIPTION = 'test description' TEST_DOCUMENT_DESCRIPTION_EDITED = 'test document description edited' TEST_DOCUMENT_LABEL_EDITED = 'test document label edited' +TEST_DOCUMENT_TYPE_DELETE_PERIOD = 30 +TEST_DOCUMENT_TYPE_DELETE_TIME_UNIT = TIME_DELTA_UNIT_DAYS TEST_DOCUMENT_TYPE_LABEL = 'test_document_type' TEST_DOCUMENT_TYPE_2_LABEL = 'test document type 2' TEST_DOCUMENT_TYPE_LABEL_EDITED = 'test document type edited label' diff --git a/mayan/apps/documents/tests/mixins.py b/mayan/apps/documents/tests/mixins.py index c5e688ece0..4c28fbe4df 100644 --- a/mayan/apps/documents/tests/mixins.py +++ b/mayan/apps/documents/tests/mixins.py @@ -7,8 +7,10 @@ from django.conf import settings from ..models import DocumentType from .literals import ( - TEST_DOCUMENT_TYPE_LABEL, TEST_SMALL_DOCUMENT_FILENAME, - TEST_DOCUMENT_TYPE_QUICK_LABEL, TEST_SMALL_DOCUMENT_PATH, + TEST_DOCUMENT_TYPE_DELETE_PERIOD, TEST_DOCUMENT_TYPE_DELETE_TIME_UNIT, + TEST_DOCUMENT_TYPE_LABEL, TEST_DOCUMENT_TYPE_LABEL_EDITED, + TEST_DOCUMENT_TYPE_QUICK_LABEL, TEST_DOCUMENT_TYPE_QUICK_LABEL_EDITED, + TEST_SMALL_DOCUMENT_FILENAME, TEST_SMALL_DOCUMENT_PATH, TEST_VERSION_COMMENT ) @@ -64,12 +66,66 @@ class DocumentTestMixin(object): super(DocumentTestMixin, self).tearDown() -class DocumentVersionTestMixin(object): - def _upload_new_version(self): - with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object: - self.test_document.new_version( - comment=TEST_VERSION_COMMENT, file_object=file_object - ) +class DocumentTypeViewTestMixin(object): + def _request_test_document_type_create_view(self): + return self.post( + viewname='documents:document_type_create', + data={ + 'label': TEST_DOCUMENT_TYPE_LABEL, + 'delete_time_period': TEST_DOCUMENT_TYPE_DELETE_PERIOD, + 'delete_time_unit': TEST_DOCUMENT_TYPE_DELETE_TIME_UNIT + } + ) + + def _request_test_document_type_delete_view(self): + return self.post( + viewname='documents:document_type_delete', + kwargs={'pk': self.test_document_type.pk} + ) + + def _request_test_document_type_edit_view(self): + return self.post( + viewname='documents:document_type_edit', + kwargs={'pk': self.test_document_type.pk}, + data={ + 'label': TEST_DOCUMENT_TYPE_LABEL_EDITED, + } + ) + + def _request_test_document_type_list_view(self): + return self.get(viewname='documents:document_type_list') + + +class DocumentTypeQuickLabelViewTestMixin(object): + def _request_quick_label_create(self): + return self.post( + viewname='documents:document_type_filename_create', + kwargs={'pk': self.test_document_type.pk}, + data={ + 'filename': TEST_DOCUMENT_TYPE_QUICK_LABEL, + } + ) + + def _request_quick_label_delete(self): + return self.post( + viewname='documents:document_type_filename_delete', + kwargs={'pk': self.test_document_type_filename.pk} + ) + + def _request_quick_label_edit(self): + return self.post( + viewname='documents:document_type_filename_edit', + kwargs={'pk': self.test_document_type_filename.pk}, + data={ + 'filename': TEST_DOCUMENT_TYPE_QUICK_LABEL_EDITED, + } + ) + + def _request_quick_label_list_view(self): + return self.get( + viewname='documents:document_type_filename_list', + kwargs={'pk': self.test_document_type.pk} + ) class DocumentTypeQuickLabelTestMixin(object): @@ -77,3 +133,11 @@ class DocumentTypeQuickLabelTestMixin(object): self.test_document_type_filename = self.test_document_type.filenames.create( filename=TEST_DOCUMENT_TYPE_QUICK_LABEL ) + + +class DocumentVersionTestMixin(object): + def _upload_new_version(self): + with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object: + self.test_document.new_version( + comment=TEST_VERSION_COMMENT, file_object=file_object + ) diff --git a/mayan/apps/documents/tests/test_api.py b/mayan/apps/documents/tests/test_api.py index 1ad549cc90..0504d6f2c4 100644 --- a/mayan/apps/documents/tests/test_api.py +++ b/mayan/apps/documents/tests/test_api.py @@ -33,7 +33,7 @@ class DocumentTypeAPITestCase(DocumentTestMixin, BaseAPITestCase): auto_upload_document = False auto_create_document_type = False - def _request_document_type_create(self): + def _request_test_document_type_create_view(self): return self.post( viewname='rest_api:documenttype-list', data={ 'label': TEST_DOCUMENT_TYPE_LABEL @@ -41,7 +41,7 @@ class DocumentTypeAPITestCase(DocumentTestMixin, BaseAPITestCase): ) def test_document_type_create_no_permission(self): - response = self._request_document_type_create() + response = self._request_test_document_type_create_view() self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) self.assertEqual(DocumentType.objects.all().count(), 0) @@ -49,7 +49,7 @@ class DocumentTypeAPITestCase(DocumentTestMixin, BaseAPITestCase): def test_document_type_create_with_permission(self): self.grant_permission(permission=permission_document_type_create) - response = self._request_document_type_create() + response = self._request_test_document_type_create_view() self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(DocumentType.objects.all().count(), 1) @@ -119,7 +119,7 @@ class DocumentTypeAPITestCase(DocumentTestMixin, BaseAPITestCase): self.test_document_type.label, TEST_DOCUMENT_TYPE_LABEL_EDITED ) - def _request_document_type_delete(self): + def _request_test_document_type_delete_view(self): return self.delete( viewname='rest_api:documenttype-detail', kwargs={ 'pk': self.test_document_type.pk, @@ -131,7 +131,7 @@ class DocumentTypeAPITestCase(DocumentTestMixin, BaseAPITestCase): label=TEST_DOCUMENT_TYPE_LABEL ) - response = self._request_document_type_delete() + response = self._request_test_document_type_delete_view() self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_document_type_delete_with_access(self): @@ -144,7 +144,7 @@ class DocumentTypeAPITestCase(DocumentTestMixin, BaseAPITestCase): permission=permission_document_type_delete ) - response = self._request_document_type_delete() + response = self._request_test_document_type_delete_view() self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(DocumentType.objects.all().count(), 0) diff --git a/mayan/apps/documents/tests/test_document_type_views.py b/mayan/apps/documents/tests/test_document_type_views.py index f4c3ce4ff1..ffa0ab142f 100644 --- a/mayan/apps/documents/tests/test_document_type_views.py +++ b/mayan/apps/documents/tests/test_document_type_views.py @@ -1,8 +1,5 @@ from __future__ import unicode_literals -from ..literals import ( - DEFAULT_DELETE_PERIOD, DEFAULT_DELETE_TIME_UNIT -) from ..models import DocumentType from ..permissions import ( permission_document_type_create, permission_document_type_delete, @@ -14,24 +11,21 @@ from .literals import ( TEST_DOCUMENT_TYPE_LABEL, TEST_DOCUMENT_TYPE_LABEL_EDITED, TEST_DOCUMENT_TYPE_QUICK_LABEL, TEST_DOCUMENT_TYPE_QUICK_LABEL_EDITED ) -from .mixins import DocumentTypeQuickLabelTestMixin +from .mixins import ( + DocumentTypeQuickLabelTestMixin, DocumentTypeQuickLabelViewTestMixin, + DocumentTypeViewTestMixin +) -class DocumentTypeViewsTestCase(GenericDocumentViewTestCase): - def _request_document_type_create(self): - return self.post( - viewname='documents:document_type_create', - data={ - 'label': TEST_DOCUMENT_TYPE_LABEL, - 'delete_time_period': DEFAULT_DELETE_PERIOD, - 'delete_time_unit': DEFAULT_DELETE_TIME_UNIT - } - ) +class DocumentTypeViewsTestCase( + DocumentTypeViewTestMixin, GenericDocumentViewTestCase +): + auto_upload_document = False def test_document_type_create_view_no_permission(self): self.test_document_type.delete() - response = self._request_document_type_create() + response = self._request_test_document_type_create_view() self.assertEqual(response.status_code, 403) self.assertEqual(DocumentType.objects.count(), 0) @@ -40,7 +34,7 @@ class DocumentTypeViewsTestCase(GenericDocumentViewTestCase): self.test_document_type.delete() self.grant_permission(permission=permission_document_type_create) - response = self._request_document_type_create() + response = self._request_test_document_type_create_view() self.assertEqual(response.status_code, 302) self.assertEqual(DocumentType.objects.count(), 1) @@ -48,14 +42,8 @@ class DocumentTypeViewsTestCase(GenericDocumentViewTestCase): DocumentType.objects.first().label, TEST_DOCUMENT_TYPE_LABEL ) - def _request_document_type_delete(self): - return self.post( - viewname='documents:document_type_delete', - kwargs={'pk': self.test_document_type.pk} - ) - def test_document_type_delete_view_no_permission(self): - response = self._request_document_type_delete() + response = self._request_test_document_type_delete_view() self.assertEqual(response.status_code, 404) self.assertEqual(DocumentType.objects.count(), 1) @@ -66,24 +54,13 @@ class DocumentTypeViewsTestCase(GenericDocumentViewTestCase): permission=permission_document_type_delete ) - response = self._request_document_type_delete() + response = self._request_test_document_type_delete_view() self.assertEqual(response.status_code, 302) self.assertEqual(DocumentType.objects.count(), 0) - def _request_document_type_edit(self): - return self.post( - viewname='documents:document_type_edit', - kwargs={'pk': self.test_document_type.pk}, - data={ - 'label': TEST_DOCUMENT_TYPE_LABEL_EDITED, - 'delete_time_period': DEFAULT_DELETE_PERIOD, - 'delete_time_unit': DEFAULT_DELETE_TIME_UNIT - } - ) - def test_document_type_edit_view_no_permission(self): - response = self._request_document_type_edit() + response = self._request_test_document_type_edit_view() self.assertEqual(response.status_code, 404) self.test_document_type.refresh_from_db() @@ -98,7 +75,7 @@ class DocumentTypeViewsTestCase(GenericDocumentViewTestCase): permission=permission_document_type_edit ) - response = self._request_document_type_edit() + response = self._request_test_document_type_edit_view() self.assertEqual(response.status_code, 302) self.test_document_type.refresh_from_db() @@ -106,18 +83,29 @@ class DocumentTypeViewsTestCase(GenericDocumentViewTestCase): self.test_document_type.label, TEST_DOCUMENT_TYPE_LABEL_EDITED ) + def test_document_type_list_view_no_permission(self): + response = self._request_test_document_type_list_view() + self.assertNotContains( + response=response, text=self.test_document_type, status_code=200 + ) + + def test_document_type_list_view_with_access(self): + self.grant_access( + obj=self.test_document_type, + permission=permission_document_type_view + ) + + response = self._request_test_document_type_list_view() + self.assertContains( + response=response, text=self.test_document_type, status_code=200 + ) + class DocumentTypeQuickLabelViewsTestCase( - DocumentTypeQuickLabelTestMixin, GenericDocumentViewTestCase + DocumentTypeQuickLabelTestMixin, DocumentTypeQuickLabelViewTestMixin, + GenericDocumentViewTestCase ): - def _request_quick_label_create(self): - return self.post( - viewname='documents:document_type_filename_create', - kwargs={'pk': self.test_document_type.pk}, - data={ - 'filename': TEST_DOCUMENT_TYPE_QUICK_LABEL, - } - ) + auto_upload_document = False def test_document_type_quick_label_create_no_access(self): self.grant_access( @@ -141,12 +129,6 @@ class DocumentTypeQuickLabelViewsTestCase( self.assertEqual(self.test_document_type.filenames.count(), 1) - def _request_quick_label_delete(self): - return self.post( - viewname='documents:document_type_filename_delete', - kwargs={'pk': self.test_document_type_filename.pk} - ) - def test_document_type_quick_label_delete_no_access(self): self._create_test_quick_label() response = self._request_quick_label_delete() @@ -170,15 +152,6 @@ class DocumentTypeQuickLabelViewsTestCase( self.test_document_type.filenames.count(), 0 ) - def _request_quick_label_edit(self): - return self.post( - viewname='documents:document_type_filename_edit', - kwargs={'pk': self.test_document_type_filename.pk}, - data={ - 'filename': TEST_DOCUMENT_TYPE_QUICK_LABEL_EDITED, - } - ) - def test_document_type_quick_label_edit_no_access(self): self._create_test_quick_label() @@ -207,12 +180,6 @@ class DocumentTypeQuickLabelViewsTestCase( TEST_DOCUMENT_TYPE_QUICK_LABEL_EDITED ) - def _request_quick_label_list_view(self): - return self.get( - viewname='documents:document_type_filename_list', - kwargs={'pk': self.test_document_type.pk} - ) - def test_document_type_quick_label_list_no_access(self): self._create_test_quick_label() diff --git a/mayan/apps/documents/tests/test_document_views.py b/mayan/apps/documents/tests/test_document_views.py index a8f4d160bd..87bbd09cf7 100644 --- a/mayan/apps/documents/tests/test_document_views.py +++ b/mayan/apps/documents/tests/test_document_views.py @@ -65,7 +65,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase): response=response, text=self.test_document.label, status_code=200 ) - def _request_document_type_edit(self, document_type): + def _request_test_document_type_edit_view(self, document_type): return self.post( viewname='documents:document_document_type_edit', kwargs={'pk': self.test_document.pk}, @@ -81,7 +81,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase): label=TEST_DOCUMENT_TYPE_2_LABEL ) - response = self._request_document_type_edit( + response = self._request_test_document_type_edit_view( document_type=document_type_2 ) self.assertEqual(response.status_code, 404) @@ -107,7 +107,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase): obj=document_type_2, permission=permission_document_create ) - response = self._request_document_type_edit( + response = self._request_test_document_type_edit_view( document_type=document_type_2 ) self.assertEqual(response.status_code, 302)