Fix trashed document list API view. Add addition trashed document API tests.
This commit is contained in:
@@ -106,7 +106,7 @@ class NewDocumentVersionSerializer(serializers.Serializer):
|
|||||||
class DeletedDocumentSerializer(serializers.HyperlinkedModelSerializer):
|
class DeletedDocumentSerializer(serializers.HyperlinkedModelSerializer):
|
||||||
document_type_label = serializers.SerializerMethodField()
|
document_type_label = serializers.SerializerMethodField()
|
||||||
restore = serializers.HyperlinkedIdentityField(
|
restore = serializers.HyperlinkedIdentityField(
|
||||||
view_name='rest_api:deleteddocument-restore'
|
view_name='rest_api:trasheddocument-restore'
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_document_type_label(self, instance):
|
def get_document_type_label(self, instance):
|
||||||
@@ -115,7 +115,7 @@ class DeletedDocumentSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
class Meta:
|
class Meta:
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
'document_type': {'view_name': 'rest_api:documenttype-detail'},
|
'document_type': {'view_name': 'rest_api:documenttype-detail'},
|
||||||
'url': {'view_name': 'rest_api:deleteddocument-detail'}
|
'url': {'view_name': 'rest_api:trasheddocument-detail'}
|
||||||
}
|
}
|
||||||
fields = (
|
fields = (
|
||||||
'date_added', 'deleted_date_time', 'description', 'document_type',
|
'date_added', 'deleted_date_time', 'description', 'document_type',
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ from django.contrib.auth import get_user_model
|
|||||||
|
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.test import override_settings
|
from django.test import override_settings
|
||||||
|
from django.utils.encoding import force_text
|
||||||
from django.utils.six import BytesIO
|
from django.utils.six import BytesIO
|
||||||
|
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
@@ -93,10 +94,6 @@ class DocumentTypeAPITestCase(APITestCase):
|
|||||||
|
|
||||||
@override_settings(OCR_AUTO_OCR=False)
|
@override_settings(OCR_AUTO_OCR=False)
|
||||||
class DocumentAPITestCase(APITestCase):
|
class DocumentAPITestCase(APITestCase):
|
||||||
"""
|
|
||||||
Test document API endpoints
|
|
||||||
"""
|
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.admin_user = get_user_model().objects.create_superuser(
|
self.admin_user = get_user_model().objects.create_superuser(
|
||||||
username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL,
|
username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL,
|
||||||
@@ -155,51 +152,6 @@ class DocumentAPITestCase(APITestCase):
|
|||||||
)
|
)
|
||||||
self.assertEqual(document.page_count, 47)
|
self.assertEqual(document.page_count, 47)
|
||||||
|
|
||||||
def test_document_move_to_trash(self):
|
|
||||||
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
|
|
||||||
document = self.document_type.new_document(
|
|
||||||
file_object=file_object,
|
|
||||||
)
|
|
||||||
|
|
||||||
self.client.delete(
|
|
||||||
reverse('rest_api:document-detail', args=(document.pk,))
|
|
||||||
)
|
|
||||||
|
|
||||||
self.assertEqual(Document.objects.count(), 0)
|
|
||||||
self.assertEqual(Document.trash.count(), 1)
|
|
||||||
|
|
||||||
def test_deleted_document_delete_from_trash(self):
|
|
||||||
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
|
|
||||||
document = self.document_type.new_document(
|
|
||||||
file_object=file_object,
|
|
||||||
)
|
|
||||||
|
|
||||||
document.delete()
|
|
||||||
|
|
||||||
self.assertEqual(Document.objects.count(), 0)
|
|
||||||
self.assertEqual(Document.trash.count(), 1)
|
|
||||||
|
|
||||||
self.client.delete(
|
|
||||||
reverse('rest_api:trasheddocument-detail', args=(document.pk,))
|
|
||||||
)
|
|
||||||
|
|
||||||
self.assertEqual(Document.trash.count(), 0)
|
|
||||||
|
|
||||||
def test_deleted_document_restore(self):
|
|
||||||
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
|
|
||||||
document = self.document_type.new_document(
|
|
||||||
file_object=file_object,
|
|
||||||
)
|
|
||||||
|
|
||||||
document.delete()
|
|
||||||
|
|
||||||
self.client.post(
|
|
||||||
reverse('rest_api:trasheddocument-restore', args=(document.pk,))
|
|
||||||
)
|
|
||||||
|
|
||||||
self.assertEqual(Document.trash.count(), 0)
|
|
||||||
self.assertEqual(Document.objects.count(), 1)
|
|
||||||
|
|
||||||
def test_document_new_version_upload(self):
|
def test_document_new_version_upload(self):
|
||||||
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
|
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
|
||||||
document = self.document_type.new_document(
|
document = self.document_type.new_document(
|
||||||
@@ -366,5 +318,88 @@ class DocumentAPITestCase(APITestCase):
|
|||||||
TEST_DOCUMENT_DESCRIPTION_EDITED
|
TEST_DOCUMENT_DESCRIPTION_EDITED
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@override_settings(OCR_AUTO_OCR=False)
|
||||||
|
class TrashedDocumentAPITestCase(APITestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.admin_user = get_user_model().objects.create_superuser(
|
||||||
|
username=TEST_ADMIN_USERNAME, email=TEST_ADMIN_EMAIL,
|
||||||
|
password=TEST_ADMIN_PASSWORD
|
||||||
|
)
|
||||||
|
|
||||||
|
self.client.login(
|
||||||
|
username=TEST_ADMIN_USERNAME, password=TEST_ADMIN_PASSWORD
|
||||||
|
)
|
||||||
|
|
||||||
|
self.document_type = DocumentType.objects.create(
|
||||||
|
label=TEST_DOCUMENT_TYPE
|
||||||
|
)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.admin_user.delete()
|
||||||
|
self.document_type.delete()
|
||||||
|
|
||||||
|
def _upload_document(self):
|
||||||
|
with open(TEST_SMALL_DOCUMENT_PATH) as file_object:
|
||||||
|
document = self.document_type.new_document(
|
||||||
|
file_object=file_object,
|
||||||
|
)
|
||||||
|
|
||||||
|
return document
|
||||||
|
|
||||||
|
def test_document_move_to_trash(self):
|
||||||
|
document = self._upload_document()
|
||||||
|
|
||||||
|
self.client.delete(
|
||||||
|
reverse('rest_api:document-detail', args=(document.pk,))
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(Document.objects.count(), 0)
|
||||||
|
self.assertEqual(Document.trash.count(), 1)
|
||||||
|
|
||||||
|
def test_trashed_document_delete_from_trash(self):
|
||||||
|
document = self._upload_document()
|
||||||
|
document.delete()
|
||||||
|
|
||||||
|
self.assertEqual(Document.objects.count(), 0)
|
||||||
|
self.assertEqual(Document.trash.count(), 1)
|
||||||
|
|
||||||
|
self.client.delete(
|
||||||
|
reverse('rest_api:trasheddocument-detail', args=(document.pk,))
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(Document.trash.count(), 0)
|
||||||
|
|
||||||
|
def test_trashed_document_detail_view(self):
|
||||||
|
document = self._upload_document()
|
||||||
|
document.delete()
|
||||||
|
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('rest_api:trasheddocument-detail', args=(document.pk,))
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(response.data['uuid'], force_text(document.uuid))
|
||||||
|
|
||||||
|
def test_trashed_document_list_view(self):
|
||||||
|
document = self._upload_document()
|
||||||
|
document.delete()
|
||||||
|
|
||||||
|
response = self.client.get(
|
||||||
|
reverse('rest_api:trasheddocument-list')
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(response.data['results'][0]['uuid'], force_text(document.uuid))
|
||||||
|
|
||||||
|
def test_trashed_document_restore(self):
|
||||||
|
document = self._upload_document()
|
||||||
|
document.delete()
|
||||||
|
|
||||||
|
self.client.post(
|
||||||
|
reverse('rest_api:trasheddocument-restore', args=(document.pk,))
|
||||||
|
)
|
||||||
|
|
||||||
|
self.assertEqual(Document.trash.count(), 0)
|
||||||
|
self.assertEqual(Document.objects.count(), 1)
|
||||||
|
|
||||||
# TODO: def test_document_set_document_type(self):
|
# TODO: def test_document_set_document_type(self):
|
||||||
# pass
|
# pass
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ from datetime import timedelta
|
|||||||
import time
|
import time
|
||||||
|
|
||||||
from common.tests import BaseTestCase
|
from common.tests import BaseTestCase
|
||||||
from django.test import TestCase, override_settings
|
from django.test import override_settings
|
||||||
|
|
||||||
from ..exceptions import NewDocumentVersionNotAllowed
|
from ..exceptions import NewDocumentVersionNotAllowed
|
||||||
from ..literals import STUB_EXPIRATION_INTERVAL
|
from ..literals import STUB_EXPIRATION_INTERVAL
|
||||||
|
|||||||
@@ -380,7 +380,6 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
|
|||||||
self.assertContains(response, text='queued', status_code=200)
|
self.assertContains(response, text='queued', status_code=200)
|
||||||
self.assertEqual(self.document.pages.count(), page_count)
|
self.assertEqual(self.document.pages.count(), page_count)
|
||||||
|
|
||||||
|
|
||||||
def test_document_multiple_update_page_count_view_no_permission(self):
|
def test_document_multiple_update_page_count_view_no_permission(self):
|
||||||
self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
|
self.login(username=TEST_USER_USERNAME, password=TEST_USER_PASSWORD)
|
||||||
|
|
||||||
|
|||||||
@@ -281,7 +281,8 @@ api_urls = patterns(
|
|||||||
),
|
),
|
||||||
url(
|
url(
|
||||||
r'^document_version/(?P<pk>[0-9]+)/download/$',
|
r'^document_version/(?P<pk>[0-9]+)/download/$',
|
||||||
APIDocumentVersionDownloadView.as_view(), name='documentversion-download'
|
APIDocumentVersionDownloadView.as_view(),
|
||||||
|
name='documentversion-download'
|
||||||
),
|
),
|
||||||
url(
|
url(
|
||||||
r'^document_page/(?P<pk>[0-9]+)/$', APIDocumentPageView.as_view(),
|
r'^document_page/(?P<pk>[0-9]+)/$', APIDocumentPageView.as_view(),
|
||||||
|
|||||||
Reference in New Issue
Block a user