import pytest from dmp.artists.models import VirtualParticipant from dmp.artists.repositories import ParticipantCriteria, ParticipantRepository from dmp.rosters.models import CustomList from tests.unit.types import CreateReportingModel class TestParticipantRepository: @pytest.mark.db def test_count_by_criteria_empty(self, repository: ParticipantRepository) -> None: criteria = ParticipantCriteria( vendor_ids=[1], subaccount_ids=[1], ) count = repository.count_by_criteria(criteria) assert count == 0 @pytest.mark.db def test_find_by_criteria_with_virtual_participant( self, repository: ParticipantRepository, create_reporting_model: CreateReportingModel, ) -> None: virtual_participant = create_reporting_model( VirtualParticipant, name="Test Artist", spotify_id="spotify:artist:456", ) custom_list = create_reporting_model( CustomList, vendor_id=300, subaccount_id=400, virtual_participant_id=virtual_participant.id, ) criteria = ParticipantCriteria( vendor_ids=[custom_list.vendor_id], subaccount_ids=[custom_list.subaccount_id], ) participants = repository.find_by_criteria(criteria, limit=10, offset=0) assert len(participants) == 1 assert participants[0].global_participant_id is None assert participants[0].virtual_participant_id == virtual_participant.id assert participants[0].name == virtual_participant.name assert participants[0].spotify_id == virtual_participant.spotify_id @pytest.mark.db def test_find_by_criteria_returns_crm_mailing_list_id( self, repository: ParticipantRepository, create_reporting_model: CreateReportingModel, ) -> None: virtual_participant = create_reporting_model( VirtualParticipant, name="Label List VP", crm_mailing_list_id="a0STy000007iGg9MAE", ) custom_list = create_reporting_model( CustomList, vendor_id=310, subaccount_id=410, virtual_participant_id=virtual_participant.id, ) criteria = ParticipantCriteria( vendor_ids=[custom_list.vendor_id], subaccount_ids=[custom_list.subaccount_id], ) participants = repository.find_by_criteria(criteria, limit=10, offset=0) assert len(participants) == 1 assert participants[0].virtual_participant_id == virtual_participant.id assert participants[0].crm_mailing_list_id == "a0STy000007iGg9MAE"