from unittest import mock from campaigns.connectors.facebook.models import ( InstagramBusinessAccount, InstagramBusinessAccountWithId, ) from campaigns.meta.models import FacebookPage from campaigns.meta.services import InstagramAccountService from tests.unit.types import BuildModel, CreateModel async def test_get_instagram_account_for_facebook_page( instagram_account_service: InstagramAccountService, facebook_client_mock: mock.MagicMock, build_model: BuildModel, create_model: CreateModel, ) -> None: page = await create_model(FacebookPage) account_id = build_model(InstagramBusinessAccountWithId) account = build_model(InstagramBusinessAccount, id=account_id.id) facebook_client_mock.get_instagram_business_account_for_page.return_value = ( account_id ) facebook_client_mock.get_instagram_business_account.return_value = account result = await instagram_account_service.get_instagram_account_for_facebook_page( page ) assert result assert result.id == account.id assert result.name == account.name assert result.username == account.username assert result.profile_picture_url == account.profile_picture_url async def test_get_instagram_account_for_facebook_page_not_connected( instagram_account_service: InstagramAccountService, facebook_client_mock: mock.MagicMock, create_model: CreateModel, ) -> None: page = await create_model(FacebookPage) facebook_client_mock.get_instagram_business_account_for_page.return_value = None account = await instagram_account_service.get_instagram_account_for_facebook_page( page ) assert account is None