Files
mayan-edms/mayan/apps/ocr/tests/test_api.py
Roberto Rosario 7e1de2623c Update OCR app
Normalize API base names.

Update ViewSet base class, model classes are not needed
the OCR API views.

Split API tests into content and submit tests.

Puntuate view test strings.

Make use of success and title strings.

Make use of external object mixin in document type
settings view.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
2019-02-22 23:49:48 -04:00

145 lines
5.1 KiB
Python

from __future__ import unicode_literals
from rest_framework import status
from mayan.apps.documents.tests import DocumentTestMixin
from mayan.apps.rest_api.tests import BaseAPITestCase
from ..permissions import (
permission_ocr_document, permission_ocr_content_view,
)
from .literals import TEST_DOCUMENT_CONTENT
class OCRSubmitAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_document_ocr_submit_view(self):
return self.post(
viewname='rest_api:document-ocr-submit',
kwargs={'document_id': self.document.pk}
)
def test_submit_document_no_permission(self):
response = self._request_document_ocr_submit_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertFalse(hasattr(self.document.pages.first(), 'ocr_content'))
#TODO: mock OCR here
def test_submit_document_with_access(self):
self.grant_access(
obj=self.document, permission=permission_ocr_document
)
response = self._request_document_ocr_submit_view()
self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED)
self.assertTrue(hasattr(self.document.pages.first(), 'ocr_content'))
def _request_document_version_ocr_submit_view(self):
return self.post(
viewname='rest_api:document_version-ocr-submit',
kwargs={
'document_id': self.document.pk,
'document_version_id': self.document.latest_version.pk
}
)
def test_submit_document_version_no_permission(self):
response = self._request_document_version_ocr_submit_view()
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertFalse(hasattr(self.document.pages.first(), 'ocr_content'))
def test_submit_document_version_with_access(self):
self.grant_access(
obj=self.document, permission=permission_ocr_document
)
response = self._request_document_version_ocr_submit_view()
self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED)
self.assertTrue(hasattr(self.document.pages.first(), 'ocr_content'))
class OCRContentAPITestCase(DocumentTestMixin, BaseAPITestCase):
def _request_document_content_view(self):
return self.get(
viewname='rest_api:document-ocr-content',
kwargs={
'document_id': self.test_document.pk,
}
)
def test_get_document_content_no_permission(self):
self.document.submit_for_ocr()
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.document.submit_for_ocr()
self.grant_access(
obj=self.document, permission=permission_ocr_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-ocr-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_permission(self):
self.document.submit_for_ocr()
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.document.submit_for_ocr()
self.grant_access(
obj=self.document, permission=permission_ocr_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['text']
)
def _request_document_version_content_view(self):
latest_version = self.test_document.latest_version
return self.get(
viewname='rest_api:document_version-ocr-content',
kwargs={
'document_id': self.test_document.pk,
'document_version_id': latest_version.pk,
}
)
def test_get_document_version_content_no_permission(self):
self.document.submit_for_ocr()
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.document.submit_for_ocr()
self.grant_access(
obj=self.document, permission=permission_ocr_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']
)