From bfbdd6e198b1537ac563789cdce255d93e09aa36 Mon Sep 17 00:00:00 2001 From: jonaswinkler Date: Sat, 5 Dec 2020 13:19:14 +0100 Subject: [PATCH] testing the importer --- .../tests/test_management_exporter.py | 20 ++++++++++++++----- src/documents/tests/utils.py | 18 +++++++++++++++-- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/src/documents/tests/test_management_exporter.py b/src/documents/tests/test_management_exporter.py index dca2114c2..284d6108d 100644 --- a/src/documents/tests/test_management_exporter.py +++ b/src/documents/tests/test_management_exporter.py @@ -9,10 +9,11 @@ from django.test import TestCase, override_settings from documents.management.commands import document_exporter from documents.models import Document, Tag, DocumentType, Correspondent -from documents.tests.utils import DirectoriesMixin +from documents.sanity_checker import check_sanity +from documents.tests.utils import DirectoriesMixin, paperless_environment -class TestExporter(DirectoriesMixin, TestCase): +class TestExportImport(DirectoriesMixin, TestCase): @override_settings( PASSPHRASE="test" @@ -23,8 +24,8 @@ class TestExporter(DirectoriesMixin, TestCase): file = os.path.join(self.dirs.originals_dir, "0000001.pdf") - Document.objects.create(checksum="42995833e01aea9b3edee44bbfdd7ce1", archive_checksum="62acb0bcbfbcaa62ca6ad3668e4e404b", title="wow", filename="0000001.pdf", id=1, mime_type="application/pdf") - Document.objects.create(checksum="9c9691e51741c1f4f41a20896af31770", title="wow", filename="0000002.pdf.gpg", id=2, mime_type="application/pdf", storage_type=Document.STORAGE_TYPE_GPG) + Document.objects.create(content="Content", checksum="42995833e01aea9b3edee44bbfdd7ce1", archive_checksum="62acb0bcbfbcaa62ca6ad3668e4e404b", title="wow", filename="0000001.pdf", id=1, mime_type="application/pdf") + Document.objects.create(content="Content", checksum="9c9691e51741c1f4f41a20896af31770", title="wow", filename="0000002.pdf.gpg", id=2, mime_type="application/pdf", storage_type=Document.STORAGE_TYPE_GPG) Tag.objects.create(name="t") DocumentType.objects.create(name="dt") Correspondent.objects.create(name="c") @@ -56,6 +57,15 @@ class TestExporter(DirectoriesMixin, TestCase): checksum = hashlib.md5(f.read()).hexdigest() self.assertEqual(checksum, element['fields']['archive_checksum']) - Document.objects.create(checksum="AAAAAAAAAAAAAAAAA", title="wow", filename="0000004.pdf", id=3, mime_type="application/pdf") + with paperless_environment() as dirs: + call_command('document_importer', target) + messages = check_sanity() + # everything is alright after the test + self.assertEqual(len(messages), 0, str([str(m) for m in messages])) + def test_export_missing_files(self): + + target = tempfile.mkdtemp() + call_command('document_exporter', target) + Document.objects.create(checksum="AAAAAAAAAAAAAAAAA", title="wow", filename="0000004.pdf", id=3, mime_type="application/pdf") self.assertRaises(FileNotFoundError, call_command, 'document_exporter', target) diff --git a/src/documents/tests/utils.py b/src/documents/tests/utils.py index 38788f6d6..7f9d50ed5 100644 --- a/src/documents/tests/utils.py +++ b/src/documents/tests/utils.py @@ -2,6 +2,7 @@ import os import shutil import tempfile from collections import namedtuple +from contextlib import contextmanager from django.test import override_settings @@ -24,7 +25,7 @@ def setup_directories(): os.makedirs(dirs.thumbnail_dir, exist_ok=True) os.makedirs(dirs.archive_dir, exist_ok=True) - override_settings( + dirs.settings_override = override_settings( DATA_DIR=dirs.data_dir, SCRATCH_DIR=dirs.scratch_dir, MEDIA_ROOT=dirs.media_dir, @@ -35,7 +36,8 @@ def setup_directories(): INDEX_DIR=dirs.index_dir, MODEL_FILE=os.path.join(dirs.data_dir, "classification_model.pickle") - ).enable() + ) + dirs.settings_override.enable() return dirs @@ -45,6 +47,18 @@ def remove_dirs(dirs): shutil.rmtree(dirs.data_dir, ignore_errors=True) shutil.rmtree(dirs.scratch_dir, ignore_errors=True) shutil.rmtree(dirs.consumption_dir, ignore_errors=True) + dirs.settings_override.disable() + + +@contextmanager +def paperless_environment(): + dirs = None + try: + dirs = setup_directories() + yield dirs + finally: + if dirs: + remove_dirs(dirs) class DirectoriesMixin: