import pytest from dmp.audiences.enums import AudienceExportStatus from dmp.audiences.exceptions import AudienceShareNotFoundError from dmp.audiences.handlers import ( UpdateAudienceShareHandler, UpdateAudienceShareRequest, ) from dmp.audiences.models import AudienceShare from tests.unit.faker import FakerTyped from tests.unit.types import CreateModel class TestUpdateAudienceShareHandler: @pytest.mark.db def test_update_audience_share( self, handler: UpdateAudienceShareHandler, create_model: CreateModel ) -> None: share = create_model( AudienceShare, status=AudienceExportStatus.PENDING, processed_fans=0, ) status = AudienceExportStatus.PROCESSING processed_fans = 1000 result = handler.handle( UpdateAudienceShareRequest( share_id=share.id, status=status, processed_fans=processed_fans, ) ) assert result.status == status assert result.processed_fans == processed_fans @pytest.mark.db def test_update_audience_share_not_found( self, handler: UpdateAudienceShareHandler, fake: FakerTyped ) -> None: with pytest.raises(AudienceShareNotFoundError): handler.handle( UpdateAudienceShareRequest( share_id=fake.uuid4_string(), status=AudienceExportStatus.PROCESSING, processed_fans=100, ) )