import pytest from dirty_equals import IsList from dmp.app_connections.enums import AppConnectionStatus from dmp.tiktok.models import TikTokAdAccount, TikTokAdReportingConnection from dmp.tiktok.repositories import TikTokAdReportingConnectionRepository from tests.unit.types import CreateModel class TestTikTokAdReportingConnectionRepository: @pytest.mark.db def test_get_by_fivetran_connection_id( self, repository: TikTokAdReportingConnectionRepository, create_model: CreateModel, ) -> None: ad_reporting_connection = create_model(TikTokAdReportingConnection) result = repository.get_by_fivetran_connection_id( ad_reporting_connection.fivetran_connector_id ) assert result == ad_reporting_connection @pytest.mark.db def test_find_not_notified_connections( self, repository: TikTokAdReportingConnectionRepository, create_model: CreateModel, ) -> None: processing_ad_reporting_connection = create_model( TikTokAdReportingConnection, status=AppConnectionStatus.WAITING_FOR_PROCESSING, initial_email_sent=False, ad_accounts=[create_model(TikTokAdAccount), create_model(TikTokAdAccount)], ) connected_ad_reporting_connection = create_model( TikTokAdReportingConnection, status=AppConnectionStatus.CONNECTED, initial_email_sent=False, ad_accounts=[create_model(TikTokAdAccount), create_model(TikTokAdAccount)], ) create_model( TikTokAdReportingConnection, status=AppConnectionStatus.WAITING_FOR_PROCESSING, initial_email_sent=True, ) result = repository.find_not_notified_connections() assert result assert result == IsList( processing_ad_reporting_connection, connected_ad_reporting_connection, check_order=False, ) assert len(result[0].ad_accounts) == 2 @pytest.mark.db def test_get_fivetran_connections_ids( self, repository: TikTokAdReportingConnectionRepository, create_model: CreateModel, ) -> None: create_model( TikTokAdReportingConnection, status=AppConnectionStatus.WAITING_FOR_PROCESSING, initial_email_sent=False, ad_accounts=[create_model(TikTokAdAccount), create_model(TikTokAdAccount)], ) connected_ad_reporting_connection = create_model( TikTokAdReportingConnection, status=AppConnectionStatus.CONNECTED, initial_email_sent=False, ad_accounts=[create_model(TikTokAdAccount), create_model(TikTokAdAccount)], ) syncing_ad_reporting_connection = create_model( TikTokAdReportingConnection, status=AppConnectionStatus.SYNCING, initial_email_sent=True, ad_accounts=[create_model(TikTokAdAccount), create_model(TikTokAdAccount)], ) result = repository.get_fivetran_connections_ids() assert result assert result == IsList( connected_ad_reporting_connection.fivetran_connector_id, syncing_ad_reporting_connection.fivetran_connector_id, check_order=False, )