from typing import Any from unittest import mock import pytest from anydi import Container from dmp.artists.dtos import ArtistAccess from dmp.artists.services import ArtistAccessService def pytest_configure(config: pytest.Config) -> None: config.addinivalue_line( "markers", "artist_access: mark test to inject artist access", ) @pytest.fixture(autouse=True) def _artist_access_marker(request: pytest.FixtureRequest, container: Container) -> Any: marker = request.node.get_closest_marker("artist_access") if marker is None: yield return vendor_id = marker.kwargs.get("vendor_id") subaccount_id = marker.kwargs.get("subaccount_id") is_global = marker.kwargs.get("is_global", True) artist_service_mock = mock.MagicMock(spec=ArtistAccessService) artist_service_mock.check_artist_access.return_value = ArtistAccess( vendor_id=vendor_id, subaccount_id=subaccount_id, is_global=is_global, ) with container.override(ArtistAccessService, instance=artist_service_mock): yield