import pytest from fansifter_common.utils import timezone from email_campaigns.campaigns.models import CampaignBatch, EmailCampaign from email_campaigns.campaigns.repositories import CampaignBatchRepository from tests.unit.types import CreateModel class TestCampaignBatchRepository: @pytest.mark.db def test_get_progress_by_campaign_id( self, repository: CampaignBatchRepository, create_model: CreateModel ) -> None: campaign = create_model(EmailCampaign) create_model( CampaignBatch, campaign_id=campaign.id, domain_id="domain-1", provider="google", batch_size=100, batch_offset=0, ) create_model( CampaignBatch, campaign_id=campaign.id, domain_id="domain-1", provider="google", batch_size=50, batch_offset=20, ) create_model( CampaignBatch, campaign_id=campaign.id, domain_id="domain-1", provider="google", batch_size=10, batch_offset=10, completed_at=timezone.now(), ) progress = repository.get_progress_by_campaign_id(campaign_id=campaign.id) assert progress assert progress.campaign_id == campaign.id assert progress.total_batch_size == 160 assert progress.total_batch_offset == 30 @pytest.mark.db def test_get_progress_by_campaign_id_empty( self, repository: CampaignBatchRepository, create_model: CreateModel ) -> None: campaign = create_model(EmailCampaign) progress = repository.get_progress_by_campaign_id(campaign_id=campaign.id) assert progress is None