"""Unit tests for utils of Apple Music Streams Ingestion Workflow.""" from unittest.mock import patch from feed_ingestion.flows.apple_music_streams.utils \ import get_missing_vendors, parse_vendor_id_from_s3_file_path def test_parse_vendor_id_from_s3_file_path(): """Test vendor_id parsing.""" s3_folder = 's3://dev-cucumbers/AppleMusicStreams/archives/2020-04-01/' assert '80028967' == parse_vendor_id_from_s3_file_path( 's3://dev-cucumbers/AppleMusicStreams/archives/2020-04-01/' 'AppleMusic_ArtistUniques_80028967_20200401.txt.gz', s3_folder) assert '80026921' == parse_vendor_id_from_s3_file_path( 's3://dev-cucumbers/AppleMusicStreams/archives/2020-04-01/' 'AppleMusic_Content_80026921_20200401_V1_2.txt.gz', s3_folder) assert '80028967' == parse_vendor_id_from_s3_file_path( 's3://dev-cucumbers/AppleMusicStreams/archives/2020-04-01/' 'AppleMusic_ContentDemographics_80028967_20200401.txt.gz', s3_folder) assert '80026921' == parse_vendor_id_from_s3_file_path( 's3://dev-cucumbers/AppleMusicStreams/archives/2020-04-01/' 'AppleMusic_NonRoyaltyStreams_80026921_20200401_V1_1_[1-3].txt.gz', s3_folder) assert '85774842' == parse_vendor_id_from_s3_file_path( 's3://dev-cucumbers/AppleMusicStreams/archives/2020-04-01/' 'AppleMusic_NonRoyaltyStreams_85774842_20200401_V1_1_[1-1].txt.gz', s3_folder) assert '80028967' == parse_vendor_id_from_s3_file_path( 's3://dev-cucumbers/AppleMusicStreams/archives/2020-04-01/' 'AppleMusic_PlaylistUniques_80028967_20200401.txt.gz', s3_folder) assert '80034465' == parse_vendor_id_from_s3_file_path( 's3://dev-cucumbers/AppleMusicStreams/archives/2020-04-01/' 'AppleMusic_Streams_80034465_20200401_V1_2_[1-1].txt.gz', s3_folder) assert '80034465' == parse_vendor_id_from_s3_file_path( 's3://dev-cucumbers/AppleMusicStreams/archives/2020-04-01/' 'AppleMusic_TotalLibraryAdds_80034465_20200401.txt.gz', s3_folder) assert '80031998' == parse_vendor_id_from_s3_file_path( 's3://dev-cucumbers/AppleMusicStreams/archives/2020-04-01/' 'AMShazam_80031998_20231106_V1_2.txt.gz', s3_folder) @patch('feed_ingestion.util.task_status.garcon_feed_status') def test_get_missing_vendors_not_empty_list(feed_status): """Test get_missing_vendors with nonempty list of missing files.""" s3_folder = 's3://dev-cucumbers/AppleMusicStreams/archives/2023-09-25/' missing_files = \ ['AppleMusic_ContainerSummary_80035150_20230925_V1_0.txt.gz', 'AppleMusic_ContainerSummary_80034465_20200401.txt.gz'] feed_status._get_item.return_value = { 'missing_files': ','.join([s3_folder + mf for mf in missing_files])} missing_vendors = get_missing_vendors('AppleMusic_ContainerSummary', '2023-09-25', s3_folder) assert missing_vendors == ['80035150', '80034465'] @patch('feed_ingestion.util.task_status.garcon_feed_status') def test_get_missing_vendors_empty_list(feed_status): """Test get_missing_vendors with empty list of missing files.""" feed_status._get_item.return_value = None s3_folder = 's3://dev-cucumbers/AppleMusicStreams/archives/2023-09-25/' missing_vendors = get_missing_vendors('AppleMusic_ContainerSummary', '2023-09-25', s3_folder) assert missing_vendors == []