from unittest import mock import pytest from anydi import Container from faker import Faker from ows_text_campaigns.artist.handlers import ( DeleteArtistImageHandler, DeleteArtistImageRequest, ) from ows_text_campaigns.artist.models import ArtistSettings from ows_text_campaigns.assets.models import Asset from ows_text_campaigns.assets.services import AssetService from ows_text_campaigns.rosters.models import ArtistRosterMainRep from tests.unit.types import CreateModel class TestDeleteArtistSettingsHandler: @pytest.mark.db def test_delete_artist_image( self, container: Container, handler: DeleteArtistImageHandler, create_model: CreateModel, identity_id: str, faker: Faker, ) -> None: global_participant_id = faker.uuid4() asset = create_model( Asset, object_type="artist", object_id=global_participant_id ) artist_settings = create_model( ArtistSettings, global_participant_id=global_participant_id, asset_id=asset.id, ) create_model( ArtistRosterMainRep, global_participant_id=global_participant_id, vendor_id=1, subaccount_id=0, ) asset_service_mock = mock.MagicMock(spec=AssetService) asset_service_mock.get_asset_for.return_value = asset with container.override(AssetService, asset_service_mock): updated_artist_settings = handler.handler( DeleteArtistImageRequest( identity_id=identity_id, global_participant_id=artist_settings.global_participant_id, ) ) asset_service_mock.delete_asset.assert_called_once_with(asset) assert updated_artist_settings.asset_id is None