import pytest from dmp.tiktok.exceptions import TikTokAudienceNotFoundError, TikTokAudienceUpdateError from dmp.tiktok.handlers import UpdateTikTokAudienceHandler, UpdateTikTokAudienceRequest from dmp.tiktok.models import TikTokAudience from tests.unit.faker import FakerTyped from tests.unit.types import CreateModel class TestUpdateTikTokAudienceHandler: @pytest.mark.db def test_update_audience( self, handler: UpdateTikTokAudienceHandler, create_model: CreateModel, fake: FakerTyped, ) -> None: audience = create_model( TikTokAudience, external_id=None, ) external_id = fake.pystr() tiktok_audience = handler.handle( UpdateTikTokAudienceRequest( audience_id=audience.id, external_id=external_id ) ) assert tiktok_audience.external_id == external_id @pytest.mark.db def test_update_not_existing_audience( self, handler: UpdateTikTokAudienceHandler, fake: FakerTyped, ) -> None: with pytest.raises(TikTokAudienceNotFoundError) as exc_info: handler.handle( UpdateTikTokAudienceRequest( audience_id=fake.pystr(), external_id=fake.pystr() ) ) assert exc_info.value.code == "tiktok_audience_not_found" assert exc_info.value.message == "TikTok audience not found" @pytest.mark.db def test_share_audience_without_snapshot( self, handler: UpdateTikTokAudienceHandler, create_model: CreateModel, fake: FakerTyped, ) -> None: audience = create_model(TikTokAudience, external_id=fake.pystr()) with pytest.raises(TikTokAudienceUpdateError): handler.handle( UpdateTikTokAudienceRequest( audience_id=audience.id, external_id=fake.pystr() ) )