"""Unit tests for YouTubeClaimSL.""" from unittest import mock from unittest.mock import MagicMock from unittest.mock import patch import pytest from feed_ingestion.flows.youtube_claim.stage_loader import YouTubeClaimSL class TestStageLoader(object): """Unit tests for YouTubeAssetSL.""" @pytest.fixture def mock_sql_loader(self): """Return sql_loader mock.""" sql_loader_path = ( 'feed_ingestion.flows.spotify.snowflake_executor.sql_loader') with patch(sql_loader_path) as sql_loader: yield sql_loader @pytest.fixture def mock_stage_loader(self, mock_sql_loader): """Yield executor context.""" stage_loader = YouTubeClaimSL(MagicMock(), mock_sql_loader) stage_loader.resolve_sql_loader_and_execute = MagicMock() yield stage_loader def test_load_temp_staging_raw_table(self, mock_stage_loader): """Test load_temp_staging_raw_table.""" stage_name = 'test_stage' temp_staging_raw_table = 'test_temp_staging_raw' date = '2018-01-01' source_files_dict = { 'files': [ {'file_name': '20180101_020247_00102_9qff5_261e5f59', 'file_size': 42}, {'file_name': '20180101_020247_00102_9qff5_261e5f58', 'file_size': 42}, {'file_name': '20180101_020247_00102_9qff5_261e5f56', 'file_size': 73}]} mock_stage_loader.load_temp_staging_raw_table( temp_staging_raw_table=temp_staging_raw_table, date=date, stage_name=stage_name, file_size=sum( [f['file_size'] for f in source_files_dict['files']] ), ) assert mock_stage_loader.resolve_sql_loader_and_execute.call_count == 1 mock_stage_loader.resolve_sql_loader_and_execute.assert_any_call( 'load_temp_staging_raw', params=dict( db=mock.ANY, schema=mock.ANY, stage=stage_name, temp_staging_raw_table=temp_staging_raw_table, file_size=42+42+73 ) )