Fix document cabinet list API view

Thanks for forum user "jere" for the report. Forum topic 1039.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-08-22 00:04:11 -04:00
parent b19b602a53
commit e45443fdea
5 changed files with 76 additions and 4 deletions

View File

@@ -9,6 +9,8 @@
file_metadata app.
* Add internal_name field to workflow serializer.
Fixes workflow API creation view.
* Fix document cabinet list view. Thanks for forum user
"jere" for the report. Forum topic 1039.
3.2.6 (2019-07-10)
==================

View File

@@ -16,6 +16,8 @@ Changes
file_metadata app.
- Add internal_name field to workflow serializer.
Fixes workflow API creation view.
- Fix document cabinet list view. Thanks for forum user
"jere" for the report. Forum topic 1039.
Removals
--------

View File

@@ -39,7 +39,7 @@ class APIDocumentCabinetListView(generics.ListAPIView):
user=self.request.user
)
queryset = document.get_cabinets()
queryset = document.document_cabinets()
return queryset

View File

@@ -149,3 +149,12 @@ class CabinetViewTestMixin(object):
'cabinets': self.test_cabinet.pk
}
)
class DocumentCabinetAPIViewTestMixin(object):
def _request_test_document_cabinet_list_view(self):
return self.get(
viewname='rest_api:document-cabinet-list', kwargs={
'pk': self.test_document.pk
}
)

View File

@@ -15,10 +15,14 @@ from ..permissions import (
permission_cabinet_remove_document, permission_cabinet_view
)
from .mixins import CabinetAPIViewTestMixin, CabinetTestMixin
from .mixins import (
CabinetAPIViewTestMixin, CabinetTestMixin, DocumentCabinetAPIViewTestMixin
)
class CabinetAPITestCase(CabinetAPIViewTestMixin, CabinetTestMixin, BaseAPITestCase):
class CabinetAPITestCase(
CabinetAPIViewTestMixin, CabinetTestMixin, BaseAPITestCase
):
def test_cabinet_create_api_view_no_permission(self):
cabinet_count = Cabinet.objects.count()
@@ -135,7 +139,9 @@ class CabinetAPITestCase(CabinetAPIViewTestMixin, CabinetTestMixin, BaseAPITestC
)
class CabinetDocumentAPITestCase(CabinetAPIViewTestMixin, CabinetTestMixin, DocumentTestMixin, BaseAPITestCase):
class CabinetDocumentAPITestCase(
CabinetAPIViewTestMixin, CabinetTestMixin, DocumentTestMixin, BaseAPITestCase
):
auto_upload_document = False
def test_cabinet_create_with_single_document(self):
@@ -288,3 +294,56 @@ class CabinetDocumentAPITestCase(CabinetAPIViewTestMixin, CabinetTestMixin, Docu
qs=self.test_cabinet.documents.all(),
values=map(repr, self.test_documents)
)
class DocumentCabinetAPITestCase(
CabinetAPIViewTestMixin, CabinetTestMixin,
DocumentCabinetAPIViewTestMixin, DocumentTestMixin, BaseAPITestCase
):
auto_upload_document = False
def setUp(self):
super(DocumentCabinetAPITestCase, self).setUp()
self.upload_document()
self._create_test_cabinet()
self.test_cabinet.documents.add(self.test_document)
def test_document_cabinet_list_view_no_permission(self):
response = self._request_test_document_cabinet_list_view()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertTrue('count' not in response.data)
def test_document_cabinet_list_view_with_document_access(self):
self.grant_access(
obj=self.test_document, permission=permission_document_view,
)
response = self._request_test_document_cabinet_list_view()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data['count'], 0)
def test_document_cabinet_list_view_with_cabinet_access(self):
self.grant_access(
obj=self.test_cabinet, permission=permission_cabinet_view,
)
response = self._request_test_document_cabinet_list_view()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertTrue('count' not in response.data)
def test_document_cabinet_list_view_with_full_access(self):
self.grant_access(
obj=self.test_document, permission=permission_document_view,
)
self.grant_access(
obj=self.test_cabinet, permission=permission_cabinet_view,
)
response = self._request_test_document_cabinet_list_view()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(
response.data['count'], Cabinet.objects.all().count()
)
self.assertEqual(
response.data['results'][0]['id'], self.test_cabinet.pk
)