import pytest from faker import Faker from fansifter_common.auth.account import Account from dmp.audiences.handlers import ( GetAudiencesArtistsHandler, GetAudiencesArtistsRequest, ) from dmp.audiences.models import Audience, AudienceFanDataList from dmp.rosters.enums import FanDataListType from tests.unit.faker import FakerTyped from tests.unit.types import CreateModel class TestGetAudiencesArtistsHandler: @pytest.mark.db def test_get_unique_global_participant_ids( self, handler: GetAudiencesArtistsHandler, create_model: CreateModel, fake: FakerTyped, identity_id: str, account: Account, ) -> None: global_participant_id_1 = fake.uuid4_string() global_participant_id_2 = fake.uuid4_string() create_model( Audience, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, fandata_lists=[ AudienceFanDataList( list_id=global_participant_id_1, type=FanDataListType.ARTIST, ) ], ) create_model( Audience, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, fandata_lists=[ AudienceFanDataList( list_id=global_participant_id_2, type=FanDataListType.ARTIST, ) ], ) create_model( Audience, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, fandata_lists=[ AudienceFanDataList( list_id=global_participant_id_2, type=FanDataListType.ARTIST, ) ], ) create_model( Audience, vendor_id=account.vendor_id, subaccount_id=account.subaccount_id, fandata_lists=[ AudienceFanDataList( list_id=global_participant_id_2, type=FanDataListType.ARTIST, ) ], ) result = handler.handle(GetAudiencesArtistsRequest(identity_id=identity_id)) assert set(result) == { global_participant_id_1, global_participant_id_2, } @pytest.mark.db def test_get_unique_global_participant_ids_with_filter( self, handler: GetAudiencesArtistsHandler, create_model: CreateModel, faker: Faker, identity_id: str, account: Account, ) -> None: vendor_id_1 = faker.pyint() global_participant_id_1 = faker.uuid4() global_participant_id_2 = faker.uuid4() create_model( Audience, vendor_id=vendor_id_1, fandata_lists=[ AudienceFanDataList( list_id=global_participant_id_1, type=FanDataListType.ARTIST, ) ], ) create_model( Audience, vendor_id=vendor_id_1, fandata_lists=[ AudienceFanDataList( list_id=global_participant_id_2, type=FanDataListType.ARTIST, ) ], ) create_model( Audience, vendor_id=account.vendor_id, fandata_lists=[ AudienceFanDataList( list_id=global_participant_id_1, type=FanDataListType.ARTIST, ) ], ) result = handler.handle(GetAudiencesArtistsRequest(identity_id=identity_id)) assert set(result) == { global_participant_id_1, }