import pytest from fansifter_common.auth.account import Account from dmp.crm_sublists.handlers import GetCrmSublistsHandler, GetCrmSublistsRequest from dmp.crm_sublists.models import CrmSublistDbt from tests.unit.faker import FakerTyped from tests.unit.types import CreateReportingModel class TestGetCrmSublistIdsHandler: @pytest.mark.db def test_get_crm_sublist_id_page_empty( self, handler: GetCrmSublistsHandler, create_reporting_model: CreateReportingModel, fake: FakerTyped, ) -> None: vendor_id = fake.integer() subaccount_id = 0 create_reporting_model( CrmSublistDbt, vendor_id=vendor_id, subaccount_id=subaccount_id ) result = handler.handle( GetCrmSublistsRequest( identity_id=fake.uuid4_string(), vendor_id=vendor_id, subaccount_id=subaccount_id, limit=50, search=None, ) ) assert result == [] @pytest.mark.db def test_get_crm_sublist_id_page( self, handler: GetCrmSublistsHandler, create_reporting_model: CreateReportingModel, fake: FakerTyped, account: Account, ) -> None: vendor_id = fake.integer() subaccount_id = 0 crm_sublist_id = create_reporting_model( CrmSublistDbt, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, custom_list_id=None, ) create_reporting_model( CrmSublistDbt, vendor_id=vendor_id, subaccount_id=subaccount_id ) result = handler.handle( GetCrmSublistsRequest( identity_id=fake.uuid4_string(), vendor_id=account.vendor_id, subaccount_id=subaccount_id, limit=50, search=None, ) ) assert len(result) == 1 crm_sublist_id_result = result[0] assert crm_sublist_id_result.id == crm_sublist_id.id assert crm_sublist_id_result.name == crm_sublist_id.name assert crm_sublist_id_result.vendor_id == crm_sublist_id.vendor_id assert crm_sublist_id_result.subaccount_id == crm_sublist_id.subaccount_id assert ( crm_sublist_id_result.global_participant_id == crm_sublist_id.global_participant_id ) assert crm_sublist_id_result.custom_list_id == crm_sublist_id.custom_list_id assert crm_sublist_id_result.territory_name == crm_sublist_id.territory_name assert crm_sublist_id_result.label_name == crm_sublist_id.label_name @pytest.mark.db def test_get_crm_sublist_id_ids_filter( self, handler: GetCrmSublistsHandler, create_reporting_model: CreateReportingModel, identity_id: str, account: Account, ) -> None: crm_sublist_id_1 = create_reporting_model( CrmSublistDbt, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, custom_list_id=None, name="Alpha Sublist", ) crm_sublist_id_2 = create_reporting_model( CrmSublistDbt, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, custom_list_id=None, name="Beta Sublist", ) create_reporting_model( CrmSublistDbt, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, custom_list_id=None, ) result = handler.handle( GetCrmSublistsRequest( identity_id=identity_id, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, sublist_ids=[ crm_sublist_id_1.id, crm_sublist_id_2.id, ], limit=50, search=None, ) ) assert len(result) == 2 assert result[0].id == crm_sublist_id_1.id assert result[1].id == crm_sublist_id_2.id @pytest.mark.db def test_get_crm_sublist_id_global_participant_ids_filter( self, handler: GetCrmSublistsHandler, create_reporting_model: CreateReportingModel, identity_id: str, account: Account, ) -> None: crm_sublist_id = create_reporting_model( CrmSublistDbt, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, custom_list_id=None, ) create_reporting_model( CrmSublistDbt, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, custom_list_id=None, ) assert crm_sublist_id.global_participant_id result = handler.handle( GetCrmSublistsRequest( identity_id=identity_id, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, global_participant_ids=[crm_sublist_id.global_participant_id], limit=50, search=None, ) ) assert len(result) == 1 assert result[0].id == crm_sublist_id.id @pytest.mark.db def test_get_crm_sublist_id_custom_list_ids_filter( self, handler: GetCrmSublistsHandler, create_reporting_model: CreateReportingModel, identity_id: str, account: Account, ) -> None: crm_sublist_id = create_reporting_model( CrmSublistDbt, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, global_participant_id=None, ) create_reporting_model( CrmSublistDbt, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, global_participant_id=None, ) assert crm_sublist_id.custom_list_id result = handler.handle( GetCrmSublistsRequest( identity_id=identity_id, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, custom_list_ids=[crm_sublist_id.custom_list_id], limit=50, search=None, ) ) assert len(result) == 1 assert result[0].id == crm_sublist_id.id