Refactor the parsing app API

Add additional API and view tests.

Add success and multi document titles strings.

Make use of external mixin in the document type submit view.

Puntuate all view text strings.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2019-02-22 23:46:15 -04:00
parent 3917ca667a
commit d546967d1d
8 changed files with 466 additions and 155 deletions

View File

@@ -7,35 +7,134 @@ from rest_framework import status
from mayan.apps.documents.tests import TEST_HYBRID_DOCUMENT, DocumentTestMixin
from mayan.apps.rest_api.tests import BaseAPITestCase
from ..permissions import permission_content_view
from ..permissions import permission_content_view, permission_parse_document
TEST_DOCUMENT_CONTENT = 'Sample text'
from .literals import TEST_DOCUMENT_CONTENT
@override_settings(DOCUMENT_PARSING_AUTO_PARSING=True)
class DocumentParsingAPITestCase(DocumentTestMixin, BaseAPITestCase):
test_document_filename = TEST_HYBRID_DOCUMENT
class DocumentParsingSubmitAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_document_parsing_submit_view(self):
return self.post(
viewname='rest_api:document-parsing-submit',
kwargs={'document_id': self.document.pk}
)
def _request_document_page_content_view(self):
return self.get(
viewname='rest_api:document-page-content-view',
kargs={
def test_submit_document_no_permission(self):
response = self._request_document_parsing_submit_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertFalse(hasattr(self.document.pages.first(), 'content'))
#TODO: mock OCR here
def test_submit_document_with_access(self):
self.grant_access(
obj=self.document, permission=permission_parse_document
)
response = self._request_document_parsing_submit_view()
self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED)
self.assertTrue(hasattr(self.document.pages.first(), 'content'))
def _request_document_version_parsing_submit_view(self):
return self.post(
viewname='rest_api:document_version-parsing-submit',
kwargs={
'document_id': self.document.pk,
'version_id': self.document.latest_version.pk,
'page_id': self.document.latest_version.pages.first().pk
'document_version_id': self.document.latest_version.pk
}
)
def test_get_document_version_page_content_no_access(self):
response = self._request_document_page_content_view()
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
def test_submit_document_version_no_permission(self):
response = self._request_document_version_parsing_submit_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def test_get_document_version_page_content_with_access(self):
self.assertFalse(hasattr(self.document.pages.first(), 'content'))
def test_submit_document_version_with_access(self):
self.grant_access(
permission=permission_content_view, obj=self.document
obj=self.document, permission=permission_parse_document
)
response = self._request_document_version_parsing_submit_view()
self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED)
self.assertTrue(hasattr(self.document.pages.first(), 'content'))
@override_settings(DOCUMENT_PARSING_AUTO_PARSING=True)
class DocumentParsingContentAPITestCase(DocumentTestMixin, BaseAPITestCase):
test_document_filename = TEST_HYBRID_DOCUMENT
def _request_document_content_view(self):
return self.get(
viewname='rest_api:document-parsing-content',
kwargs={
'document_id': self.test_document.pk,
}
)
def test_get_document_content_no_permission(self):
response = self._request_document_content_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def test_get_document_content_with_access(self):
self.grant_access(
obj=self.document, permission=permission_content_view
)
response = self._request_document_content_view()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertTrue(
TEST_DOCUMENT_CONTENT in response.data['text']
)
def _request_document_page_content_view(self):
latest_version = self.test_document.latest_version
return self.get(
viewname='rest_api:document_page-parsing-content',
kwargs={
'document_id': self.test_document.pk,
'document_version_id': latest_version.pk,
'document_page_id': latest_version.pages.first().pk
}
)
def test_get_document_page_content_no_access(self):
response = self._request_document_page_content_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def test_get_document_page_content_with_access(self):
self.grant_access(
obj=self.document, permission=permission_content_view
)
response = self._request_document_page_content_view()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertTrue(
TEST_DOCUMENT_CONTENT in response.data['content']
TEST_DOCUMENT_CONTENT in response.data['text']
)
def _request_document_version_content_view(self):
latest_version = self.test_document.latest_version
return self.get(
viewname='rest_api:document_version-parsing-content',
kwargs={
'document_id': self.test_document.pk,
'document_version_id': latest_version.pk,
}
)
def test_get_document_version_content_no_permission(self):
response = self._request_document_version_content_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
def test_get_document_version_content_with_access(self):
self.grant_access(
obj=self.document, permission=permission_content_view
)
response = self._request_document_version_content_view()
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertTrue(
TEST_DOCUMENT_CONTENT in response.data['text']
)