from dataclasses import replace from unittest import mock import pytest from fansifter_common.adapters.ows_users import Identity from email_campaigns.campaigns.handlers import GetCampaignPreviewHandler from email_campaigns.campaigns.models import EmailCampaign from email_campaigns.emails.handlers import GetEmailPreviewRequest from tests.unit.types import BuildModel, CreateModel class TestGetCampaignPreviewHandler: @pytest.mark.db def test_default_returns_raw_preview_without_substitutions( self, handler: GetCampaignPreviewHandler, create_model: CreateModel, identity_id: str, sendgrid_client_mock: mock.MagicMock, ) -> None: sendgrid_client_mock.reset_mock() campaign = create_model( EmailCampaign, html_content="

Hi -firstName-!

-privacyFooterBlock-", css_content="p { color: red; }", ) preview = handler.handle( GetEmailPreviewRequest( identity_id=identity_id, email_id=campaign.id, ) ) assert preview == replace( campaign.preview, favorite_fonts=preview.favorite_fonts ) sendgrid_client_mock.get_user_privacy_footer_block.assert_not_called() @pytest.mark.db def test_with_substitutions_replaces_first_name_with_fallback( self, handler: GetCampaignPreviewHandler, create_model: CreateModel, identity_id: str, sendgrid_client_mock: mock.MagicMock, ) -> None: sendgrid_client_mock.get_user_privacy_footer_block.return_value = "