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