import pytest from dmp.app_connections.enums import AppConnectionStatus from dmp.meta.handlers import ( GetMetaAdReportingConnectionHandler, GetMetaAdReportingConnectionRequest, ) from dmp.meta.models import MetaAdAccount, MetaAdReportingConnection from tests.unit.faker import FakerTyped from tests.unit.types import CreateModel class TestGetMetaAdReportingConnectionHandler: @pytest.mark.db def test_get_meta_status_without_ad_accounts( self, handler: GetMetaAdReportingConnectionHandler, create_model: CreateModel, identity_id: str, ) -> None: ad_reporting_connection = create_model( MetaAdReportingConnection, status=AppConnectionStatus.PENDING, identity_id=identity_id, ) ad_reporting_connection_result = handler.handle( GetMetaAdReportingConnectionRequest(identity_id=identity_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: GetMetaAdReportingConnectionHandler, create_model: CreateModel, identity_id: str, ) -> None: ad_account_1 = create_model(MetaAdAccount) ad_account_2 = create_model(MetaAdAccount) ad_reporting_connection = create_model( MetaAdReportingConnection, status=AppConnectionStatus.CONNECTED, identity_id=identity_id, ad_accounts=[ad_account_1, ad_account_2], ) ad_reporting_connection_result = handler.handle( GetMetaAdReportingConnectionRequest(identity_id=identity_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_meta_status_for_user_without_connection( self, handler: GetMetaAdReportingConnectionHandler, fake: FakerTyped, create_model: CreateModel, identity_id: str, ) -> None: create_model(MetaAdReportingConnection, identity_id=fake.uuid4_string()) ad_reporting_connection_result = handler.handle( GetMetaAdReportingConnectionRequest(identity_id=identity_id) ) assert ( ad_reporting_connection_result.status == AppConnectionStatus.NOT_CONNECTED ) assert ad_reporting_connection_result.ad_accounts_count == 0