Fix document list view and add tests

Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
Roberto Rosario
2019-05-08 17:50:49 -04:00
parent 0b68463ed5
commit e5c1aa5606
6 changed files with 121 additions and 85 deletions

View File

@@ -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()

View File

@@ -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'

View File

@@ -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
)

View File

@@ -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)

View File

@@ -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()

View File

@@ -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)