import pytest from dmp.app_connections.enums import AppConnectionStatus from dmp.tiktok.handlers import ( GetTikTokAdReportingConnectionHandler, GetTikTokAdReportingConnectionRequest, ) from dmp.tiktok.models import TikTokAdAccount, TikTokAdReportingConnection from tests.unit.faker import FakerTyped from tests.unit.types import CreateModel class TestGetTikTokAdReportingConnectionHandler: @pytest.mark.db def test_get_tiktok_status_without_ad_accounts( self, handler: GetTikTokAdReportingConnectionHandler, fake: FakerTyped, create_model: CreateModel, identity_id: str, ) -> None: user_id = fake.pystr() ad_reporting_connection = create_model( TikTokAdReportingConnection, status=AppConnectionStatus.PENDING, identity_id=identity_id, user_id=user_id, ad_accounts=[], ) ad_reporting_connection_result = handler.handle( GetTikTokAdReportingConnectionRequest( identity_id=identity_id, user_id=user_id ) ) assert ad_reporting_connection_result.status == ad_reporting_connection.status assert ad_reporting_connection_result.ad_accounts_count == 0 @pytest.mark.db def test_get_meta_status_with_ad_accounts( self, handler: GetTikTokAdReportingConnectionHandler, fake: FakerTyped, create_model: CreateModel, identity_id: str, ) -> None: user_id = fake.pystr() ad_account_1 = create_model(TikTokAdAccount) ad_account_2 = create_model(TikTokAdAccount) ad_reporting_connection = create_model( TikTokAdReportingConnection, status=AppConnectionStatus.CONNECTED, identity_id=identity_id, user_id=user_id, ad_accounts=[ad_account_1, ad_account_2], ) ad_reporting_connection_result = handler.handle( GetTikTokAdReportingConnectionRequest( identity_id=identity_id, user_id=user_id ) ) assert ad_reporting_connection_result.status == ad_reporting_connection.status assert ad_reporting_connection_result.ad_accounts_count == 2 @pytest.mark.db def test_get_tiktok_status_for_user_without_connection( self, handler: GetTikTokAdReportingConnectionHandler, fake: FakerTyped, create_model: CreateModel, identity_id: str, ) -> None: create_model(TikTokAdReportingConnection, identity_id=fake.uuid4_string()) ad_reporting_connection_result = handler.handle( GetTikTokAdReportingConnectionRequest( identity_id=identity_id, user_id=fake.pystr(), ) ) assert ( ad_reporting_connection_result.status == AppConnectionStatus.NOT_CONNECTED ) assert ad_reporting_connection_result.ad_accounts_count == 0