import pytest from fansifter_common.auth.account import Account from dmp.ad_reporting.dtos import AdReportingCampaignIdName from dmp.ad_reporting.handlers import ( GetAdReportingCampaignsNamesHandler, GetAdReportingCampaignsNamesRequest, ) from dmp.ad_reporting.models import AdReportingCampaignDbt from dmp.meta.models import MetaAdAccount, MetaUserAdAccount from tests.unit.types import CreateModel, CreateReportingModel class TestGetAdReportingCampaignsNamesHandler: @pytest.mark.db def test_get_campaigns_names( self, handler: GetAdReportingCampaignsNamesHandler, create_model: CreateModel, create_reporting_model: CreateReportingModel, identity_id: str, account: Account, ) -> None: ad_account = create_model(MetaAdAccount) create_model( MetaUserAdAccount, ad_account_id=ad_account.id, identity_id=identity_id, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, ) campaign = create_reporting_model( AdReportingCampaignDbt, account_id=ad_account.external_id ) result = handler.handle( GetAdReportingCampaignsNamesRequest( identity_id=identity_id, search=None, global_participant_id=None, platform=None, objective=None, report_id=None, limit=100, offset=0, ) ) assert result.total == 1 assert result.items == [ AdReportingCampaignIdName( id=campaign.id, name=campaign.name, ) ] @pytest.mark.db def test_get_campaigns_names_non_existing_report_id( self, handler: GetAdReportingCampaignsNamesHandler, create_model: CreateModel, create_reporting_model: CreateReportingModel, identity_id: str, ) -> None: ad_account = create_model(MetaAdAccount) create_model( MetaUserAdAccount, ad_account_id=ad_account.id, identity_id=identity_id, ) create_reporting_model( AdReportingCampaignDbt, account_id=ad_account.external_id ) result = handler.handle( GetAdReportingCampaignsNamesRequest( identity_id=identity_id, search=None, global_participant_id=None, platform=None, objective=None, report_id="non-existing-report-id", limit=100, offset=0, ) ) assert result.total == 0 assert result.items == []