import faker import pytest from fansifter_common.utils import timezone from email_campaigns.automated.handlers import GetAutomatedEmailHandler from email_campaigns.automated.models import AutomatedEmail from email_campaigns.emails.exceptions import EmailNotFoundError from email_campaigns.emails.handlers.get_email import GetEmailRequest from tests.unit.types import CreateModel class TestGetAutomatedEmailHandler: @pytest.mark.db def test_get_automated_email( self, handler: GetAutomatedEmailHandler, create_model: CreateModel, faker: faker.Faker, identity_id: str, ) -> None: automated_email = create_model( AutomatedEmail, sender_name=faker.name(), subject=faker.sentence(), preview_text=faker.sentence(), email_domain=None, email_username=faker.user_name(), ) result = handler.handle( GetEmailRequest(identity_id=identity_id, email_id=automated_email.id) ) assert result == automated_email @pytest.mark.db def test_get_automated_email_excludes_deleted( self, handler: GetAutomatedEmailHandler, create_model: CreateModel, identity_id: str, ) -> None: automated_email = create_model( AutomatedEmail, deleted_at=timezone.now(), ) with pytest.raises(EmailNotFoundError): handler.handle( GetEmailRequest(identity_id=identity_id, email_id=automated_email.id) )