from unittest import mock
import pytest
from fansifter_common.adapters.stripo.exceptions import StripoClientError
from app.exceptions import EmailSendError
from app.handler import _build_email_send
from app.models import AutomatedEmail, Domain
from tests.unit.helpers import create_model
@pytest.mark.db
def test_uses_compressed_content_when_present(
stripo_client_mock: mock.MagicMock,
ows_account_client_mock: mock.MagicMock,
) -> None:
domain = create_model(Domain)
automated_email = create_model(
AutomatedEmail,
domain_id=domain.id,
compressed_content="",
)
ows_account_client_mock.get_vendor.return_value = mock.MagicMock(
vendor_id=1, name="vendor", brand="SME"
)
result = _build_email_send(
automated_email_id=automated_email.id,
automated_email_trigger_id="trig-1",
confirmation_id=None,
)
assert result.html_content == ""
stripo_client_mock.compress.assert_not_called()
@pytest.mark.db
def test_falls_back_to_compress_when_compressed_is_null(
stripo_client_mock: mock.MagicMock,
ows_account_client_mock: mock.MagicMock,
) -> None:
domain = create_model(Domain)
automated_email = create_model(
AutomatedEmail,
domain_id=domain.id,
compressed_content=None,
html_content="
",
css_content="p{}",
)
ows_account_client_mock.get_vendor.return_value = mock.MagicMock(
vendor_id=1, name="vendor", brand="SME"
)
stripo_client_mock.compress.return_value = ""
result = _build_email_send(
automated_email_id=automated_email.id,
automated_email_trigger_id="trig-1",
confirmation_id=None,
)
assert result.html_content == ""
stripo_client_mock.compress.assert_called_once_with(html="