from typing import Optional from unittest.mock import Mock, MagicMock import softest from external_api.streams_analytics.providers.AppleStreamsProvider import AppleStreamsProvider from external_api.base.analytics_models import TrackStreamsQuery, StreamsAnalyticsResult from utils.test_helpers import sync class AppletreamsProviderTest(softest.TestCase): @sync async def test_fetch_should_call_client(self): expected_result = Mock() async def get_apple_streams_analytics(query: TrackStreamsQuery) -> Optional[StreamsAnalyticsResult]: if query.isrc == "test_apple_iscr" and query.start_date == "21-04-2020" and query.end_date == "27-04-2020": return expected_result return None client = MagicMock() client.get_apple_streams_analytics.side_effect = get_apple_streams_analytics query = TrackStreamsQuery(isrc="test_apple_iscr", start_date="21-04-2020", end_date="27-04-2020") sut = AppleStreamsProvider(client) actual_result = await sut.fetch(query) self.assertEqual(actual_result, expected_result)