import pytest from dirty_equals import IsList from dmp.tiktok.models import TikTokAdAccount, TikTokUserAdAccount from dmp.tiktok.repositories import TikTokUserAdAccountRepository from tests.unit.types import CreateModel class TestTikTokUserAdAccountRepository: @pytest.mark.db def test_find_by_vendor_and_subaccount_ids( self, repository: TikTokUserAdAccountRepository, create_model: CreateModel, ) -> None: ad_account = create_model(TikTokAdAccount) ad_account_2 = create_model(TikTokAdAccount) user_ad_account_1 = create_model( TikTokUserAdAccount, ad_account_id=ad_account.id, ) user_ad_account_2 = create_model( TikTokUserAdAccount, ad_account_id=ad_account_2.id, vendor_id=user_ad_account_1.vendor_id, subaccount_id=user_ad_account_1.subaccount_id, ) user_ad_accounts = repository.find_by_vendor_and_subaccount_ids( vendor_ids=[user_ad_account_1.vendor_id], subaccount_ids=[user_ad_account_1.subaccount_id], ) assert user_ad_accounts == IsList( user_ad_account_1, user_ad_account_2, check_order=False, ) @pytest.mark.db def test_find_by_ad_accounts_external_ids( self, repository: TikTokUserAdAccountRepository, create_model: CreateModel, ) -> None: ad_account_1 = create_model(TikTokAdAccount) ad_account_2 = create_model(TikTokAdAccount) user_ad_account_1 = create_model( TikTokUserAdAccount, ad_account_id=ad_account_1.id, ) user_ad_account_2 = create_model( TikTokUserAdAccount, ad_account_id=ad_account_2.id, vendor_id=user_ad_account_1.vendor_id, subaccount_id=user_ad_account_1.subaccount_id, ) user_ad_accounts = repository.find_by_ad_accounts_external_ids( ad_accounts_ids={ad_account_1.external_id, ad_account_2.external_id}, ) assert user_ad_accounts == IsList( user_ad_account_1, user_ad_account_2, check_order=False, )