"""Common fixtures for Apple Music Streams Snowflake.""" from unittest.mock import MagicMock from unittest.mock import patch import pytest from feed_ingestion.flows.apple_music_streams import config from feed_ingestion.flows.apple_music_streams import vendor_accounts @pytest.fixture() def mock_vendors_accounts(monkeypatch): """Mock vendors accounts.""" licensors = { 'theorchard': {'2016-01-01': {'default': ['80028967', '80029727']}}, 'sme': {'2016-01-01': {'default': ['80026921', '80030469']}}, 'awal': {'2016-01-01': {'default': ['80031998']}}, 'altafonte': {'2016-01-01': {'default': ['85320019']}}, } monkeypatch.setattr(vendor_accounts, 'licensors', licensors) @pytest.fixture def mock_get_vendors(mock_vendors_accounts): """Mock itunes_reporter.""" def side_effect_status(date, licensor): """Return vendor accounts by licensor.""" if licensor == 'theorchard': return ['80028967', '80029727'] if licensor == 'sme': return ['80026921', '80030469'] if licensor == 'awal': return ['80031998', ] if licensor == 'altafonte': return ['85320019'] path = ( 'feed_ingestion.flows.apple_music_streams.vendor_accounts.get_vendors') with patch(path) as get_vendors: get_vendors.side_effect = side_effect_status yield get_vendors @pytest.fixture def mock_itunes_reporter(): """Mock itunes_reporter.""" path = ( 'feed_ingestion.flows.apple_music_streams.generators.itunes_reporter') with patch(path) as itunes_reporter: mock_reporter = MagicMock() filename = 'test_filename' mock_reporter.get_sales_report_file_name.return_value = filename itunes_reporter.get_reporter.return_value = mock_reporter itunes_reporter.get_report_version.return_value = '1_1' yield mock_reporter @pytest.fixture def mock_reports_status_names(mock_itunes_reporter, mock_vendors_accounts): """Return reports and feed statuses for them.""" reports_status_names = { 'sme': { 'amContentDemographics': { 'feed_name': 'apple_music_sme_amContentDemographics', 'vendors': ['80028967', '80029727']}, 'amShazam': { 'feed_name': 'apple_music_sme_amShazam', 'vendors': ['80028967', '80029727']}, 'amStreams': { 'feed_name': 'apple_music_sme_amStreams', 'vendors': ['80028967', '80029727']}, 'amSubscriptionReference': { 'feed_name': 'apple_music_sme_amSubscriptionReference', 'vendors': ['80028967', '80029727']}, 'amContent': { 'feed_name': 'apple_music_sme_amContent', 'vendors': ['80028967', '80029727']}, 'amNonRoyaltyStreams': { 'feed_name': 'apple_music_sme_amNonRoyaltyStreams', 'vendors': ['80028967', '80029727']}, 'amLibraryEvents': { 'feed_name': 'apple_music_sme_amLibraryEvents', 'vendors': ['80028967', '80029727']}, 'amTotalLibraryAdds': { 'feed_name': 'apple_music_sme_amTotalLibraryAdds', 'vendors': ['80028967', '80029727']}, 'amArtists': { 'feed_name': 'apple_music_sme_amArtists', 'vendors': ['80028967', '80029727']}, 'amPlaylists': { 'feed_name': 'apple_music_sme_amPlaylists', 'vendors': ['80028967', '80029727']}, 'amSongs': { 'feed_name': 'apple_music_sme_amSongs', 'vendors': ['80028967', '80029727']}, }, 'theorchard': { 'amContentDemographics': { 'feed_name': 'apple_music_theorchard_amContentDemographics', 'vendors': ['80028967', '80029727']}, 'amShazam': { 'feed_name': 'apple_music_theorchard_amShazam', 'vendors': ['80028967', '80029727']}, 'amNonRoyaltyStreams': { 'feed_name': 'apple_music_theorchard_amNonRoyaltyStreams', 'vendors': ['80028967', '80029727']}, 'amStreams': { 'feed_name': 'apple_music_theorchard_amStreams', 'vendors': ['80028967', '80029727']}, 'amSubscriptionReference': { 'feed_name': 'apple_music_theorchard_amSubscriptionReference', 'vendors': ['80028967', '80029727']}, 'amContent': { 'feed_name': 'apple_music_theorchard_amContent', 'vendors': ['80028967', '80029727']}, 'amLibraryEvents': { 'feed_name': 'apple_music_theorchard_amLibraryEvents', 'vendors': ['80028967', '80029727']}, 'amTotalLibraryAdds': { 'feed_name': 'apple_music_theorchard_amTotalLibraryAdds', 'vendors': ['80028967', '80029727']}, 'amArtists': { 'feed_name': 'apple_music_theorchard_amArtists', 'vendors': ['80028967', '80029727']}, 'amPlaylists': { 'feed_name': 'apple_music_theorchard_amPlaylists', 'vendors': ['80028967', '80029727']}, 'amSongs': { 'feed_name': 'apple_music_theorchard_amSongs', 'vendors': ['80028967', '80029727']}, }, 'awal': { 'amContentDemographics': { 'feed_name': 'apple_music_awal_amContentDemographics', 'vendors': ['80031998', ]}, 'amShazam': { 'feed_name': 'apple_music_awal_amShazam', 'vendors': ['80031998', ]}, 'amNonRoyaltyStreams': { 'feed_name': 'apple_music_awal_amNonRoyaltyStreams', 'vendors': ['80031998', ]}, 'amStreamsSummary': { 'feed_name': 'apple_music_awal_amStreamsSummary', 'vendors': ['80031998', ]}, 'amStreams': { 'feed_name': 'apple_music_awal_amStreams', 'vendors': ['80031998', ]}, 'amSubscriptionReference': { 'feed_name': 'apple_music_awal_amSubscriptionReference', 'vendors': ['80031998', ]}, 'amContent': { 'feed_name': 'apple_music_awal_amContent', 'vendors': ['80031998', ]}, 'amLibraryEvents': { 'feed_name': 'apple_music_awal_amLibraryEvents', 'vendors': ['80031998', ]}, 'amTotalLibraryAdds': { 'feed_name': 'apple_music_awal_amTotalLibraryAdds', 'vendors': ['80031998', ]}, 'amArtists': { 'feed_name': 'apple_music_awal_amArtists', 'vendors': ['80031998', ]}, 'amPlaylists': { 'feed_name': 'apple_music_awal_amPlaylists', 'vendors': ['80031998', ]}, 'amSongs': { 'feed_name': 'apple_music_awal_amSongs', 'vendors': ['80031998', ]}, }, 'altafonte': { 'amContentDemographics': { 'feed_name': 'apple_music_altafonte_amContentDemographics', 'vendors': ['80031998', ]}, 'amShazam': { 'feed_name': 'apple_music_altafonte_amShazam', 'vendors': ['80031998', ]}, 'amNonRoyaltyStreams': { 'feed_name': 'apple_music_altafonte_amNonRoyaltyStreams', 'vendors': ['80031998', ]}, 'amStreamsSummary': { 'feed_name': 'apple_music_altafonte_amStreamsSummary', 'vendors': ['80031998', ]}, 'amStreams': { 'feed_name': 'apple_music_altafonte_amStreams', 'vendors': ['80031998', ]}, 'amSubscriptionReference': { 'feed_name': 'apple_music_altafonte_amSubscriptionReference', 'vendors': ['80031998', ]}, 'amContent': { 'feed_name': 'apple_music_altafonte_amContent', 'vendors': ['80031998', ]}, 'amLibraryEvents': { 'feed_name': 'apple_music_altafonte_amLibraryEvents', 'vendors': ['80031998', ]}, 'amTotalLibraryAdds': { 'feed_name': 'apple_music_altafonte_amTotalLibraryAdds', 'vendors': ['80031998', ]}, 'amArtists': { 'feed_name': 'apple_music_altafonte_amArtists', 'vendors': ['80031998', ]}, 'amPlaylists': { 'feed_name': 'apple_music_altafonte_amPlaylists', 'vendors': ['80031998', ]}, 'amSongs': { 'feed_name': 'apple_music_altafonte_amSongs', 'vendors': ['80031998', ]}, }, } return reports_status_names @pytest.fixture def mock_reports_status_names_after_switch_on_summary( mock_itunes_reporter, mock_vendors_accounts): """Return reports and feed statuses for them.""" reports_status_names = { 'sme': { 'amContentDemographics': { 'feed_name': 'apple_music_sme_amContentDemographics', 'vendors': ['80028967', '80029727']}, 'amShazam': { 'feed_name': 'apple_music_sme_amShazam', 'vendors': ['80028967', '80029727']}, 'amStreamsSummary': { 'feed_name': 'apple_music_sme_amStreamsSummary', 'vendors': ['80028967', '80029727']}, 'amContent': { 'feed_name': 'apple_music_sme_amContent', 'vendors': ['80028967', '80029727']}, 'amContainer': { 'feed_name': 'apple_music_sme_amContainer', 'vendors': ['80028967', '80029727']}, 'amNonRoyaltySummaryStreams': { 'feed_name': 'apple_music_sme_amNonRoyaltySummaryStreams', 'vendors': ['80028967', '80029727']}, 'amLibraryEvents': { 'feed_name': 'apple_music_sme_amLibraryEvents', 'vendors': ['80028967', '80029727']}, 'amTotalLibraryAdds': { 'feed_name': 'apple_music_sme_amTotalLibraryAdds', 'vendors': ['80028967', '80029727']}, 'amArtists': { 'feed_name': 'apple_music_sme_amArtists', 'vendors': ['80028967', '80029727']}, 'amPlaylists': { 'feed_name': 'apple_music_sme_amPlaylists', 'vendors': ['80028967', '80029727']}, 'amSongs': { 'feed_name': 'apple_music_sme_amSongs', 'vendors': ['80028967', '80029727']}, }, 'theorchard': { 'amContentDemographics': { 'feed_name': 'apple_music_theorchard_amContentDemographics', 'vendors': ['80028967', '80029727']}, 'amShazam': { 'feed_name': 'apple_music_theorchard_amShazam', 'vendors': ['80028967', '80029727']}, 'amContainer': { 'feed_name': 'apple_music_theorchard_amContainer', 'vendors': ['80028967', '80029727']}, 'amNonRoyaltySummaryStreams': { 'feed_name': 'apple_music_theorchard_amNonRoyaltySummaryStreams', 'vendors': ['80028967', '80029727']}, 'amStreamsSummary': { 'feed_name': 'apple_music_theorchard_amStreamsSummary', 'vendors': ['80028967', '80029727']}, 'amContent': { 'feed_name': 'apple_music_theorchard_amContent', 'vendors': ['80028967', '80029727']}, 'amLibraryEvents': { 'feed_name': 'apple_music_theorchard_amLibraryEvents', 'vendors': ['80028967', '80029727']}, 'amTotalLibraryAdds': { 'feed_name': 'apple_music_theorchard_amTotalLibraryAdds', 'vendors': ['80028967', '80029727']}, 'amArtists': { 'feed_name': 'apple_music_theorchard_amArtists', 'vendors': ['80028967', '80029727']}, 'amPlaylists': { 'feed_name': 'apple_music_theorchard_amPlaylists', 'vendors': ['80028967', '80029727']}, 'amSongs': { 'feed_name': 'apple_music_theorchard_amSongs', 'vendors': ['80028967', '80029727']}, }, 'awal': { 'amContentDemographics': { 'feed_name': 'apple_music_awal_amContentDemographics', 'vendors': ['80031998', ]}, 'amShazam': { 'feed_name': 'apple_music_awal_amShazam', 'vendors': ['80031998', ]}, 'amContainer': { 'feed_name': 'apple_music_awal_amContainer', 'vendors': ['80028967', '80029727']}, 'amNonRoyaltySummaryStreams': { 'feed_name': 'apple_music_awal_amNonRoyaltySummaryStreams', 'vendors': ['80031998', ]}, 'amStreamsSummary': { 'feed_name': 'apple_music_awal_amStreamsSummary', 'vendors': ['80031998', ]}, 'amContent': { 'feed_name': 'apple_music_awal_amContent', 'vendors': ['80031998', ]}, 'amLibraryEvents': { 'feed_name': 'apple_music_awal_amLibraryEvents', 'vendors': ['80031998', ]}, 'amTotalLibraryAdds': { 'feed_name': 'apple_music_awal_amTotalLibraryAdds', 'vendors': ['80031998', ]}, 'amArtists': { 'feed_name': 'apple_music_awal_amArtists', 'vendors': ['80031998', ]}, 'amPlaylists': { 'feed_name': 'apple_music_awal_amPlaylists', 'vendors': ['80031998', ]}, 'amSongs': { 'feed_name': 'apple_music_awal_amSongs', 'vendors': ['80031998', ]}, }, 'altafonte': { 'amContentDemographics': { 'feed_name': 'apple_music_altafonte_amContentDemographics', 'vendors': ['80031998', ]}, 'amShazam': { 'feed_name': 'apple_music_altafonte_amShazam', 'vendors': ['80031998', ]}, 'amContainer': { 'feed_name': 'apple_music_altafonte_amContainer', 'vendors': ['80028967', '80029727']}, 'amNonRoyaltySummaryStreams': { 'feed_name': 'apple_music_altafonte_amNonRoyaltySummaryStreams', 'vendors': ['80031998', ]}, 'amStreamsSummary': { 'feed_name': 'apple_music_altafonte_amStreamsSummary', 'vendors': ['80031998', ]}, 'amContent': { 'feed_name': 'apple_music_altafonte_amContent', 'vendors': ['80031998', ]}, 'amLibraryEvents': { 'feed_name': 'apple_music_altafonte_amLibraryEvents', 'vendors': ['80031998', ]}, 'amTotalLibraryAdds': { 'feed_name': 'apple_music_altafonte_amTotalLibraryAdds', 'vendors': ['80031998', ]}, # 'amArtists': { # 'feed_name': 'apple_music_altafonte_amArtists', # 'vendors': ['80031998', ]}, # 'amPlaylists': { # 'feed_name': 'apple_music_altafonte_amPlaylists', # 'vendors': ['80031998', ]}, # 'amSongs': { # 'feed_name': 'apple_music_altafonte_amSongs', # 'vendors': ['80031998', ]}, }, } return reports_status_names @pytest.fixture def mock_staging_raw_generator( mock_reports_status_names, mock_itunes_reporter, mock_vendors_accounts): """Generate values for temp_staging_raw_ingestion.""" for _, data in mock_reports_status_names.items(): for report_name, description in data.items(): vendors = {} staging_raw_table = config.reports[report_name][ 'staging_raw_table'] for vendor in description['vendors']: vendors[vendor] = 'test_filename' result = { 'staging_raw_table': staging_raw_table, 'vendors': vendors, 'report_name': report_name, 'feed_name': description['feed_name']} return result