Fix document list view and add tests
Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user