mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-11-03 03:16:10 -06:00 
			
		
		
		
	tests for mail tasks
This commit is contained in:
		@@ -17,8 +17,8 @@ def process_mail_accounts():
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def process_mail_account(name):
 | 
			
		||||
    account = MailAccount.objects.find(name=name)
 | 
			
		||||
    if account:
 | 
			
		||||
    try:
 | 
			
		||||
        account = MailAccount.objects.get(name=name)
 | 
			
		||||
        MailAccountHandler().handle_mail_account(account)
 | 
			
		||||
    else:
 | 
			
		||||
    except MailAccount.DoesNotExist:
 | 
			
		||||
        logging.error("Unknown mail acccount: {}".format(name))
 | 
			
		||||
 
 | 
			
		||||
@@ -3,10 +3,12 @@ from collections import namedtuple
 | 
			
		||||
from typing import ContextManager
 | 
			
		||||
from unittest import mock
 | 
			
		||||
 | 
			
		||||
from django.core.management import call_command
 | 
			
		||||
from django.test import TestCase
 | 
			
		||||
from imap_tools import MailMessageFlags, MailboxFolderSelectError
 | 
			
		||||
 | 
			
		||||
from documents.models import Correspondent
 | 
			
		||||
from paperless_mail import tasks
 | 
			
		||||
from paperless_mail.mail import MailError, MailAccountHandler, get_correspondent, get_title
 | 
			
		||||
from paperless_mail.models import MailRule, MailAccount
 | 
			
		||||
 | 
			
		||||
@@ -390,3 +392,43 @@ class TestMail(TestCase):
 | 
			
		||||
        self.mail_account_handler.handle_mail_account(account)
 | 
			
		||||
        self.assertEqual(len(self.bogus_mailbox.messages), 2)
 | 
			
		||||
        self.assertEqual(self.async_task.call_count, 5)
 | 
			
		||||
 | 
			
		||||
class TestManagementCommand(TestCase):
 | 
			
		||||
 | 
			
		||||
    @mock.patch("paperless_mail.management.commands.mail_fetcher.tasks.process_mail_accounts")
 | 
			
		||||
    def test_mail_fetcher(self, m):
 | 
			
		||||
 | 
			
		||||
        call_command("mail_fetcher")
 | 
			
		||||
 | 
			
		||||
        m.assert_called_once()
 | 
			
		||||
 | 
			
		||||
class TestTasks(TestCase):
 | 
			
		||||
 | 
			
		||||
    @mock.patch("paperless_mail.tasks.MailAccountHandler.handle_mail_account")
 | 
			
		||||
    def test_all_accounts(self, m):
 | 
			
		||||
        m.side_effect = lambda account: 6
 | 
			
		||||
 | 
			
		||||
        MailAccount.objects.create(name="A", imap_server="A", username="A", password="A")
 | 
			
		||||
        MailAccount.objects.create(name="B", imap_server="A", username="A", password="A")
 | 
			
		||||
 | 
			
		||||
        result = tasks.process_mail_accounts()
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(m.call_count, 2)
 | 
			
		||||
        self.assertIn("Added 12", result)
 | 
			
		||||
 | 
			
		||||
        m.side_effect = lambda account: 0
 | 
			
		||||
        result = tasks.process_mail_accounts()
 | 
			
		||||
        self.assertIn("No new", result)
 | 
			
		||||
 | 
			
		||||
    @mock.patch("paperless_mail.tasks.MailAccountHandler.handle_mail_account")
 | 
			
		||||
    def test_single_accounts(self, m):
 | 
			
		||||
 | 
			
		||||
        MailAccount.objects.create(name="A", imap_server="A", username="A", password="A")
 | 
			
		||||
 | 
			
		||||
        tasks.process_mail_account("A")
 | 
			
		||||
 | 
			
		||||
        m.assert_called_once()
 | 
			
		||||
        m.reset_mock()
 | 
			
		||||
 | 
			
		||||
        tasks.process_mail_account("B")
 | 
			
		||||
        m.assert_not_called()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user