from unittest import mock from campaigns.meta.enums import AssetPositionGroup from campaigns.meta.models import Campaign, CampaignVideo from campaigns.meta.services import CampaignVideoService from tests.unit.faker import FakerTyped from tests.unit.types import CreateModel async def test_create_campaign_video( campaign_video_service: CampaignVideoService, create_model: CreateModel, ) -> None: campaign = await create_model(Campaign) position_group = AssetPositionGroup.RATIO_1_1 video, credentials = await campaign_video_service.create_campaign_video( campaign, filename="test.jpg", position_group=position_group, ) assert credentials.asset_id == video.asset_id assert credentials.upload_metadata == { "meta_campaign_id": campaign.id, "meta_campaign_video_id": video.id, "meta_campaign_video_position_group": video.position_group, } async def test_delete_campaign_video( campaign_video_service: CampaignVideoService, facebook_client_mock: mock.MagicMock, create_model: CreateModel, fake: FakerTyped, ) -> None: external_id = fake.pystr() video = await create_model(CampaignVideo, external_id=external_id) await campaign_video_service.delete_video(video) facebook_client_mock.delete_ad_video.assert_called_once_with(video.external_id)