import pytest from dirty_equals import IsList from email_campaigns.audiences.models import Audience from email_campaigns.campaigns.enums import EmailCampaignStatus from email_campaigns.campaigns.models import EmailCampaign from email_campaigns.campaigns.services import EmailCampaignService from tests.unit.types import CreateModel, CreatePgModel class TestEmailCampaignService: @pytest.mark.db def test_prefetch_audience( self, service: EmailCampaignService, create_model: CreateModel, create_pg_model: CreatePgModel, ) -> None: audience_1 = create_pg_model(Audience, fan_count=100) audience_2 = create_pg_model(Audience, fan_count=200) email_campaign_1 = create_model( EmailCampaign, status=EmailCampaignStatus.DRAFT, recipients_count=99, audience_id=audience_1.id, ) email_campaign_2 = create_model( EmailCampaign, status=EmailCampaignStatus.SCHEDULED, recipients_count=199, audience_id=audience_2.id, ) email_campaigns = service.prefetch_audience( [email_campaign_1, email_campaign_2] ) assert email_campaigns == IsList( email_campaign_1, email_campaign_2, check_order=False, ) assert [ email_campaign_1.recipients_count, email_campaign_2.recipients_count, ] == IsList(99, 199, check_order=False)