"""Unit tests for tasks for the Chartmetric Playlists Share Workflow.""" from datetime import datetime, timedelta from unittest.mock import MagicMock from unittest.mock import patch from feed_ingestion.flows.chartmetric_playlists_share import tasks CHARTMETRIC_PLAYLISTS_SHARE = 'chartmetric_playlists_share' TEST_DATE = ( datetime.utcnow().date() - timedelta(days=1) ).strftime('%Y-%m-%d') def test_bootstrap(monkeypatch): """Test bootstrap.""" expected = { 'feed_name': CHARTMETRIC_PLAYLISTS_SHARE, 'date': TEST_DATE, } result = tasks.bootstrap(MagicMock(), date=TEST_DATE) assert result == expected @patch('feed_ingestion.flows.chartmetric_playlists_share.tasks.get_sf_config') @patch('feed_ingestion.flows.chartmetric_playlists_share' '.tasks.SnowflakeExecutor') def test_load_spotify_playlists(mock_sf_executor_class, mock_get_sf_config): """Test load spotify playlists.""" mock_config = {'db': 'DB', 'schema': 'SCHEMA'} mock_get_sf_config.return_value = mock_config mock_executor = MagicMock() mock_sf_executor_class.return_value.__enter__.return_value = mock_executor platform_name = 'spotify' sf_params = { 'temp_table_name': 'chartmetric_playlists_share_spotify'} tasks.load_missing_playlists(MagicMock(), CHARTMETRIC_PLAYLISTS_SHARE, platform_name) mock_get_sf_config.assert_called_once_with(CHARTMETRIC_PLAYLISTS_SHARE) mock_sf_executor_class.assert_called_once_with(mock_config) mock_executor.execute_query.assert_called_once_with( 'load_missing_playlists_for_spotify', **sf_params) @patch('feed_ingestion.flows.chartmetric_playlists_share.tasks.get_sf_config') @patch('feed_ingestion.flows.chartmetric_playlists_share' '.tasks.SnowflakeExecutor') def test_share_spotify_playlists(mock_sf_executor_class, mock_get_sf_config): """Test share spotify playlists.""" mock_config = {'db': 'DB', 'schema': 'SCHEMA'} mock_get_sf_config.return_value = mock_config mock_executor = MagicMock() mock_sf_executor_class.return_value.__enter__.return_value = mock_executor platform_name = 'spotify' sf_params = { 'temp_table_name': 'chartmetric_playlists_share_spotify', 'shared_table_name': 'top_playlists_share'} tasks.share_missing_playlists(MagicMock(), CHARTMETRIC_PLAYLISTS_SHARE, platform_name) mock_get_sf_config.assert_called_once_with(CHARTMETRIC_PLAYLISTS_SHARE) mock_sf_executor_class.assert_called_once_with(mock_config) mock_executor.execute_query.assert_called_once_with( 'share_missing_playlists_for_spotify', **sf_params)