mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-02 18:47:10 -05:00 
			
		
		
		
	testing the importer
This commit is contained in:
		
							parent
							
								
									1e9e347f15
								
							
						
					
					
						commit
						bfbdd6e198
					
				@ -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)
 | 
			
		||||
 | 
			
		||||
@ -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:
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user