Update document transformation links and views

Update the URL nomeclature for uniformity.

Add document transformation link tests and improve
the transformation view tests.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-01-29 04:29:27 -04:00
parent a64bc61810
commit fcfe7686fa
7 changed files with 141 additions and 106 deletions

View File

@@ -1,6 +1,7 @@
from __future__ import unicode_literals
import os
import time
from django.conf import settings
@@ -19,6 +20,7 @@ class DocumentTestMixin(object):
auto_upload_document = True
test_document_filename = TEST_SMALL_DOCUMENT_FILENAME
test_document_path = None
use_document_stub = False
def _create_document_type(self):
self.document_type = DocumentType.objects.create(
@@ -31,6 +33,16 @@ class DocumentTestMixin(object):
"""
self.test_document = self.upload_document(*args, **kwargs)
def _create_document_version(self):
# Needed by MySQL as timestamp value doesn't include milliseconds
# resolution
time.sleep(1.01)
self._calculate_test_document_path()
with open(self.test_document_path, mode='rb') as file_object:
self.test_document.new_version(file_object=file_object)
def _calculate_test_document_path(self):
if not self.test_document_path:
self.test_document_path = os.path.join(
@@ -46,6 +58,7 @@ class DocumentTestMixin(object):
if self.auto_upload_document:
self.document = self.upload_document()
self.test_document = self.document
def tearDown(self):
for document_type in DocumentType.objects.all():
@@ -57,11 +70,17 @@ class DocumentTestMixin(object):
document_type = document_type or self.document_type
with open(self.test_document_path, mode='rb') as file_object:
document = document_type.new_document(
file_object=file_object,
if self.use_document_stub:
document = document_type.documents.create(
label=filename or self.test_document_filename
)
else:
with open(self.test_document_path, mode='rb') as file_object:
document = document_type.new_document(
file_object=file_object,
label=filename or self.test_document_filename
)
return document

View File

@@ -314,13 +314,13 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
self.assertEqual(response.status_code, 302)
self.assertEqual(self.document.pages.count(), page_count)
def _request_document_clear_transformations_view(self):
def _request_document_transformations_clear_view(self):
return self.post(
viewname='documents:document_clear_transformations',
viewname='documents:document_transformations_clear',
kwargs={'document_id': self.document.pk}
)
def test_document_clear_transformations_view_no_permission(self):
def test_document_transformations_clear_view_no_permission(self):
document_page = self.document.pages.first()
content_type = ContentType.objects.get_for_model(document_page)
transformation = Transformation.objects.create(
@@ -338,14 +338,14 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
obj=self.document, permission=permission_document_view
)
response = self._request_document_clear_transformations_view()
response = self._request_document_transformations_clear_view()
self.assertEqual(response.status_code, 302)
self.assertQuerysetEqual(
Transformation.objects.get_for_model(document_page),
(repr(transformation),)
)
def test_document_clear_transformations_view_with_access(self):
def test_document_transformations_clear_view_with_access(self):
document_page = self.document.pages.first()
content_type = ContentType.objects.get_for_model(document_page)
transformation = Transformation.objects.create(
@@ -365,19 +365,19 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
obj=self.document, permission=permission_document_view
)
response = self._request_document_clear_transformations_view()
response = self._request_document_transformations_clear_view()
self.assertEqual(response.status_code, 302)
self.assertEqual(
Transformation.objects.get_for_model(document_page).count(), 0
)
def _request_document_multiple_clear_transformations(self):
def _request_document_multiple_transformations_clear(self):
return self.post(
viewname='documents:document_multiple_clear_transformations',
viewname='documents:document_multiple_transformations_clear',
data={'id_list': self.document.pk}
)
def test_document_multiple_clear_transformations_view_no_permission(self):
def test_document_multiple_transformations_clear_view_no_permission(self):
document_page = self.document.pages.first()
content_type = ContentType.objects.get_for_model(document_page)
transformation = Transformation.objects.create(
@@ -393,14 +393,14 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
self.grant_permission(permission=permission_document_view)
response = self._request_document_multiple_clear_transformations()
response = self._request_document_multiple_transformations_clear()
self.assertEqual(response.status_code, 302)
self.assertQuerysetEqual(
Transformation.objects.get_for_model(document_page),
(repr(transformation),)
)
def test_document_multiple_clear_transformations_view_with_access(self):
def test_document_multiple_transformations_clear_view_with_access(self):
document_page = self.document.pages.first()
content_type = ContentType.objects.get_for_model(document_page)
transformation = Transformation.objects.create(
@@ -421,7 +421,7 @@ class DocumentsViewsTestCase(GenericDocumentViewTestCase):
obj=self.document, permission=permission_transformation_delete
)
response = self._request_document_multiple_clear_transformations()
response = self._request_document_multiple_transformations_clear()
self.assertEqual(response.status_code, 302)
self.assertEqual(
Transformation.objects.get_for_model(document_page).count(), 0

View File

@@ -1,54 +1,45 @@
from __future__ import unicode_literals
import time
from django.urls import reverse
from mayan.apps.converter.permissions import (
permission_transformation_delete, permission_transformation_edit
)
from ..links import (
link_trashed_document_restore, link_document_version_download,
link_document_version_revert
link_document_transformations_clear, link_document_transformations_clone,
link_document_version_revert, link_trashed_document_restore
)
from ..models import TrashedDocument
from ..permissions import (
permission_document_download, permission_trashed_document_restore,
permission_document_version_revert
permission_trashed_document_restore, permission_document_version_revert
)
from .base import GenericDocumentViewTestCase
from .literals import TEST_SMALL_DOCUMENT_PATH
class DocumentsLinksTestCase(GenericDocumentViewTestCase):
def test_document_version_revert_link_no_permission(self):
with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document.new_version(file_object=file_object)
self.assertTrue(self.document.versions.count(), 2)
use_document_stub = False
def _resolve_document_version_revert_link(self):
self.add_test_view(test_object=self.document.versions.first())
context = self.get_test_view()
resolved_link = link_document_version_revert.resolve(context=context)
return link_document_version_revert.resolve(context=context)
def test_document_version_revert_link_no_permission(self):
self._create_document_version()
resolved_link = self._resolve_document_version_revert_link()
self.assertEqual(resolved_link, None)
def test_document_version_revert_link_with_access(self):
# Needed by MySQL as milliseconds value is not store in timestamp
# field
time.sleep(1.01)
with open(TEST_SMALL_DOCUMENT_PATH, mode='rb') as file_object:
self.document.new_version(file_object=file_object)
self.assertTrue(self.document.versions.count(), 2)
self._create_document_version()
self.grant_access(
obj=self.document, permission=permission_document_version_revert
)
self.add_test_view(test_object=self.document.versions.first())
context = self.get_test_view()
resolved_link = link_document_version_revert.resolve(context=context)
resolved_link = self._resolve_document_version_revert_link()
self.assertNotEqual(resolved_link, None)
self.assertEqual(
resolved_link.url,
@@ -58,34 +49,59 @@ class DocumentsLinksTestCase(GenericDocumentViewTestCase):
)
)
def test_document_version_download_link_no_permission(self):
self.add_test_view(test_object=self.document.latest_version)
def _resolve_document_transformations_clear_link(self):
self.add_test_view(test_object=self.document)
context = self.get_test_view()
resolved_link = link_document_version_download.resolve(context=context)
return link_document_transformations_clear.resolve(context=context)
def test_document_transformations_clone_link_no_permission(self):
resolved_link = self._resolve_document_transformations_clear_link()
self.assertEqual(resolved_link, None)
def test_document_version_download_link_with_access(self):
def test_document_transformations_clone_link_with_access(self):
self.grant_access(
obj=self.document, permission=permission_document_download
obj=self.document, permission=permission_transformation_delete
)
self.add_test_view(test_object=self.document.latest_version)
context = self.get_test_view()
resolved_link = link_document_version_download.resolve(context=context)
resolved_link = self._resolve_document_transformations_clear_link()
self.assertNotEqual(resolved_link, None)
self.assertEqual(
resolved_link.url,
reverse(
viewname='documents:document_version_download_form',
kwargs={'document_version_id': self.document.latest_version.pk}
viewname='documents:document_transformations_clear',
kwargs={'document_id': self.document.pk}
)
)
def _resolve_document_transformations_clone_link(self):
self.add_test_view(test_object=self.document)
context = self.get_test_view()
return link_document_transformations_clone.resolve(context=context)
def test_document_transformations_clone_link_no_permission(self):
resolved_link = self._resolve_document_transformations_clone_link()
self.assertEqual(resolved_link, None)
def test_document_transformations_clone_link_with_access(self):
self.grant_access(
obj=self.document, permission=permission_transformation_edit
)
resolved_link = self._resolve_document_transformations_clone_link()
self.assertNotEqual(resolved_link, None)
self.assertEqual(
resolved_link.url,
reverse(
viewname='documents:document_transformations_clone',
kwargs={'document_id': self.document.pk}
)
)
class DeletedDocumentsLinksTestCase(GenericDocumentViewTestCase):
def _request_trashed_document_restore_link(self):
use_document_stub = True
def _resolve_trashed_document_restore_link(self):
self.add_test_view(
test_object=TrashedDocument.objects.get(pk=self.document.pk)
)
@@ -95,7 +111,7 @@ class DeletedDocumentsLinksTestCase(GenericDocumentViewTestCase):
def test_deleted_document_restore_link_no_permission(self):
self.document.delete()
resolved_link = self._request_trashed_document_restore_link()
resolved_link = self._resolve_trashed_document_restore_link()
self.assertEqual(resolved_link, None)
@@ -106,7 +122,7 @@ class DeletedDocumentsLinksTestCase(GenericDocumentViewTestCase):
obj=self.document, permission=permission_trashed_document_restore
)
resolved_link = self._request_trashed_document_restore_link()
resolved_link = self._resolve_trashed_document_restore_link()
self.assertNotEqual(resolved_link, None)
self.assertEqual(