From 7a67604551a8410a2579ecebab67b0c7e51f32e0 Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Sun, 30 Jul 2017 20:08:34 -0400 Subject: [PATCH] Add test and test document for PDFs with indirect object for the rotation value. GitHub issue #261. Thanks to @Chluz for the issue, the debug information and the test document! Signed-off-by: Roberto Rosario --- .../sample_documents/indirect_rotate.pdf | Bin 0 -> 171535 bytes mayan/apps/documents/tests/literals.py | 6 ++++++ mayan/apps/documents/tests/test_models.py | 20 +++++++++++++++++- 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 mayan/apps/documents/tests/contrib/sample_documents/indirect_rotate.pdf diff --git a/mayan/apps/documents/tests/contrib/sample_documents/indirect_rotate.pdf b/mayan/apps/documents/tests/contrib/sample_documents/indirect_rotate.pdf new file mode 100644 index 0000000000000000000000000000000000000000..828dbfb9216cfc8d6dd2f4d45a454f70c1b7e31e GIT binary patch literal 171535 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 T^3=yv4N+{YAtE9rJ=O4Ew&ZIv literal 0 HcmV?d00001 diff --git a/mayan/apps/documents/tests/literals.py b/mayan/apps/documents/tests/literals.py index 435c173ee2..35415d453e 100644 --- a/mayan/apps/documents/tests/literals.py +++ b/mayan/apps/documents/tests/literals.py @@ -16,6 +16,7 @@ __all__ = ( 'TEST_NON_ASCII_COMPRESSED_DOCUMENT_FILENAME', 'TEST_NON_ASCII_COMPRESSED_DOCUMENT_PATH', 'TEST_NON_ASCII_DOCUMENT_FILENAME', 'TEST_NON_ASCII_DOCUMENT_PATH', + 'TEST_PDF_INDIRECT_ROTATE_LABEL', 'TEST_PDF_INDIRECT_ROTATE_PATH', 'TEST_SMALL_DOCUMENT_CHECKSUM', 'TEST_SMALL_DOCUMENT_FILENAME', 'TEST_SMALL_DOCUMENT_PATH', 'TEST_DOCUMENT_VERSION_COMMENT_EDITED', ) @@ -37,6 +38,7 @@ TEST_MULTI_PAGE_TIFF = 'multi_page.tiff' TEST_NON_ASCII_COMPRESSED_DOCUMENT_FILENAME = 'I18N_title_áéíóúüñÑ.png.zip' TEST_NON_ASCII_DOCUMENT_FILENAME = 'I18N_title_áéíóúüñÑ.png' TEST_OFFICE_DOCUMENT = 'simple_2_page_document.doc' +TEST_PDF_INDIRECT_ROTATE_LABEL = 'indirect_rotate.pdf' TEST_SMALL_DOCUMENT_FILENAME = 'title_page.png' TEST_SMALL_DOCUMENT_CHECKSUM = 'efa10e6cc21f83078aaa94d5cbe51de67b51af706143b\ afc7fd6d4c02124879a' @@ -72,6 +74,10 @@ TEST_NON_ASCII_DOCUMENT_PATH = os.path.join( settings.BASE_DIR, 'apps', 'documents', 'tests', 'contrib', 'sample_documents', TEST_NON_ASCII_DOCUMENT_FILENAME ) +TEST_PDF_INDIRECT_ROTATE_PATH = os.path.join( + settings.BASE_DIR, 'apps', 'documents', 'tests', 'contrib', + 'sample_documents', TEST_PDF_INDIRECT_ROTATE_LABEL +) TEST_OFFICE_DOCUMENT_PATH = os.path.join( settings.BASE_DIR, 'apps', 'documents', 'tests', 'contrib', 'sample_documents', TEST_OFFICE_DOCUMENT diff --git a/mayan/apps/documents/tests/test_models.py b/mayan/apps/documents/tests/test_models.py index 4977cefa99..88223b83eb 100644 --- a/mayan/apps/documents/tests/test_models.py +++ b/mayan/apps/documents/tests/test_models.py @@ -11,7 +11,8 @@ from ..models import DeletedDocument, Document, DocumentType from .literals import ( TEST_DOCUMENT_TYPE_LABEL, TEST_DOCUMENT_PATH, TEST_MULTI_PAGE_TIFF_PATH, - TEST_OFFICE_DOCUMENT_PATH, TEST_SMALL_DOCUMENT_PATH + TEST_PDF_INDIRECT_ROTATE_PATH, TEST_OFFICE_DOCUMENT_PATH, + TEST_SMALL_DOCUMENT_PATH ) @@ -156,6 +157,23 @@ class DocumentTestCase(BaseTestCase): self.assertEqual(DeletedDocument.objects.count(), 0) +@override_settings(OCR_AUTO_OCR=False) +class PDFCompatibilityTestCase(BaseTestCase): + def test_indirect_rotate(self): + self.document_type = DocumentType.objects.create( + label=TEST_DOCUMENT_TYPE_LABEL + ) + + with open(TEST_PDF_INDIRECT_ROTATE_PATH) as file_object: + self.document = self.document_type.new_document( + file_object=file_object + ) + + self.assertQuerysetEqual( + qs=Document.objects.all(), values=(repr(self.document),) + ) + + @override_settings(OCR_AUTO_OCR=False) class OfficeDocumentTestCase(BaseTestCase): def setUp(self):