from typing import Any import pytest from fastapi.testclient import TestClient from pytest_mock import MockerFixture from syrupy.assertion import SnapshotAssertion from delivery_metadata.clients.ows_track.performer import ( TrackPerformer, TrackPerformerResponse, TrackPerformerRoleResponse, get_track_performer_roles, get_track_performers, get_track_performers_with_role_names, ) @pytest.mark.asyncio async def test_get_track_performers( mocker: MockerFixture, ows_track_performers_response_mock: dict[str, list[dict[str, Any]]], ows_track_performers_client_response_mock: list[TrackPerformerResponse], test_client: TestClient, snapshot: SnapshotAssertion, ) -> None: response_mock = mocker.Mock() response_mock.json = mocker.Mock(return_value=ows_track_performers_response_mock) get_mock = mocker.patch.object( test_client.app.state.ows_connector, # type: ignore[attr-defined] "get", return_value=response_mock, autospec=True, ) result = await get_track_performers(4953147) get_mock.assert_called_once_with( service_name="ows-track", path="/product/4953147/tracks/performers", ) response_mock.raise_for_status.assert_called_once() assert result == snapshot @pytest.mark.asyncio async def test_get_track_performer_roles( mocker: MockerFixture, ows_track_performer_roles_response_mock: dict[str, list[dict[str, Any]]], test_client: TestClient, snapshot: SnapshotAssertion, ) -> None: response_mock = mocker.Mock() response_mock.json = mocker.Mock( return_value=ows_track_performer_roles_response_mock ) get_mock = mocker.patch.object( test_client.app.state.ows_connector, # type: ignore[attr-defined] "get", return_value=response_mock, autospec=True, ) result = await get_track_performer_roles() get_mock.assert_called_once_with( service_name="ows-track", path="/performer/roles", ) response_mock.raise_for_status.assert_called_once() assert result == snapshot @pytest.mark.asyncio async def test_get_track_performers_with_role_names( mocker: MockerFixture, ows_track_performers_client_response_mock: list[TrackPerformerResponse], ows_track_performer_roles_client_response_mock: list[TrackPerformerRoleResponse], get_track_performers_with_role_names_response_mock: dict[int, list[TrackPerformer]], test_client: TestClient, snapshot: SnapshotAssertion, ) -> None: get_track_performers_mock = mocker.patch( "delivery_metadata.clients.ows_track.performer.get_track_performers", return_value=ows_track_performers_client_response_mock, autospec=True, ) get_track_performer_roles_mock = mocker.patch( "delivery_metadata.clients.ows_track.performer.get_track_performer_roles", return_value=ows_track_performer_roles_client_response_mock, autospec=True, ) result = await get_track_performers_with_role_names(4953147) get_track_performers_mock.assert_called_once_with(4953147) get_track_performer_roles_mock.assert_called_once() assert result == snapshot