import unittest from unittest.mock import Mock from external_api.base.clients.delphi_client import DelphiClient from external_api.base.clients.client import ApiClient from external_api.base.analytics_models import ArtistsQuery from tests.test_utils import load_fixture from utils.test_helpers import sync, async_mock class DelphiClientTest(unittest.TestCase): @sync async def test_delphi_artists_search(self): client = ApiClient("https://fake") fixture = load_fixture("external_api/fixtures/artists_search.json") response_mock = Mock() response_mock.json = async_mock(return_value=fixture) response_mock.headers = {"Content-Type": "application/json"} client._execute = async_mock(return_value=response_mock) service = DelphiClient(client) results = await service.search_for_artists(ArtistsQuery(query="", limit=5)) self.assertIsNotNone(results) self.assertEqual(results.count, 5) self.assertEqual(len(results.items), 5) self.assertEqual(results.items[0].artist_id, "GRAS_562122") self.assertEqual(results.items[0].first_name, "Robert") self.assertEqual(results.items[0].last_name, "Shaw") self.assertEqual(results.items[0].full_name, "Robert Shaw Chamber Singers") self.assertEqual(results.items[0].image.uri, "https://fake/artists/by_gras_participant_id/562122") self.assertEqual(results.items[0].image.width, None) self.assertEqual(results.items[0].image.height, None) self.assertEqual(results.items[3].artist_id, "GRAS_562128") self.assertEqual(results.items[3].first_name, "Martin") self.assertEqual(results.items[3].last_name, "Best") self.assertEqual(results.items[3].full_name, "Martin Best Medieval Ensemble") self.assertEqual(results.items[3].image, None) if __name__ == "__main__": unittest.main()