from typing import Optional import softest from unittest.mock import MagicMock from utils.test_helpers import sync from external_api.base.analytics_models import LinkfireQuery from linkfire.services.linkfire_service import LinkfireService from external_api.base.clients.delphi_client import DelphiLinkfireLinksListResponse, DelphiLinkfireModel class TestLinkfireService(softest.TestCase): @sync async def test_get_linkfire_links_by_url_should_return_list_of_linkfire_links(self): async def search_for_linkfire_links(query_object: LinkfireQuery) -> Optional[DelphiLinkfireLinksListResponse]: if query_object.query == "lnk.to/Blink_182": mocked_links = [ DelphiLinkfireModel( link_id="afe36ac9-121b-4f23-a2f5-02417491828d", link_url="lnk.to/blink182_NACS" ), DelphiLinkfireModel(link_id="2b190f7c-cf68-4741-9c06-2718c473f6e5", link_url="lnk.to/Blink_182"), ] return DelphiLinkfireLinksListResponse(2, mocked_links) return DelphiLinkfireLinksListResponse(0, []) delphi_client_mock = MagicMock() delphi_client_mock.search_for_linkfire_links.side_effect = search_for_linkfire_links sut = LinkfireService(delphi_client=delphi_client_mock) result = await sut.get_linkfire_link_by_url("lnk.to/Blink_182", 2) self.assertEqual(len(result), 2) self.assertEqual(result[0].linkId, "afe36ac9-121b-4f23-a2f5-02417491828d") self.assertEqual(result[0].linkUrl, "lnk.to/blink182_NACS") self.assertEqual(result[1].linkId, "2b190f7c-cf68-4741-9c06-2718c473f6e5") self.assertEqual(result[1].linkUrl, "lnk.to/Blink_182") self.soft_assert(self.assertEqual, len(result), 2) self.soft_assert(self.assertEqual, result[0].linkId, "afe36ac9-121b-4f23-a2f5-02417491828d") self.soft_assert(self.assertEqual, result[0].linkUrl, "lnk.to/blink182_NACS") self.soft_assert(self.assertEqual, result[1].linkId, "2b190f7c-cf68-4741-9c06-2718c473f6e5") self.soft_assert(self.assertEqual, result[1].linkUrl, "lnk.to/Blink_182") self.assert_all() @sync async def test_get_artists_by_name_no_artists_should_return_empty_list(self): async def search_for_linkfire_links(query_object: LinkfireQuery) -> Optional[DelphiLinkfireLinksListResponse]: if query_object.query == "lnk.to/Blink_182": mocked_links = [ DelphiLinkfireModel(link_id="afe36ac9-121b-4f23-a2f5-02417491828d", link_url="lnk.to/blink182_NACS") ] return DelphiLinkfireLinksListResponse(1, mocked_links) return DelphiLinkfireLinksListResponse(0, []) delphi_client_mock = MagicMock() delphi_client_mock.search_for_linkfire_links.side_effect = search_for_linkfire_links sut = LinkfireService(delphi_client=delphi_client_mock) result = await sut.get_linkfire_link_by_url("fasfsafsa", 1) self.soft_assert(self.assertEqual, len(result), 0) self.assert_all()