import pytest from pytest_mock import MockerFixture from ows_text_campaigns.campaigns.handlers import ( CreateCampaignAttachmentUploadCredentialsHandler, CreateCampaignAttachmentUploadCredentialsRequest, ) from ows_text_campaigns.campaigns.models import Campaign from ows_text_campaigns.config import Settings from tests.unit.types import CreateModel class TestCreateCampaignAttachmentUploadCredentialsHandler: @pytest.mark.db def test_create_campaign_attachment_upload_credentials( self, handler: CreateCampaignAttachmentUploadCredentialsHandler, create_model: CreateModel, settings: Settings, identity_id: str, mocker: MockerFixture, ) -> None: campaign = create_model(Campaign) filename = "test.jpg" mocker.patch( "ows_text_campaigns.assets.utils.unique_hash", return_value="123", ) upload_credentials = handler.handle( CreateCampaignAttachmentUploadCredentialsRequest( identity_id=identity_id, campaign_id=campaign.id, filename=filename, ) ) assert upload_credentials.key == ( f"{settings.assets_path}/campaigns/{campaign.id}/test__123.jpg" )