import pytest from dmp.ad_reporting.enums import ( AdReportingActionType, AdReportingObjective, AdReportingPlatform, AdReportingRateType, ) from dmp.ad_reporting.models import ( AdReportingCampaignCountryDbt, AdReportingCampaignDbt, ) from dmp.ad_reporting.repositories import AdReportingCampaignCountryRepository from tests.unit.types import CreateReportingModel class TestAdReportingCampaignCountryRepository: def test_find_by_ids_group_by_platform_objective_and_country_empty( self, repository: AdReportingCampaignCountryRepository, ) -> None: result = repository.find_by_ids_group_by_platform_objective_and_country( campaign_ids=set(), ) assert result == [] @pytest.mark.db def test_find_by_ids_group_by_platform_objective_and_country( self, repository: AdReportingCampaignCountryRepository, create_reporting_model: CreateReportingModel, ) -> None: campaign = create_reporting_model( AdReportingCampaignDbt, platform=AdReportingPlatform.META, objective=AdReportingObjective.OUTCOME_AWARENESS, action_type=AdReportingActionType.EAR, rate_type=AdReportingRateType.EARR, ) campaign_country = create_reporting_model( AdReportingCampaignCountryDbt, campaign_id=campaign.id, platform=AdReportingPlatform.META, objective=AdReportingObjective.OUTCOME_AWARENESS, action_type=AdReportingActionType.EAR, rate_type=AdReportingRateType.EARR, impressions=100, ) result = repository.find_by_ids_group_by_platform_objective_and_country( campaign_ids={campaign.id}, ) assert len(result) == 1 assert result[0].country_code == campaign_country.country_code assert result[0].platform == campaign_country.platform assert result[0].objective == campaign_country.objective assert result[0].campaigns_count == 1 assert result[0].clicks == campaign_country.clicks assert result[0].impressions == campaign_country.impressions