import pytest from campaigns.meta.dtos import EngagementAudienceKey from campaigns.meta.models import EngagementAudience from campaigns.meta.repositories.engagement_audience import EngagementAudienceRepository from tests.unit.types import CreateModel @pytest.mark.parametrize( "facebook_page_external_id, instagram_account_external_id, event_ids, filter_event_ids", [ (None, "1234", ["1", "2", "3"], ["1", "2", "3"]), ("1234", None, ["1", "2", "3"], ["3", "1", "2"]), ("1234", "12345", ["1", "2", "3"], ["1", "2", "3"]), ], ) async def test_engagement_audience_repository_get_by_key_true( facebook_page_external_id: str | None, instagram_account_external_id: str | None, event_ids: list[str], filter_event_ids: list[str], create_model: CreateModel, engagement_audience_repository: EngagementAudienceRepository, ) -> None: audience = await create_model( EngagementAudience, external_id="1234567", facebook_page_external_id=facebook_page_external_id, instagram_account_external_id=instagram_account_external_id, event_ids=event_ids, ) response = await engagement_audience_repository.get_by_audience_key( key=EngagementAudienceKey( facebook_page_external_id=facebook_page_external_id, instagram_account_external_id=instagram_account_external_id, event_ids=filter_event_ids, ) ) assert response == audience @pytest.mark.parametrize( "facebook_page_external_id_1,instagram_account_external_id_1," "facebook_page_external_id_2, instagram_account_external_id_2," "event_ids_1, event_ids_2", [ (None, "1234", None, "1234", ["1", "2", "3"], ["1", "4", "3"]), ("1234", "12345", "1234", "12345", ["1", "2", "3"], ["1", "2"]), ], ) async def test_engagement_audience_repository_get_by_key_false( facebook_page_external_id_1: str | None, instagram_account_external_id_1: str | None, facebook_page_external_id_2: str | None, instagram_account_external_id_2: str | None, event_ids_1: list[str], event_ids_2: list[str], create_model: CreateModel, engagement_audience_repository: EngagementAudienceRepository, ) -> None: await create_model( EngagementAudience, external_id="1234567", facebook_page_external_id=facebook_page_external_id_1, instagram_account_external_id=instagram_account_external_id_1, event_ids=event_ids_1, ) response = await engagement_audience_repository.get_by_audience_key( key=EngagementAudienceKey( facebook_page_external_id=facebook_page_external_id_2, instagram_account_external_id=instagram_account_external_id_2, event_ids=event_ids_2, ) ) assert not response