test the sending of a test email using the sendtestemail command the mail is sent with the correct subject and recipient the mail may be sent with multiple recipients the mail should be sent to the email addresses specified in settings managers the mail should be sent to the email addresses specified in settings admin the mail should be sent to the email addresses specified in both settings managers and settings admins test the sending of a test email using the sendtestemail command the mail is sent with the correct subject and recipient the mail may be sent with multiple recipients the mail should be sent to the email addresses specified in settings managers the mail should be sent to the email addresses specified in settings admin the mail should be sent to the email addresses specified in both settings managers and settings admins
from django.core import mail
from django.core.management import call_command
from django.test import SimpleTestCase, override_settings


@override_settings(
    ADMINS=(
        ("Admin", "admin@example.com"),
        ("Admin and Manager", "admin_and_manager@example.com"),
    ),
    MANAGERS=(
        ("Manager", "manager@example.com"),
        ("Admin and Manager", "admin_and_manager@example.com"),
    ),
)
class SendTestEmailManagementCommand(SimpleTestCase):
    

    def test_single_receiver(self):
        
        recipient = "joe@example.com"
        call_command("sendtestemail", recipient)
        self.assertEqual(len(mail.outbox), 1)
        mail_message = mail.outbox[0]
        self.assertEqual(mail_message.subject[0:15], "Test email from")
        self.assertEqual(mail_message.recipients(), [recipient])

    def test_multiple_receivers(self):
        
        recipients = ["joe@example.com", "jane@example.com"]
        call_command("sendtestemail", recipients[0], recipients[1])
        self.assertEqual(len(mail.outbox), 1)
        mail_message = mail.outbox[0]
        self.assertEqual(mail_message.subject[0:15], "Test email from")
        self.assertEqual(
            sorted(mail_message.recipients()),
            [
                "jane@example.com",
                "joe@example.com",
            ],
        )

    def test_manager_receivers(self):
        
        call_command("sendtestemail", "--managers")
        self.assertEqual(len(mail.outbox), 1)
        mail_message = mail.outbox[0]
        self.assertEqual(
            sorted(mail_message.recipients()),
            [
                "admin_and_manager@example.com",
                "manager@example.com",
            ],
        )

    def test_admin_receivers(self):
        
        call_command("sendtestemail", "--admins")
        self.assertEqual(len(mail.outbox), 1)
        mail_message = mail.outbox[0]
        self.assertEqual(
            sorted(mail_message.recipients()),
            [
                "admin@example.com",
                "admin_and_manager@example.com",
            ],
        )

    def test_manager_and_admin_receivers(self):
        
        call_command("sendtestemail", "--managers", "--admins")
        self.assertEqual(len(mail.outbox), 2)
        manager_mail = mail.outbox[0]
        self.assertEqual(
            sorted(manager_mail.recipients()),
            [
                "admin_and_manager@example.com",
                "manager@example.com",
            ],
        )
        admin_mail = mail.outbox[1]
        self.assertEqual(
            sorted(admin_mail.recipients()),
            [
                "admin@example.com",
                "admin_and_manager@example.com",
            ],
        )